您的位置:首页 > 运维架构 > Tomcat

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

2017-10-09 15:48 477 查看
上一篇我们为两台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的根目录:



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



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



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

(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:



然后在windows系统的浏览器中输入Nginx所在服务器对外的http负载均衡服务路径:
http://192.168.248.129:8080/Test_project/
则会发现访问到了我们其中一台Web系统的页面:



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



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

总结:

上下两篇分别介绍了Web服务集群的搭建,以及Nginx的反向代理实现Web服务进行负载均衡的实例。
使用Nginx搭建负载均衡十分简单,仅需要配置其核心配置文件“nginx.conf”即可。但是演示的例子仅仅是一个非常简单的入门级负载均衡实例,以后还需要考虑到配置优化、Session共享、高可用等问题。

转载请注明出处:http://blog.csdn.net/acmman/article/details/78183348
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: