Nginx+Tomcat负载均衡部署

来源:互联网 发布:crf算法 python 编辑:程序博客网 时间:2024/05/21 10:19

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是七层负载均衡服务器,所以这里不冲突)。如何合理地架设这些服务器将成为下步计划的关键。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 家长反应孩子学校受欺负老师怎么办 白色衣服和牛仔裤洗变色了怎么办 生完孩子肚子上的松皮怎么办 xp电脑玩cf进入地图黑屏怎么办 爸妈吵架妈妈走了爸爸哭了该怎么办 总担心旅馆被拍视频传上网怎么办 微博买了猜冠军现在停了怎么办 脸上毛孔大有黑头怎么办小窍门去 进去精神病院出来真的疯了怎么办 房子已过户新业主不交物业费怎么办 村委会欠百姓征地补偿款不给怎么办 因为近亲人人都不看好的婚姻怎么办 碰到工作中特别积极的同事怎么办 丈夫车祸死亡妻子和孩子以后怎么办 丈夫死后妻子改嫁儿子不同意怎么办 满了60岁社保没满15年怎么办 捷豹的dpf灯亮了怎么办 朋友如新直销产品是你该怎么办 传福音接受了却被家人拦阻该怎么办 奶奶出钱由孙子抓奖中奖后怎么办 我不想学车了驾校不同意退学怎么办 2017年大学挂科面临退学怎么办 微信重新登录后东西全没了怎么办 宝宝吃鸡蛋过敏全身起红疹怎么办 180在产蛋鸡因断鸡减产怎么办 住友39熔接机熔接损耗大怎么办 支付宝实名认证刷脸失败怎么办 支付宝注册刷脸不是本人怎么办 小学科学只考88分中学怎么办 收银机关机时才上传数据是怎么办 刚做的系统玩cf卡屏怎么办 办健康证的资料掉了怎么办 刚刚办得的健康证掉了怎么办 房子都过户了银行贷不了款怎么办 我要办大病迁出应该怎么办啊? 遗产继承后户口没地迁出怎么办 安徽蒙城怎么办去韩国的签证的 夜间有人私自收停车费应该怎么办 上次摸不到环尾丝这次摸到了怎么办 法院判决书下来后对方不给钱怎么办 法院判决书下来了钱还保全么怎么办