当前位置 : 主页 > 编程语言 > java >

【Nginx应用】4.Nginx+Tomcat实现Web服务负载均衡(下)

来源:互联网 收集:自由互联 发布时间:2023-03-22
上一篇我们为两台Web服务器搭建了JDK+Tomcat的Web运行环境,并部署了一个测试工程并成功运行,那么这次要进行Nginx服务器的配置,使其能够对两台Web服务器这个小集群来做负载均衡。

上一篇我们为两台Web服务器搭建了JDK+Tomcat的Web运行环境,并部署了一个测试工程并成功运行,那么这次要进行Nginx服务器的配置,使其能够对两台Web服务器这个小集群来做负载均衡。

三台服务器均搭建在VMware虚拟机上,信息如下:

Nginx服务器的IP:192.168.248.129

Web服务器A的IP:192.168.248.131

Web服务器A的IP:192.168.248.132

对于Nginx服务器,我们回到192.168.248.129这台安装了Nginx的机器上,打开之前安装的Nginx的根目录:

【Nginx应用】4.Nginx+Tomcat实现Web服务负载均衡(下)_upstream

可以看到,根目录中有一个conf文件夹,其中放置的是Nginx的配置文件:

【Nginx应用】4.Nginx+Tomcat实现Web服务负载均衡(下)_负载均衡_02

在其中有一个名为“nginx.conf”的配置文件,它是Nginx的核心配置文件。使用“vim”指令查看“nginx.conf”文件,内容如下:

【Nginx应用】4.Nginx+Tomcat实现Web服务负载均衡(下)_upstream_03

在该文件中,配置分为以下几类:

(1)进程数与每个进程的最大连接数

配置如下:

worker_processes 2;events{ worker_connections 1024; }

worker_processes指的是工作进程个数,一般跟服务器cpu核数相等,或者核数的两倍;

events就是对进程事件进行相关配置的,其中的worker_connections指的是单个进程最大连接数,该服务器的最大连接数=连接数*进程数;服务器支持最大并发数=(连接数*进程数) /2 ,因为反向代理是双向的。

(2)Nginx的基本配置

server{ listen 8080; #端口号 server_name 192.168.248.129; #服务名}

server就是对http访问服务的响应配置,其中的listen是监听的http端口,默认为80,这里我们改为8080。而server_name是配置的http响应的服务名,默认为localhost ,这里修改为Nginx的服务器ip地址。

(3)负载均衡列表基本配置

首先是服务器集群的配置信息:

upstream mycluster{ server 192.168.248.131:8080 weight=1; server 192.168.248.132:8080 weight=1;}

这里upstream后面的“mycluster”是集群配置的名称,其中配置的server信息为服务器集群中的每一台机器对应的http服务的ip地址,weight代表该服务在集群中的权重,权重越大,请求被分配给该服务的机会就越大。这里添加的是之前部署了Web工程的两台Web服务器的ip地址和端口。

然后是请求转发的响应策略location,后面的“/”是针对该服务器的所有http请求做出的响应,当然可以自定义响应类型添加筛选,假如我们要对所有的html后缀的请求进行负载均衡时,可以这样写:location ~ .*.html$ {}。

其它参数解释见下方注释。

location /{ #将访问请求转向至服务器集群,mycluster和上面upstream mycluster 对应 proxy_pass http://mycluster; # 真实的客户端IP proxy_set_header X-Real-IP $remote_addr; # 请求头中Host信息 proxy_set_header Host $host; # 代理路由信息,此处取IP有安全隐患 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 真实的用户访问协议 proxy_set_header X-Forwarded-Proto $scheme;}

介绍完重点配置,下面就需要完成本次负载均衡的配置。符合本次负载均衡测试的配置文件的完整配置信息如下:

user nobody;#工作进程个数,一般跟服务器cpu核数相等,或者核数的两倍worker_processes 2;#单个进程最大连接数events{ worker_connections 1024; }http{ keepalive_timeout 65; gzip on; #服务器集群 upstream mycluster{ #集群有几台服务器即可配置几台,weight表示权重 #权重越大被访问到的几率越大 #这里添加的是上面启动好的两台Tomcat服务器 server 192.168.248.131:8080 weight=1; server 192.168.248.132:8080 weight=1; } #nginx基本配置 server{ listen 8080; #端口号 server_name 192.168.248.129; #服务名 location /{ #将访问请求转向至服务器集群,mycluster和上面upstream mycluster 对应 proxy_pass http://mycluster; # 真实的客户端IP proxy_set_header X-Real-IP $remote_addr; # 请求头中Host信息 proxy_set_header Host $host; # 代理路由信息,此处取IP有安全隐患 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 真实的用户访问协议 proxy_set_header X-Forwarded-Proto $scheme; } error_page 500 502 503 504 /50x.html; location = /50x.html { ROOT html; } }}

将conf修改后(如果嫌修改麻烦,直接在windows系统中编写完毕,使用ftp替换该文件即可),重新启动nginx:

【Nginx应用】4.Nginx+Tomcat实现Web服务负载均衡(下)_负载均衡_04

然后在windows系统的浏览器中输入Nginx所在服务器对外的http负载均衡服务路径:

​​ http://192.168.248.129:8080/Test_project/ ​​ 则会发现访问到了我们其中一台Web系统的页面:

如果反复访问多次,即可发现两边的Web服务均可以某种几率访问到:

说明我们为小集群搭建的Nginx负载均衡策略成功了。

总结:

上下两篇分别介绍了Web服务集群的搭建,以及Nginx的反向代理实现Web服务进行负载均衡的实例。

使用Nginx搭建负载均衡十分简单,仅需要配置其核心配置文件“nginx.conf”即可。但是演示的例子仅仅是一个非常简单的入门级负载均衡实例,以后还需要考虑到配置优化、Session共享、高可用等问题。

​​​​

网友评论