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

[经验分享] 实现 Tomcat 的负载均衡

[复制链接]

尚未签到

发表于 2018-12-2 08:28:06 | 显示全部楼层 |阅读模式
  一、首先新建 Tomcat 节点  node3
1. 安装JDK
      # rpm -ivh jdk-7u5-linux-i586.rpm
   定义两个环境变量:        
       # vi /etc/profile


  • JAVA_HOME=/usr/java/jdk1.7.0_05
  • PATH=$PATH:$JAVA_HOME/bin
  • export JAVA_HOME PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC   

  
  退出后再重新登录:
     # printenv                    查看环境变量


  • .....
  • PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0_05/bin:/root/bin
  • JAVA_HOME=/usr/java/jdk1.7.0_05
  • .....

  
2. 安装 Tomcat


  • # tar xf apache-tomcat-7.0.29.tar.gz -C /usr/local/
  • # cd /usr/local/
  • # ln -sv apache-tomcat-7.0.29/  tomcat
  •           create symbolic link `tomcat' to `apache-tomcat-7.0.29/'

  3.修改conf/server.xml
1). 添加 jvmRoute
        

2). 配置Tomcat的虚拟主机


  • # vi /usr/local/tomat/conf/server.xml

  •      
  •                  

  •                  
  •          
   

  
