设为首页 收藏本站
查看: 727|回复: 0

[经验分享] 第四十四课 tomcat负载均衡群集、tomcat session群集

[复制链接]

尚未签到

发表于 2018-12-4 09:03:09 | 显示全部楼层 |阅读模式
nginx +tomcat 负载均衡集群的实现
tomcat  session server集群
tomcat session  cluster及jvm参数调整
  一、nginx+tomcat 实现负载均衡群集
  wget -c http://nginx.org/download/nginx-1.12.0.tar.gz
  tar xf nginx-1.12.0.tar.gz -C /usr/local/
  cd /usr/local/
  mv nginx-1.12.0 nginx
  useradd www
  yum install openssl gcc gcc-c++ openssl-devel pcre pcre-devel -y
  ./configure --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx
  make && make install
  /usr/local/nginx/sbin/nginx -t
  /usr/local/nginx/sbin/nginx
  vi /usr/local/nginx/conf/nginx.conf
  编辑配置文件,实现nginx+tomcat负载均衡如下
  upstream tomcat{
  server 172.16.100.7:8080;
  server 172.16.100.8:8080;
  }
  server {
  listen       80;
  server_name  localhost;
  location / {
  proxy_pass http://tomcat;
  #root   html;
  #index  index.html index.htm;
  }
  }
  二、tomcat session server (基于memcache来实现tomcat session保持)
  环境描述:
  tomcat1:172.16.100.7(tomcatA.magedu.com),
  tomcat2:172.16.100.8(tomcatB.magedu.com)
  memcached1:172.16.100.9
  memcached2:  172.16.100.10
  nginx负载均衡节点:172.16.100.6
  下载jar文件
  下载地址 :memcached-session-manager项目地址,http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/
  jar文件至各tomcat节点的tomcat安装目录下的lib目录中,其中的${version}要换成你所需要的版本号,tc${6,7,8}要换成与tomcat版本相同的版本号。
  memcached-session-manager-${version}.jar
  memcached-session-manager-tc${6,7,8}-${version}.jar
  spymemcached-${version}.jar
  msm-javolution-serializer-${version}.jar
  javolution-${version}.jar
  分别在两个tomcat上的某host上定义一个用于测试的context容器,并在其中创建一个会话管理器,如下所示:
  
  
  
  说明:path 定义浏览器访问路径,docBase 定义应用程目录,nodes 为memcached 服务器地址,failoverNodes 定义备份session server,如果上文主为n2,当n2失败时,启动n1,
  分别为两个context提供测试页面:
  tomcatA:
  # mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
  # vim /usr/local/tomcat/webapps/test/index.jsp
  添加如下内容:
  
  
  TomcatA
  
  TomcatA.magedu.com
  
  
  Session ID
  
  
  
  
  Created on
  
  
  
  
  
  tomcatB:

  # mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
  # vim /usr/local/tomcat/webapps/test/index.jsp
  添加如下内容:
  
  
  TomcatB
  
  TomcatB.magedu.com
  
  
  Session ID
  
  
  
  
  Created on
  
  
  
  
  
  在172.16.100.6上配置反向代理的负载均衡内容,类似如下所示:
upstream tomcat{
        server 172.16.100.7:8080;
        server 172.16.100.8:8080;
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass http://tomcat;
            #root   html;
            #index  index.html index.htm;
        }
    }
  测试结果,在浏览器中访问http://172.16.100.6/test,结果如下所示,其session ID在负载均衡环境中保持不变。
  TomcatA.magedu.com
  Session ID4DD0340CE6294FF2BBE802CD4CD039EC-n2
  Created on1399890838103
  TomcatB.magedu.com
  Session ID4DD0340CE6294FF2BBE802CD4CD039EC-n2
  Created on1399890838103
  三、tomcat session cluster (Tomcat基于内存复制的集群来实现session保持)
  会话管理器:
  标准会话管理器
  持久会话管理器

  群集会话管理器:多播方式传递自己的心跳信息,如 tomcatA把自己的session信息以多播的方式发送给其他tomcat主机,从而实现所有tomcat主机的会话信息完全一致;这样tomcatA、B、C节点同步会话信息时会占用大量带宽资源,不适应节点多的架构。

  修改server.xml文件,定义在Engine容器中定义如下代码:
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

  以上内容定义在Engine容器中,则表示对所有主机均启动用集群功能。如果定义在某Host中,则表示仅对此主机启用集群功能。此外,需要注意的是,Receiver中的address="auto"一项的值最好改为当前主机集群服务所对应的网络接口的IP地址。
  如果tomcat启动报错中提示,找不到广播地址等信息,添加如下命令:
  route add -net 228.0.0.4 netmask 255.255.255.255 dev eth0
  修改web.xml文件,在webapp中(倒是第二行)添加  ,如果tomcat/webapps/test/WEB-INF/中没有web.xml ,需要从tomcat目录拷贝一份过去。   

  总结:构建DeltaManager集群步骤:
  1、在各节点的server.xml的engine或host容器添加如上内容;注意修改MemberShip组件中的多播地址address="228.0.0.4",建议修改Receiver中的address为本机能够传递心跳信息的地址;
  2、在各节点为使用组播地址添加组播路由,格式: route add -net $MCAST_ADDRESS netmask 255.255.255.255 dev eth0
  3、在相应应用程序的web.xml中添加;
  此外,所有启用集群功能的web应用程序,其web.xml中都须添加才能实现集群功能。如果某web应用程序没有自己的web.xml,也可以通过复制默认的web.xml至其WEB-INF目录中实现。
  四、tomcat server及jvm参数调整
  Tomcat脚本:
  startup脚本:
  #!/bin/sh
  # Tomcat init script for Linux.
  #
  # chkconfig: 2345 96 14
  # description: The Apache Tomcat servlet/JSP container.
  # JAVA_OPTS='-Xms64m -Xmx128m'
  JAVA_HOME=/usr/java/latest
  CATALINA_HOME=/usr/local/tomcat
  export JAVA_HOME CATALINA_HOME
  

  case $1 in
  start)
  exec $CATALINA_HOME/bin/catalina.sh start ;;
  stop)
  exec $CATALINA_HOME/bin/catalina.sh stop;;
  restart)
  $CATALINA_HOME/bin/catalina.sh stop
  sleep 2
  exec $CATALINA_HOME/bin/catalina.sh start ;;
  configtest)
  exec $CATALINA_HOME/bin/catalina.sh configtest ;;
  *)
  exec $CATALINA_HOME/bin/catalina.sh * ;;
  esac
  

  2、tomcat参数调优

  基于连接器提高Tomcat6性能的方法:
  1) 设置tcpNoDelay属性值为“true”;
  2) 通过maxKeepAliveRequest属性调整允许keep-alive功能的请求的最大数目,值为1时表示禁用;
  3) 调整socketBuffer属性的值以改变套接字缓冲的大小;
  4) 将enableLookups设置为false以禁用DNS反解;
  5) Tomcat是一个多线程的Servlet容器,使用线程池能对服务器性能带去很大影响;这主要通过maxThreads、maxSpareThreads和minSpareThreads来定义;
  6) 通过JAVA_OPTS,如-Xms和-Xmx设定JVM相关的参数以定义其使用内存的能力;
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-643081-1-1.html 上篇帖子: 安装tomcat出现问题:failed to install tomcat6 service 下篇帖子: Linux 给新用户授予、设置Tomcat目录的使用权限
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表