Nginx(Tengine)实现Tomcat热部署与负载均衡

业务背景

主要需求是系统更新期间实现热部署,提供不间断服务。其次是为多个应用服务器(Tomcat)实现负载均衡的效果。另外还需要开启https访问,同事支持http与https同时访问,并根据不同的访问请求转发到Tomcat不同的端口。

软硬件需求

Tengine(淘宝开源Nginx服务器) * 1,Tomcat7.53 * 2,服务器IP:192.168.64.166

实现细节

1.编译Nginx

首先下载Nginx服务器,地址:http://tengine.taobao.org
如下编译:
本次应用中需要用到HTTPS服务,所以在编译时需要特殊加入 –with-http_ssl_module。

如果在执行第一行 ./configure –with-http_ssl_module出现缺少pcre的错误,可以通过如下命令安装此组件。内网服务器没有网络连接,无法通过yum在线安装,可以通过寻找相关包进行安装。

在顺利执行安装完成后,进入下一步。配置Tomcat服务器。

2.Tomcat服务器配置

本次共部署2台Tomcat服务器,且均在同一台服务器上所以需要对其中一台Tomcat服务器做端口更改处理,否则同一台服务器不能启动2台Tomcat服务器。当现实场景中不在同一服务器,且每台服务器只有一台Tomcat服务器时,可以不考虑端口更改。
第二台Tomcat服务器的配置文件端口更改如下:对所有默认端口+1,修改文件为Tomcat文件中conf文件夹内的server.xml。

 3.Nginx配置

 4.热部署步骤

1.更新应用时,首先停用其中一台Tomcat1服务器,让另一台提供服务。
2.更新首先停用的Tomcat1服务器下的应用,然后启动。
3.启动Tomat1完成后,再停止另外一台Tomcat2服务器,更新其应用。
4.再启动已停止的Tomcat2。

其实以前就写过类似文章:
《Nginx的反向代理负载均衡》 http://chenzhiguo.cn/archives/nginx_load_balancing