拓扑环境


服务器名称

系统版本

预装软件

IP地址

Nginx服务器

CentOS 7

最小安装 Nginx

192.168.22.227

Web服务器A

CentOS 7

最小安装 tomcat+jdk

192.168.22.229

Web服务器B

CentOS 7

最小安装 tomcat+jdk

192.168.22.230


服务器采用CentOS 7 最小安装模式,完全模拟生成环境,一台Nginx服务器,两台Tomcat服务器,实现一个简化的反向代理和负载均衡服务。


原理图




NGINX iphash 会负载到两个服务器 nginx多台服务器负载均衡_权重



编写测试静态页


在229服务器编写 Login.html:




在Tomcat的webapps目录下,新建一个文件夹drp,并将login.html放到drp文件夹里。

完整目录:/usr/local/tomcat8/webapps/drp




同样的在230服务器上也新建文件:login.html,并上传到drp目录下。




编写完成后,启动229,230服务器上的Tomcat,并在windows上测试是否启动成功


分别输入url:



http://192.168.22.229:8080/drp/login.html http://192.168.22.230:8080/drp/login.html 测试是否能够访问。



修改Nginx核心配置文件nginx.conf

下面配置文件中的几个关键点:


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


① nginx进程数,建议设置为和服务器cup核数相等,或者是核数的两倍

② 单个进程最大连接数,该服务器的最大连接数=连接数*进程数; 服务器支持最大并发数=(连接数*进程数) /2 ,因为反向代理是双向的。


(2)Nginx的基本配置




① 监听端口一般都为http端口:80;可以修改为其他,这里修改为8088。

② server_name :默认为服务的名称 ,这里修改为服务器ip地址也可以。


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


① location / {}:负载均衡访问的请求,可以添加筛选,假如我们要对所有的jsp后缀的文件进行负载均衡时,可以这样写:location ~ .*.jsp$ {}

② proxy_pass:请求转向自定义的服务器列表,这里我们将请求都转向标识为http://mycluster 的负载均衡服务器列表;

③ 在负载均衡服务器列表的配置中,Server指令:指定服务器的ip地址,weight是权重,可以根据机器配置定义权重(如果某台服务器的硬件配置十分好,可以处理更多的请求,那么可以为其设置一个比较高的weight;而有一台的服务器的硬件配置比较差,那么可以将前一台的weight配置为weight=2,后一台差的配置为weight=1)。weigth参数表示权值,权值越高被访问到的几率越大;


(四)完整的配置文件示例

最基本的Nginx配置差不多就是上面这些内容,当然仅仅是最基础的配置。如果是拦截多域名就是上面配置多个upstream 下面对应配置多个server  上面的配置我是配置了拦截3个域名  剩下两个我注释掉了!用的话打开就行



在浏览器中进行负载均衡测试

在浏览器中输入 : http://192.168.22.227:8088/drp/login.html






不断刷新浏览器,访问的地址一直在变化,可以看到负载均衡的效果已经实现。



小结

这篇文章通过Nginx反向代理实现了Tomcat服务器集群的负载均衡效果。从这个Demo中,我们可以简单地感受到反向代理为我们所做的事情,并体会到什么是负载均衡。当然这次只是简单的使用了一下Nginx,做了一些很简单的配置,后续会做一些针对负载均衡的优化配置,还有就是Session共享的问题,以及Nginx高可用的问题,这些知识后续博客会介绍到,万丈高楼平地起,一步一步来。