分享

Nginx+Tomcat+Session 高性能群集搭建

 战争213 2015-02-03

随着IT行业的发展,linux服务器在企业中应用广泛,人们对linux上的应用服务要求也越来越高,早先的apache服务器、apache有优点也 有不足,apache渐渐不能满足人们的要求,目前nginx被大量采用做高性能web服务器,无论是个人网站还是大型门户网站都在使用nginx作为 web搭建web服务器的首选。

接下来我们亲自来搭建一个属于自己的高性能web服务器,并且带故障自动转移的群集、和负载均衡服务器。



一、Nginx+Tomcat+Session 高性能群集服务搭建


  1. 本文采用目前主流版本搭建,搭建环境及版本如下列表:  
  2. 系统版本:Centos 5.3 64位系统  
  3. Nginx版本为:nginx-1.0.5.tar.gz  
  4. Jdk版本为:1.6.0_18_64  
  5. Tomcat版本为:Apache Tomcat/6.0.30  
  6. 其他相似版本也可以!安装服务所需的包如下下载路径:本网站集成部分下载:  
  7.  
  8. jdk请到以下网站下载:请选择自己系统版本的jdk。  
  9.  
  10. https://cds./is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter  
  11.  
  12. 其他版本请到官网下载 

二、首先安装Nginx:安装nginx之前需要安装pcre包和zlib以支持重写,正则以及网页压缩等等】

把所需的包下载到/usr/src下【根据自己的习惯,路径可以改变】

1、首先安装pcre:


  1. cd /usr/src &&tar xzf pcre-8.01.tar.gz &&cd pcre-8.01 && ./configure --prefix=/usr/local/pcre &&make &&make install

2、然后再安装nginx :【给nginx安装jvmroute模块】


  1. cd /usr/src &&useradd www &&wget http://friendly.sinaapp.com//LinuxSoft/nginx-upstream-jvm-route-0.1.tar.gz && tar xzf nginx-upstream-jvm-route-0.1.tar.gz && tar xzf nginx-1.0.5.tar.gz &&cd nginx-1.0.5&& patch -p0 <../nginx_upstream_jvm_route/jvm_route.patch && ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/src/pcre-8.01 --add-module=../nginx_upstream_jvm_route/  --user=www --group=www &&make &&make install  
  2. 【nginx注意* –with-pcre=/usr/src/pcre-8.01指向的是源码包解压的路径,而不是安装的路径,否则会报  
  3.  
  4. make[1]: *** [/usr/local/pcre/Makefile] Error 127 错误

Nginx 安装完毕!我们先不着急nginx配置文件的配置,先来修改tomcat配置文件:


三、Tomcat安装配置:


1、将所需的包下载至/usr/src 目录;首先安装jdk:


  1. chmod o+x jdk* && ./jdk* ;程序包会提示按回车键,我们根据提示安装即可,解压完毕,会在当前目录生成 jdk1.6.0_18 这个文件夹,  
  2. mkdir -p /usr/java && mv jdk1.6.0_18 /usr/java/下  
  3.  
  4. vi /etc/profile 最后面加入以下语句:  
  5. export JAVA_HOME=/usr/java/jdk1.6.0_18  
  6. export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib  
  7. export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin  
  8. source /etc/profile //使环境变量马上生效  
  9. java –version //查看java版本,显示版本是1.6.0_18,并且是64位的证明安装成功!  
  10. 【 Java HotSpot(TM) 64-Bit Server VM (build 16.0-b10, mixed mode) 】  
  11.  
  12. cd /usr/src && tar xzf apache-tomcat-6.0.30.tar.gz  
  13. 解压完成执行:  
  14. mv apache-tomcat-6.0.30 /usr/local/tomcat_1 && cp /usr/local/tomcat_1 /usr/local/tomcat_2 -r  
  15. 【移动到/usr/local下并重命名为tomcat_1文件夹,并cp一个tomcat_2】  
  16. 部署两个Tomcat群集做负载均衡用

