一. Nginx简介
Nginx 是一个开源的高性能的HTTP和反向代理服务器,用于实现资源缓存、web server负载均衡等功能,其特点是占有内存少,并发能力强。使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。是目前最流行的反向代理服务器之一。
二. Tomcat简介
Tomcat是一个免费的开源的纯JAVA开发的Web 应用服务器,可以充当轻量级JAVAEE项目的应用服务器,它还是一个运行Servlet和JSP的web容器。
三. 为什么要配置服务器集群
服务器集群:是指将很多服务器集中起来一起进行同一种服务,在客户端看来就象是只有一个服务器。 集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
集群目的:一方面,对于对于日访问量或者并发访问量十分巨大的网站来说,如果只部署一台服务性能十分低下,极有可能对暴风雨般的请求(2016年双十一天猫淘宝几十万的峰值并发请求)招架不住而随时被挂掉,对企业来造成重大损失。有必要多台服务器来分担这种并发请求的压力。另一方面,群集化操作可以减少单点故障数量,就算一台服务器出现了故障,其他服务器正常运行,保证企业的日常运作不受影响,这是非常有必要的事情。并且实现了群集化资源的高可用性。
图片来自包图网
四. 负载均衡
对于集群来说,负载均衡意味着当反向代理服务Nginx接受到用户发起的请求后,会把请求按照权重均分到不同的集群服务器上,尽可能让每个服武器均摊请求,减少服务器的压力,提高性能,防止由于高并发导致的服务器宕机或者瘫痪等。
应用架构:
准备工作:
说明:(1)测试环境为windows
(2)由于tomcat需要jdk,因此需要安装jdk并配置环境变量
(3)下载Nginx并解压(Nginx下载地址:http://nginx.org)
(4)下载Tomcat (Tomcat下载地址: http://tomcat.apache.org/download-70.cgi)
(5)准备使用两个tomcat服务器,一个Nginx服务器
(6)同一个测试web项目(只包含一个jsp页面)打成war包,分别放在tomcat1和tomcat2的webapps目录下
主要内容
一. 搭建Nginx服务器
将下载好的Nginx服务器压缩包放到任意盘(比如D盘)进行解压,解压后目录结构为:图(1)
成功。
此时:在浏览器中输入本机环回地址测试:http://127.0.0.1
若出现图(2),则说明nginx启动成功,服务器正常运行。
注意:由于nginx的默认端口为80,因此要确保本机没有其他应用程序占用该端口。
至此我们可以进行下一步工作
一. 搭建Tomcat服务器
在搭建Tomcat服务器前,首先需要在安装jdk,因为Tomcat是java写的,而java运行需要jdk。该步骤不是本文讨论的重点,略去。
安装好jdk后,需要将Tomcat服务器压缩文件解压两份,分别取名为Tomcat1和Tomcat2。
如图(3)tomcat集群服务器所示:
在真实环境中,该服务器可以安装到不同的主机中。
其中每个服务器目录结构为:
图(4)
在图(4)的Conf文件夹下面的配置文件server.xml需要将两个tomcat服务的端口改为本机唯一。(若是不同主机则不用修改,默认端口为8080)
将tomcat1的server.xml中的服务端口,连接器端口不动(默认)
将tomcat2的server.xml中的服务端口改为8006,连接器端口改为依次8090,8010
修改server.xml的文件位置为第22行,第70行,第91行:修改后的效果图(5)为:
以上步骤完成即可进行下一步
一. 准备测试项目
准备同一个测试web项目,该项目只有一个index.jsp文件。只是在该文件中写一段分别代表两个不同服务器的文字,以示区别:
在准备放入tomcat1的项目的index.jsp中写入:“这是四川展谊科技,我部署在tomcat1中!”
在准备放入tomcat2的项目的index.jsp中写入:“这是四川展谊科技,我部署在tomcat2中!”
每个项目的目录内部结构为:图(6)所示:
紧接着把项目打成war包。然后把项目分别复制到两个tomcat对应的wabapps文件夹(见图4)下面。
然后分别在两个tomcat图(4)中的bin文件夹找到startup.bat批处理文件,双击启动服务器。
接下来主要工作来了
一. Nginx配置负载均衡
在图(1)的Nginx的conf文件夹下面找到nginx.conf文件,打开并在该文件的htpp指令模块中添加负载均衡指令(具体添加位置见下图(7)的红色标注区域34行和46行)
ont-size:9.0000pt;mso-font-kerning:1.0000pt;" >每个项目的目录内部结构为:图(6)所示:
在红色区域添第34行和第46行添加如下命令:
第34行红色区添加命令如下:
upstream lero{ #其中lero命名可以自定义,但要满足基本的命名规则
server 127.0.0.1:8080; #tomcat1服务器的地址
server 127.0.0.1:8090; #tomcat2服务器的地址
}
第46行红色区添加命令如下:
proxy_pass http://lero; #配置反向代理指向位置
完整的配置见下图(8)
一. 启动服务器
修改配置文件后,需要重新启动nginx服务
首先在dos命令窗口定位到nginx服务器安装目录(比如:f:nginx-1.11.13)
然后输入重启命令为:nginx -s reload( 若这种方法无效,建议强行结束进程 )
如下图(9):
重启tomcat1,tomcat2服务器(点击shutdown.bat批处理文件后,重新点击startup.bat批处理文件即可实现重启),然后在浏览器地址栏输入127.0.0.1/www.sczhanyi.com/
访问第一次效果图(10):
访问第二次效果图(11)
访问第三次又会把请求发给tomcat1,访问第四次又会把请求发给tomcat2...
到此,已实现了nginx反向代理实现tomcat集群服务器的负载均衡配置。每次访问都会轮换切换服务器,把请求分发给不同的服务器!