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

[经验分享] Apache与Tomcat负载均衡配置

[复制链接]

尚未签到

发表于 2015-8-6 10:52:43 | 显示全部楼层 |阅读模式
  Apache HTTP Server 与 Tomcat  负载均衡
  参考资料 https://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/
  
  环境以及所需软件
  window7(64),JDK1.7(64)
  apache-tomcat-7.0.35-windows-x64.zip
  Apache 服务器 (httpd-2.2.25-win32-x86-no_ssl.msi )
  JK插件 (tomcat-connectors-1.2.40-windows-i386-httpd-2.2.x.zip)
  其中需要注意的是JK插件的版本与Apache服务器的版本需要一致 其中红色标记
  
  一、配置apache的httpd.conf文件加载JK插件,该文件在软件安装目录的conf目录下面。
  配置如下:



LoadModule jk_module modules/mod_jk.so
#
# Configure mod_jk
#
JkWorkersFile conf/workers.properties  
JkMountFile conf/uriworkermap.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn
  
  二、在httpd.conf文件的同级目录新建俩个文件。workers.properties 和 uriworkermap.properties,这俩个文件的名字需要和上面配置里的名字一致。
  配置如下: 官方文档 http://tomcat.apache.org/connectors-doc/reference/workers.html
  需要注意的是下面括号里的为说明 使用的时候需要拿掉。
  workers.properties
  



worker.list=DLOG4J, status
# localhost server 1
# ------------------------
worker.s1.port=8009
worker.s1.host=localhost
worker.s1.type=ajp13
worker.s1.lbfactor = 1
# localhost server 2 # ------------------------
worker.s2.port=8009 (Tomcat的AJP/1.3端口  需要和tomcat的service.xml里配置的端口一致)
worker.s2.host=192.168.1.213 (Tomcat所在机器的IP地址)
worker.s2.type=ajp13 (worker的类型)
worker.s2.lbfactor = 1 (负载均衡的权重,值越大被访问的次数越高)
worker.DLOG4J.type=lb
worker.retries=3
worker.DLOG4J.balanced_workers=s1,s2
worker.DLOG4J.sticky_session=True (粘结SESSION策略,即将同一个客户端的请求都转发到相同的Tomcat上面)
worker.status.type=status (监控用的)
  
  
  
  首先我们配置了两个类型为 ajp13 的 worker 分别是 s1 和 s2,它们指向同在不同服务器上运行在两个Tomcat 。接下来我们配置了一个类型为 lb(也就是负载均衡的意思)的 worker,它的名字是 DLOG4J,这是一个逻辑的 worker,它用来管理前面配置的两个物理连接 s1 和 s2。最后还配置了一个类型为 status 的 worker,这是用来监控 JK 本身的模块。有了这三个 worker 还不够,我们还需要告诉 JK,哪些 worker 是可用的,所以就有 worker.list = DLOG4J, status 这行配置。
  
  uriworkermap.properties
  接下来便是 URI 的映射配置了,我们需要指定哪些链接是由 Tomcat 处理的,哪些是由 Apache 直接处理的,看看下面这个文件你就能明白其中配置的意义。



/*=DLOG4J
/jkstatus=status
!/*.gif=DLOG4J
!/*.jpg=DLOG4J
!/*.png=DLOG4J
!/*.css=DLOG4J
!/*.js=DLOG4J
!/*.htm=DLOG4J
!/*.html=DLOG4J
  所有的请求都由 DLOG4J 这个 worker 进行处理,但是有几个例外,/jkstatus 请求由 status 这个 worker 处理(监控管理界面),另外这个配置中每一行数据前面的感叹号是什么意思呢?感叹号表示接下来的 URI 不要由 JK 进行处理,也就是 Apache 直接处理所有的图片、css 文件、js 文件以及静态 html 文本文件,其他的请求由JK处理,也就是我们所说的动态资源,JK会把请求负载到配置好的tomcat,这样就完成了让Apache来处理静态资源,让JK负载tomcat来处理动态请求。
  
  三、配置TOMCAT





  分别配置每台Tomcat服务器的service.xml  jvmRoute="s1" 这里的"s1" 需要与 workers.properties 里面定义的名字一致。
  
  上面的配置就完成了Apache与tomcat的负载均衡的配置,下面在介绍一些额外的配置。
  
  Tomcat热备,顾名思义就是配置俩个tomcat,平时使用其中一个,另外一个做备用,如果平时使用的这个tomcat挂了,那么会自动切换到另外一个。
  



  # The advanced router LB worker
worker.list=router
worker.router.type=lb
worker.router.balance_workers=worker1,worker2
# Define the first member worker
worker.worker1.type=ajp13
worker.worker1.host=myhost1
worker.worker1.port=8009
# Define preferred failover node for worker1
worker.worker1.redirect=worker2 (配置当worker1挂机的时候 会使用worker2)
# Define the second member worker
worker.worker2.type=ajp13
worker.worker2.host=myhost2
worker.worker2.port=8009
# Disable worker2 for all requests except failover (worker2只接受worker1失败时转发过来的请求)
worker.worker2.activation=disabled
  
  
  
  
  worker.worker1.redirect=worker2的意思是告诉负载均衡器(load balancer)当worker1出现问题时把请求转发给worker2。
  
  worker.worker2.activation=disabled的意思是在所有情况下worker2不接受任何请求,除了worker1出现问题时转发过来的请求。
  
  
  以上的配置都是基于Session粘连的配置方式worker.DLOG4J.sticky_session=True 会将同意客户端的请求始终绑定到同一个Tomcat上。
  接下来我们来配置第二种方式Session共享(参考 http://blog.iyunv.com/extreme421/article/details/16113417)
  一、tomcat的server.xml
  



启用标签,注:tomcat01和tomcat02都要启用。
  
  
  
  二、httpd.conf
  



修改Apache的httpd.conf配置 在最后面加上如下配置 注意要加到前面
ProxyRequests Off  
ProxyPass / balancer://abc/ stickysession=jsessionid nofailover=On  
  
BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=s1  
BalancerMember ajp://192.168.1.213:8009 loadfactor=1 route=s2

  
  
  
   三、workers.properties
  



worker.DLOG4J.sticky_session=False 修改 workers.properties 关闭粘连
  
  
  
  

运维网声明 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-94710-1-1.html 上篇帖子: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.3 下篇帖子: apache rewrite 规则示例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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