Nginx反向代理实现Tomcat集群服务器的负载均衡

前言:

一. Nginx简介

Nginx 是一个开源的高性能的HTTP和反向代理服务器,用于实现资源缓存web server负载均衡等功能,其特点是占有内存少,并发能力强。使用nginx网站用户有:百度京东、新浪、网易、腾讯、淘宝等。是目前最流行的反向代理服务器之一。

二. Tomcat简介

Tomcat是一个免费的开源的纯JAVA开发的Web 应用服务器,可以充当轻量级JAVAEE项目的应用服务器,它还是一个运行Servlet和JSP的web容器。

三. 为什么要配置服务器集群

服务器集群:是指将很多服务器集中起来一起进行同一种服务,在客户端看来就象是只有一个服务器。 集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。

集群目的:一方面,对于对于日访问量或者并发访问量十分巨大的网站来说,如果只部署一台服务性能十分低下,极有可能对暴风雨般的请求(2016年双十一天猫淘宝几十万的峰值并发请求)招架不住而随时被挂掉,对企业来造成重大损失。有必要多台服务器来分担这种并发请求的压力。另一方面,群集化操作可以减少单点故障数量,就算一台服务器出现了故障,其他服务器正常运行,保证企业的日常运作不受影响,这是非常有必要的事情。并且实现了群集化资源的高可用性。

Nginx反向代理实现Tomcat集群服务器的负载均衡

图片来自包图网

四. 负载均衡

对于集群来说,负载均衡意味着当反向代理服务Nginx接受到用户发起的请求后,会把请求按照权重均分到不同的集群服务器上,尽可能让每个服武器均摊请求,减少服务器的压力,提高性能,防止由于高并发导致的服务器宕机或者瘫痪等。

应用架构

Nginx反向代理实现Tomcat集群服务器的负载均衡

准备工作:

说明:(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反向代理实现Tomcat集群服务器的负载均衡

主要内容

一. 搭建Nginx服务器

将下载好的Nginx服务器压缩包放到任意盘(比如D盘)进行解压,解压后目录结构为:图(1)

Nginx反向代理实现Tomcat集群服务器的负载均衡

成功。

此时:在浏览器中输入本机环回地址测试:http://127.0.0.1

若出现图(2),则说明nginx启动成功,服务器正常运行。

Nginx反向代理实现Tomcat集群服务器的负载均衡

注意:由于nginx的默认端口为80,因此要确保本机没有其他应用程序占用该端口。

至此我们可以进行下一步工作

一. 搭建Tomcat服务器

在搭建Tomcat服务器前,首先需要在安装jdk,因为Tomcat是java写的,而java运行需要jdk。该步骤不是本文讨论的重点,略去。

安装好jdk后,需要将Tomcat服务器压缩文件解压两份,分别取名为Tomcat1和Tomcat2。

如图(3)tomcat集群服务器所示:

Nginx反向代理实现Tomcat集群服务器的负载均衡

在真实环境中,该服务器可以安装到不同的主机中。

其中每个服务器目录结构为:

图(4)

Nginx反向代理实现Tomcat集群服务器的负载均衡

在图(4)的Conf文件夹下面的配置文件server.xml需要将两个tomcat服务的端口改为本机唯一。(若是不同主机则不用修改,默认端口为8080)

将tomcat1的server.xml中的服务端口,连接器端口不动(默认)

将tomcat2的server.xml中的服务端口改为8006,连接器端口改为依次8090,8010

修改server.xml的文件位置为第22行,第70行,第91行:修改后的效果图(5)为:

Nginx反向代理实现Tomcat集群服务器的负载均衡

Nginx反向代理实现Tomcat集群服务器的负载均衡

以上步骤完成即可进行下一步

一. 准备测试项目

准备同一个测试web项目,该项目只有一个index.jsp文件。只是在该文件中写一段分别代表两个不同服务器的文字,以示区别:

在准备放入tomcat1的项目的index.jsp中写入:“这是四川展谊科技,我部署在tomcat1中!”

在准备放入tomcat2的项目的index.jsp中写入:“这是四川展谊科技,我部署在tomcat2中!”

每个项目的目录内部结构为:图(6)所示:

Nginx反向代理实现Tomcat集群服务器的负载均衡

紧接着把项目打成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)所示:

Nginx反向代理实现Tomcat集群服务器的负载均衡

在红色区域添第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反向代理实现Tomcat集群服务器的负载均衡

一. 启动服务器

修改配置文件后,需要重新启动nginx服务

首先在dos命令窗口定位到nginx服务器安装目录(比如:f:nginx-1.11.13)

然后输入重启命令为:nginx -s reload( 若这种方法无效,建议强行结束进程

如下图(9):

Nginx反向代理实现Tomcat集群服务器的负载均衡

重启tomcat1,tomcat2服务器(点击shutdown.bat批处理文件后,重新点击startup.bat批处理文件即可实现重启),然后在浏览器地址栏输入127.0.0.1/www.sczhanyi.com/

访问第一次效果图(10):

Nginx反向代理实现Tomcat集群服务器的负载均衡

访问第二次效果图(11)

Nginx反向代理实现Tomcat集群服务器的负载均衡

访问第三次又会把请求发给tomcat1,访问第四次又会把请求发给tomcat2…

到此,已实现了nginx反向代理实现tomcat集群服务器的负载均衡配置。每次访问都会轮换切换服务器,把请求分发给不同的服务器!

原文 

http://server.51cto.com/sOS-584261.htm

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Nginx反向代理实现Tomcat集群服务器的负载均衡

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址