3). 创建虚拟主机的相关目录和文件


  • # mkdir  -pv  /www/tomcat/WEB-INF/{lib,classes}

  • # tree /www/

  • /www/
  • `-- tomcat
  •     `-- WEB-INF
  •         |-- classes
  •         `-- lib

  •         
  • # cp /usr/local/tomcat/conf/web.xml  /www/tomcat/WEB-INF/  

  4). 提供主页面
   # vi /www/tomcat/index.jsp            内容如下:




  •   TomcatB
  •    
  •     TomcatB  
  •      
  •       
  •         Session ID
  •          
  •       
  •       
  •         Created on
  •          
  •       
  •      
  •    


  5)启动Tomcat,并测试

  二、以mod-jk的方式实现负载均衡
  配置前端的Apache
1 .修改/etc/httpd/extra/httpd-jk.conf


  • [root@node1 httpd]# vi extra/httpd-jk.conf

  • # Load the mod_jk
  • LoadModule  jk_module  modules/mod_jk.so
  • JkWorkersFile  /etc/httpd/extra/workers.properties
  • JkLogFile  logs/mod_jk.log
  • JkLogLevel  debug
  • JkMount  /*     lbcluster-1
  • JkMount  /jk-status/  stat1


  2.  编辑/etc/httpd/extra/workers.properties


  • [root@node1 httpd]# vi extra/workers.properties

  • worker.list=lbcluster-1,stat1

  • worker.Tomcat_A.port=8009
  • worker.Tomcat_A.host=192.168.1.12
  • worker.Tomcat_A.type=ajp13
  • worker.Tomcat_A.lbfactor=1

  • worker.Tomcat_B.port=8009
  • worker.Tomcat_B.host=192.168.1.13
  • worker.Tomcat_B.type=ajp13
  • worker.Tomcat_B.lbfactor=1

  • worker.lbcluster-1.type = lb
  • worker.lbcluster-1.sticky_session = 0             0: 表示不绑定会话   1:表示绑定会话
  • worker.lbcluster-1.balance_workers = Tomcat_A,Tomcat_B
  • worker.stat1.type = status

  3. 编辑httpd.conf


  • # Virtual hosts
  • #Include /etc/httpd/extra/httpd-vhosts.conf
  • Include /etc/httpd/extra/httpd-jk.conf           确保启用了 httpd-jk.conf 的配置


  4. 重启Apacher 测试一下

  5. 若此时我们停掉node3 上的Tomcat,看是否可以自动检测到后端的健康状况

  三、 以mod_proxy 的方式实现负载均衡
  可以使用http连接器,也可以使用ajp连接,注意端口不一样
1. 编辑extra/httpd-vhosts.conf


  • [root@node1 httpd]# vi extra/httpd-vhosts.conf


  • ProxyVia            Off
  • ProxyRequests       Off
  • ProxyPreserveHost   On


  •         ServerName tomcat.yue.com
  •         ProxyPass /  balancer://lbcluster-1/ stickysession=jsessionid  nofailover=On
  •         ProxyPa***everse /  balancer://lbcluster-1

  •    
  •         BalancerMember http://192.168.1.12:8080 loadfactor=10 route=Tomcat_A      使用的是http 连接器
  •         BalancerMember http://192.168.1.13:8080 loadfactor=10 route=Tomcat_B
  •    




  2. 编辑Apache的配置文件
    # vi /etc/httpd/httpd.conf


  • Include /etc/httpd/extra/httpd-vhosts.conf                确保启用的是 httpd-vhosts.conf 的配置
  • #Include /etc/httpd/extra/httpd-jk.conf

  四、实现Tomcat基于内存复制的集群
  1. 编辑两个Tomcat的配置文件(注意 主机ip不能相同
     # vi conf/server.xml
以下内容定义在Engine容器中,则表示对所有主机均启动用集群功能。如果定义在某Host中,则表示仅对此主机启用集群功能。



  •                                   心跳信息传输的频道   
  •       
  •                  定义一个独立的集群,区别集群和其它节点,使用哪个
  •                                                  多长时间收不到对方的响应信息,就认为其故障
  •               
  •                     发送器
  •                    定义如何向外发送信息
  •               
  •              过滤器,定义节点间互相传递信息的时候要传递哪些信息,传递信息的时候是否要认证
  •         
  •       
  •       
  •              JvmRoute
  •       
  •         监听器,基于事件的,当某种类型的事件发生时能够触发某种动作的
  •       


  1.1>.  编辑 web.xml


  • # vi  /www/tomcat/WEB-INF/web.xml      添加如下内容:
  •             

  2. 通过 mod_proxy 模块工作
  2.1> 编辑http.conf


  • # Virtual hosts
  • Include /etc/httpd/extra/httpd-vhosts.conf     确保启用的是 httpd-vhosts.cnf 的配置
  • #Include /etc/httpd/extra/httpd-jk.conf

  2.2> 编辑 extra/httpd-vhosts.conf


  • ProxyRequests       Off
  • ProxyPreserveHost   On


  •         ServerName tomcat.yue.com
  •         ProxyPass /  balancer://lbcluster-1/ stickysession=jsessionid  nofailover=On
  •         ProxyPa***everse /  balancer://lbcluster-1

  •    
  •         BalancerMember http://192.168.1.12:8080 loadfactor=10 route=Tomcat_A
  •         BalancerMember http://192.168.1.13:8080 loadfactor=10 route=Tomcat_B
  •    



  2.3> 重启Apache,测试一下效果:


  3. 通过mod-jk 模块工作
  3.1> 编辑 extra/httpd-jk.conf


  • [root@node1 httpd]# vi extra/httpd-jk.conf  

  • # Load the mod_jk
  • LoadModule  jk_module  modules/mod_jk.so
  • JkWorkersFile  /etc/httpd/extra/workers.properties
  • JkLogFile  logs/mod_jk.log
  • JkLogLevel  debug
  • JkMount  /*     lbcluster-1
  • JkMount  /jk-status/  stat1

  3.2> 编辑 extra/workers.properties


  • [root@node1 httpd]# vi extra/workers.properties  

  • worker.list=lbcluster-1,stat1

  • worker.Tomcat_A.port=8009
  • worker.Tomcat_A.host=192.168.1.12
  • worker.Tomcat_A.type=ajp13
  • worker.Tomcat_A.lbfactor=1

  • worker.Tomcat_B.port=8009
  • worker.Tomcat_B.host=192.168.1.13
  • worker.Tomcat_B.type=ajp13
  • worker.Tomcat_B.lbfactor=1

  • worker.lbcluster-1.type = lb
  • worker.lbcluster-1.sticky_session = 0
  • worker.lbcluster-1.balance_workers = Tomcat_A,Tomcat_B
  • worker.stat1.type = status

  3.3> 编辑 httpd.conf


  • # Virtual hosts
  • #Include /etc/httpd/extra/httpd-vhosts.conf
  • Include /etc/httpd/extra/httpd-jk.conf          确保启用的是httpd-jk.conf 的配置

  3.4> 测试一下,看看效果如何

  4. 另外我们也可以将 extra/httpd-vhosts.conf 文件中内容单独定义在一文件中,如extra/httpd-proxy.conf
  4.1> 编辑  extra/httpd-proxy.conf


  • ProxyVia            Off
  • ProxyRequests       Off
  • ProxyPreserveHost   On


  •         ServerName tomcat.yue.com
  • #       ProxyPass /  balancer://lbcluster-1/ stickysession=jsessionid  nofailover=On                jsessionid  -->java 程序   psessionid -->php 程序
  •         ProxyPa***everse /  balancer://lbcluster-1

  •    
  •         ProxySet lbmethod=bytraffic                        负载均衡的调度算法,apache做代理的时候有三种
  •         BalancerMember http://192.168.1.12:8080 loadfactor=10 route=Tomcat_A
  •         BalancerMember http://192.168.1.13:8080 loadfactor=10 route=Tomcat_B
  •    


  • ProxyPass /lb-manager !                          表示不做代理                                                      
  • ProxyPass /status !
  • ProxyStatus full


  •     SetHandler balancer-manager                 额外的处理器
  •     Require all granted



  •     SetHandler server-status
  •     Require all granted




   4.2>  编辑httpd.conf  将extra/httpd-proxy.conf  文件包含进去


  •     Include /etc/httpd/extra/httpd-proxy.conf    确保启用的是httpd-proxy.conf 的配置
  • #  Include /etc/httpd/extra/httpd-vhosts.conf           
  • #  Include /etc/httpd/extra/httpd-jk.conf

  4.3> 重启Apache,测试一下效果

   4.4> 查看一下相关的状态信息



   后记: 一定要注意 三台机器的时间必须要同步,否则就可能会出现一些问题
  如:只显示Apache 工作了,但跳转不到后端Tomcat的虚拟主机上

  由于本人能力有限,若本文中有不足或错误之处还请各位看官多多指教!




运维网声明 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-642194-1-1.html 上篇帖子: tomcat自动部署脚本 下篇帖子: tomcat一般配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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