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

栏目: Java · 发布时间: 6年前

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

前言:

一. 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集群服务器的负载均衡配置。每次访问都会轮换切换服务器,把请求分发给不同的服务器!


以上所述就是小编给大家介绍的《Nginx反向代理实现Tomcat集群服务器的负载均衡》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Nature of Code

The Nature of Code

Daniel Shiffman / The Nature of Code / 2012-12-13 / GBP 19.95

How can we capture the unpredictable evolutionary and emergent properties of nature in software? How can understanding the mathematical principles behind our physical world help us to create digital w......一起来看看 《The Nature of Code》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试