上一篇我们为两台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服务负载均衡(下)_centos


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


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


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


【Nginx应用】4.Nginx+Tomcat实现Web服务负载均衡(下)_centos_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服务负载均衡(下)_upstream_04


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


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



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



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



总结:


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


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

​​