Nginx+Tomcat负载均衡部署

1 案例描述

随着web访问并发数的增加,当并发数达到一定值后,单台tomcat服务器的性能随着并发量的增大而降低,请求的响应时间也随着并发量的增大而增加,从而降低了客户对产品的好感度以及忠诚度。所以集群是大并发下的必然发展。本案例通过比较集群服务器性能,选择Nginx+Tomcat作为集群方案,并介绍了Nginx+Tomcat安装配置过程以及测试分析,最后简单介绍了下步工作计划。

2 方案选择

2.1 Nginx较Apache的优势

Nginx能承受3万并发连接数,胜过Apache 10倍。

Nginx是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru站点开发的,它已经在该站点运行多年。Igor将源代码以类BSD许可证的形式发布。

Nginx国内外使用Nginx作为Web服务器的网站也越来越多,其中国内用户包括新浪博客、新浪播客、网易新闻等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,豆瓣、YUPOO相册、海内SNS、迅雷在线等网站。

2.2Tomcat作为web服务器

Tomcat是高性能稳定的web服务器,公司内部一直将Tomcat作为web服务器,而且Tomcat是Apche基金会下的开源项目,并且有强大活跃的社区支持,所以本案例将Tomcat作为web服务器。

2.3 Nginx+ Tomcat部署方案

所以本案例采用Nginx+Tomcat作为web集群部署方案。其中Nginx为负载均衡服务器,Tomcat为web服务器,部署结构如下图所示。


图1 Nginx+Tomcat部署架构

3 Nginx+Tomcat部署及测试

接下来介绍Nginx+Tomcat负载均衡安装配置过程。

3.1 安装环境

1)      硬件环境:普通PC机

1)      软件环境:

a.      CentOS 6.3(Final)  Kernel Linux 2.6.32-279.el6.i686

b.      pcre-8.31正则表达式库

c.      openssl-1.0.1c.tar.gz  SSL加密

d.  zlib-1.2.7.tar.gz

e.      nginx-upstream-jvm-route-0.1

是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能

f.       nginx-1.3.8负载均衡/反向代理服务器


3.2 安装步骤

1.      软件包下载

2.      加压各个软件包

[root@localhost ~]# tar -zxvf pcre-8.31.tar.gz

[root@localhost ~]# tar -zxvf zlib-1.2.7.tar.gz

[root@localhost ~]# tar -zxvf openssl-1.0.1c.tar.gz

[root@localhost ~]# tar -zxvf nginx-upstream-jvm-route-0.1.tar.gz

[root@localhost ~]# tar –zxvfnginx-1.3.8.tar.gz

3.      安装

[root@localhost ~]# cd nginx-1.3.8

[root@localhost ~]# patch-p0 < ../nginx_upstream_jvm_route/jvm_route.patch

[root@localhost ~]# ./configure --prefix=/usr/local/nginx--with-pcre=../pcre-8.31 --with-http_stub_status_module --with-openssl=../openssl-1.0.1c--with-http_ssl_module --add-module=../nginx_upstream_jvm_route --with-zlib=../zlib-1.2.7

[root@localhost ~]# make

[root@localhost ~]# make install

注意:如果出现以下错误

注意设置系统时间为当前时间,否则因为系统时间小于文件时间而无法编译

4.      修改tomcat的server.xml文件

修改tomcat的server.xml,服务器的tomcat的配置文件中分别找到:
<Engine name="Catalina" defaultHost="localhost" >
分别修改为:
Tomcat01:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
Tomcat02:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">

5.      修改nginx的nginx.conf文件

该文件路径为:/usr/local/nginx/conf/nginx.conf。需要修改的地方如下:

upstream 172.7.9.100{

#这里是您需要修改的地方,修改为您的服务器IP:端口号 srun_id为您在tomcat中所配置的jvmRoute

        server 172.7.4.115:8080 srun_id=jvm1;

             server 172.7.9.201:80 srun_id=jvm2;

}

server {

        listen       81; #根据需要修改监听端口

        server_name  172.7.9.100; #这里也是您所需要修改的地方,多域名用空格隔开

        #charset UTF-8;

        #access_log  logs/host.access.log  main;

        location / {

            root   html;

            index  index.html index.htm login.jsp;

            proxy_pass http://172.7.9.100;

            proxy_set_header X-Real-Ip $remote_addr;

            client_max_body_size 100m; 

        }

…………..

}

修改/usr/local/nginx/conf/nginx.conf配置文件后,用命令/usr/local/nginx/sbin/nginx -t 检查配置文件是否正确;

6.        常用命令

启动nginx的命令   /usr/local/nginx/sbin/nginx

停止nginx的命令  /usr/local/nginx/sbin/nginx-s stop

在不停止Nginx服务的情况下加载Nginx配置  kill -HUP `cat/usr/local/nginx/nginx.pid` 

重启nginx/usr/local/nginx/sbin/nginx-s reload

7.        部署Web应用

把web应用的ROOT.war包放到 /webapps目录下面,启动tomcat服务

8.        至此部署完成,登录172.7.9.100即可访问web平台

注意:

在采用源码安装nginx的过程中可能出现的问题,“No CCompiler… ”或者“C Compiler not work…”等那时因为没有C++的编译环境,需要另行安装。

3.3 测试结果

1个tomcat(windows环境)的并发数为280 ;

2个tomcat(windows环境)的并发数为480;

4个windows tomcat的并发数为800;

4个windows 1个linux机器并发数为1350。

3.4 结果分析

1)        2个tomcat集群的性能优于1个tomcat性能;

2)        集群性能与tomcat数量不是线性关系的,随着tomcat数量的增加性能提升会逐渐减弱,到某个值后会降低的。

3)        另外对比windows与linux环境下的tomcat,linux下的tomcat明显优于windows下的tomcat。

4 总结及工作计划

由测试结果表明,采用上述集群方案,能够明显提升web并发性能。而且linux下的Tomcat性能明显优于windows下的Tomcat。所以建议在集群部署的时候,尽量采用linux环境。另外,Tomcat与Nginx的配置文件中存在很多可配置项,Nginx+Tomcat的调优还能大幅提升并发访问性能。这也是接下来的工作之一。

接下来还计划加入Varnish,作为静态页面缓存服务器,加入F5(或者lvs)作为四层负载均衡(Nginx是七层负载均衡服务器,所以这里不冲突)。如何合理地架设这些服务器将成为下步计划的关键。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值