2、设置tomcat的java变量

 


  1. cd /usr/local/tomcat_1/bin/ && vi setenv.sh 创建一个setenv.sh脚本文件,添加如下语句即可  
  2. JAVA_HOME=/usr/java/jdk1.6.0_18  
  3. JAVA_JRE=/usr/java/jdk1.6.0_18/jre  
  4. 并且拷贝setenv.sh文件到tomcat_2/bin/下 :  
  5.  
  6. cp -p /usr/local/tomcat_1/bin/setenv.sh /usr/local/tomcat_2/bin 下即可!  
  7. 保存退出  
  8. 检查两个tomcat下bin目录的*.sh 文件是否有可执行权限,如果没有则进入到相应的目录执行 chmod o+x *.sh 即可!  
  9.  
  10. 给两个tomcat分别创建不同的目录如下:mkdir -p /usr/webapps/{www_1,www_2}

3、设置Tomcat的 server.xml文件:

【以下是我的tomcat配置文件具体内容,本想已附件的形式发的,本博客目前还不支持附件功能,重要修改的地方供大家参考,如果把所有配置都粘贴在这里,显示有问题,所有用了两个web链接!这样一来部分解释就产生了影响。不明白的欢迎留言】

这个是完整的server.xml文件下载地址:

http://chinaapp.sinaapp.com/download/server.xml.tgz


  1. 两个Tomcat配置的cluster里面的端口分别为4000、4001 ,必须设置成不同的端口;而且得分别设置两个jvmroute名称,一会在nginx中会用到!  
  2.  
  3.  配置Tomcat session会话复制:  
  4. 分别在两个tomcat的conf下web.xml文件里面加入如下一行即可:   
  5.  
  6.  <distributable/> 
  7.  这个是加入tomcat的session复制的,做tomcat集群必须需要这一步,否则用户的session就无法正常使用 <distributable/>直接加在</web-app>之前就可以了   
  8.  
  9. 配置完毕后,我们测试一下广播  
  10. java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal1  
  11. java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal2  
  12.  
  13. 如果不报错则能正常广播  
  14. tomcat-replication.jar 下载:http://cvs./~fhanik/tomcat-replication.jar  
  15. 如果是两台机器的话,可以用tcpdump 抓包看看! 

