概念介绍

1). 正向代理

正向代理服务器是一个位于客户端和原始服务器(origin server)之间服务器,为了从原始服务器取得内容客户端向代理发送一个请求指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回客户端

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。

正向代理一般是客户设置代理服务通过代理服务转发请求,最终访问目标服务器。

2). 反向代理

反向代理服务器位于用户目标服务之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务负责将请求转发目标服务器。用户不需要知道目标服务器的地址,也无须在用户端作任何设定,对于用户来说,访问反向代理服务器是完全无感知的。

那么在本小节,我们就是使用nginx来作为反向代理服务器使用。 在nginx中,我们可以nginx.conf配置反向代理:

server {
    listen 82;
    server_name localhost;
    
    location / {
        proxy_pass http://192.168.200.201:8080;     #反向代理配置,将请求转发指定服务
    }
}

上述配置的含义为:

我们访问nginx的82端口时:根据反向代理配置,会将请求转发到 http://192.168.200.201:8080 对应的服务上。

6.3.2 测试

需求: 在192.168.200.201这台服务器中部署java应用运行端口为8080,并提供了一个访问链接 /hello。现在我们需要访问nginx的82端口时,通过nginx将请求转发到192.168.200.201:8080的服务。

1). 在192.168.200.201部署服务并启动

安装JDk
配置环境变量:JAVA_HOME

资料中提供的 helloworld-1.0-SNAPSHOT.jar 上传服务器端,并通过指令 javajar helloworld-1.0-SNAPSHOT.jar 运行服务。

2). 在192.168.200.200中的nginx.conf中配置反向代理

进入nginx安装目录,并编辑配置文件nginx.conf:

cd /usr/local/nginx/conf/
vim nginx.conf

http块中,再添加一个server虚拟主机的配置,监听82端口,并配置反向代理proxy_pass:

server {
    listen 82;
    server_name localhost;
    location / {
        proxy_pass http://192.168.200.201:8080;     #反向代理配置,将请求转发到指定服务
    }
}

3). 检查配置文件,并重新加载

nginx -t

nginx -s reload

4). 访问

==关闭防火墙==

systemctl stop firewalld

6.4 负载均衡

6.4.1 概念介绍

早期的网站流量业务功能比较简单,单台服务器就可以满足基本需求,但是随着互联网发展业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现

应用集群:将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理返回响应数据

负载均衡器将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理

有两种实现方式:
1、通过软件的形式来选择使用一个服务器(Nginx)
2、硬件可以帮助实现负载均衡(F5)
​
2019年,F5 networks收购Nginx

此处的负载均衡器我们将会使用Nginx实现,而Nginx的负载均衡基于反向代理的,只不过此时所代理的服务器不是一台,而是多台。

6.4.2 测试

1). 将资料中提供的两个jar包,上传到192.168.200.201服务器上

我们在测试时,并没有那么多服务器,我们可以一台服务器中启动多个服务,运行不同端口号上进行测试。

2). 运行上传上来的两个jar包,运行端口分别是 8080 , 8081

由于我们执行 javajar 指令占用前台窗口,所以我们可以开启两个窗口进行测试。

验证

http://192.168.200.201:8080/hello

http://192.168.200.201:8081/hello

3). 在nginx中配置负载均衡

打开nginx配置文件nginx.conf并增加如下配置:

#upstream指令可以定义一组服务器
#负载均衡
upstream targetserver{  
    server 192.168.200.201:8080;
    server 192.168.200.201:8081;
}
​
server {
    listen       8080;
    server_name  localhost;
    location / {
        #反向代理配置
        proxy_pass http://targetserver; 
    }
}

具体的配置位置如下:

4). 重新加载nginx配置文件,访问

nginx -s reload

测试时,我们直接访问nginx的8080端口(http://192.168.200.200:8080), 此时nginx会根据负载均衡策略,将请求转发到后面的两台服务器。

上述的测试过程中,我们看到请求均衡的转发到了8080和8081,因为模式的负载均衡策略轮询

注意: 上述所有涉及到的端口号,都需要在对应的服务器的防火墙开放,或者彻底关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
6.4.3 负载均衡策略

处理上述默认轮询策略以外,在Nginx中还提供了其他的负载均衡策略如下

名称 说明 特点
轮询round_robin 默认方式
weight 权重方式 根据权重分发请求,权重大的分配到请求的概率
ip_hash 依据ip分配方式 根据客户端请求的IP地址计算hash值, 根据hash值来分发请求, 同一个IP发起的请求, 会发转发到同一个服务器上
least_conn 依据最少连接方式 哪个服务器当前处理连接少, 请求优先转发到这台服务器
url_hash 依据url分配方式 根据客户端请求urlhash值,来分发请求, 同一个url请求, 会发转发到同一个服务器上
fair 依据响应时间方式 优先把请求分发给处理请求时间短的服务器

权重的配置:

#upstream指令可以定义一组服务器
upstream targetserver{  
    server 192.168.200.201:8080 weight=10;
    server 192.168.200.201:8081 weight=5;
}

上述配置的weight权重是相对的,在上述的配置中,效果就是,在大数据量的请求下,最终8080接收的请求数是8081的两倍

原文地址:https://blog.csdn.net/qq_49511498/article/details/134763068

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_36526.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注