Tomcat配置完毕,启动两个tomcat,先启动tomcat1,tomcat_1启动日志如下:


  1. 信息: Initializing Coyote HTTP/1.1 on http-8080  
  2. 2011-3-18 19:56:21 org.apache.catalina.startup.Catalina load  
  3. 信息: Initialization processed in 1088 ms  
  4. 2011-3-18 19:56:21 org.apache.catalina.core.StandardService start  
  5. 信息: Starting service Catalina  
  6. 2011-3-18 19:56:21 org.apache.catalina.core.StandardEngine start  
  7. 信息: Starting Servlet Engine: Apache Tomcat/6.0.18  
  8. 2011-3-18 19:56:21 org.apache.catalina.ha.tcp.SimpleTcpCluster start  
  9. 信息: Cluster is about to start  
  10. 2011-3-18 19:56:21 org.apache.catalina.tribes.transport.ReceiverBase bind  
  11. 信息: Receiver Server Socket bound to:/192.168.2.79:4000  
  12. 2011-3-18 19:56:21 org.apache.catalina.tribes.membership.McastServiceImpl setupSocket  
  13. 信息: Setting cluster mcast soTimeout to 500  
  14. 2011-3-18 19:56:21 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
  15. 信息: Sleeping for 1000 milliseconds to establish cluster membership, start level:4  
  16. 2011-3-18 19:56:22 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
  17. 信息: Done sleeping, membership established, start level:4  
  18. 2011-3-18 19:56:22 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
  19. 信息: Sleeping for 1000 milliseconds to establish cluster membership, start level:8  
  20. 2011-3-18 19:56:23 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
  21. 信息: Done sleeping, membership established, start level:8  
  22. 2011-3-18 19:56:23 org.apache.catalina.ha.deploy.FarmWarDeployer start  
  23. 严重: FarmWarDeployer can only work as host cluster subelement!  
  24. 2011-3-18 19:56:23 org.apache.catalina.ha.session.DeltaManager start  
  25. 信息: Register manager to cluster element Engine with name Catalina  
  26. 2011-3-18 19:56:23 org.apache.catalina.ha.session.DeltaManager start  
  27. 信息: Starting clustering manager at  
  28. 2011-3-18 19:56:23 org.apache.catalina.ha.session.DeltaManager getAllClusterSessions  
  29. 信息: Manager [localhost#]: skipping state transfer. No members active in cluster group.  
  30. 2011-3-18 19:56:23 org.apache.catalina.ha.session.JvmRouteBinderValve start  
  31. 信息: JvmRouteBinderValve started  
  32. 2011-3-18 19:56:23 org.apache.coyote.http11.Http11Protocol start  
  33. 信息: Starting Coyote HTTP/1.1 on http-8080  
  34. 2011-3-18 19:56:24 org.apache.jk.common.ChannelSocket init  
  35. 信息: JK: ajp13 listening on /0.0.0.0:8411  
  36. 2011-3-18 19:56:24 org.apache.jk.server.JkMain start  
  37. 信息: Jk running ID=0 time=0/42 config=null 
  38. 2011-3-18 19:56:24 org.apache.catalina.startup.Catalina start  
  39. 信息: Server startup in 2676 ms 

Tomcat_2的日志如下:


  1. 000,{-64, -88, 2, 79},4000, alive=86901,id={78 42 25 -19 -102 3 64 10 -76 93 69 -43 45 76 95 -112 }, payload={}, command={}, domain={}, ]. This operation will timeout if no session state has been received within 60 seconds.  
  2. 2011-3-18 19:57:48 org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor report  
  3. 信息: ThroughputInterceptor Report[  
  4. Tx Msg:1 messages  
  5. Sent:0.00 MB (total)  
  6. Sent:0.00 MB (application)  
  7. Time:0.01 seconds  
  8. Tx Speed:0.04 MB/sec (total)  
  9. TxSpeed:0.04 MB/sec (application)  
  10. Error Msg:0  
  11. Rx Msg:1 messages  
  12. Rx Speed:0.00 MB/sec (since 1st msg)  
  13. Received:0.00 MB]  
  14.  
  15. 2011-3-18 19:57:48 org.apache.catalina.ha.session.DeltaManager waitForSendAllSessions  
  16. 信息: Manager [localhost#]; session state send at 11-3-18 下午7:57 received in 125 ms.  
  17. 2011-3-18 19:57:48 org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor report  
  18. 信息: ThroughputInterceptor Report[  
  19. Tx Msg:2 messages  
  20. Sent:0.00 MB (total)  
  21. Sent:0.00 MB (application)  
  22. Time:0.05 seconds  
  23. Tx Speed:0.02 MB/sec (total)  
  24. TxSpeed:0.02 MB/sec (application)  
  25. Error Msg:0  
  26. Rx Msg:2 messages  
  27. Rx Speed:0.00 MB/sec (since 1st msg)  
  28. Received:0.00 MB]  
  29.  
  30. 2011-3-18 19:57:49 org.apache.catalina.ha.session.JvmRouteBinderValve start  
  31. 信息: JvmRouteBinderValve started  
  32. 2011-3-18 19:57:49 org.apache.coyote.http11.Http11Protocol start  
  33. 信息: Starting Coyote HTTP/1.1 on http-8081  
  34. 2011-3-18 19:57:49 org.apache.jk.common.ChannelSocket init  
  35. 信息: JK: ajp13 listening on /0.0.0.0:8412  
  36. 2011-3-18 19:57:49 org.apache.jk.server.JkMain start  
  37. 信息: Jk running ID=0 time=0/34 config=null 
  38. 2011-3-18 19:57:49 org.apache.catalina.startup.Catalina start  
  39. 信息: Server startup in 2962 ms 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多