apache与tomcat负载集群集成方法有3种jk、jk_proxy、http_proxy

apache:httpd-2.2.17-win32-x86-no_ssl.msi
tomcat:apache-tomcat-6.0.20.zip

安装apache
http server省略,访问地址为http://127.0.0.1:8081
安装tomcat,解压apache-tomcat-6.0.20.zip,测试时我是把两个tomcat分开放在不同的虚拟机,其中一个是和apache同一台虚拟机。
两个tomcat分别命名为worker2和worker3
先说tomcat.worker2的配置:
server.xml
(1)配置http监听端口,这里端口设为8079,该步骤非必要,只要不冲突就行了。

  1. <Connector port="8079" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

(2)配置AJP监听端口,这里端口设为8077,该步骤非必要,只要不冲突就行了。

  1. <Connector port="8077" protocol="AJP/1.3" redirectPort="8443" />

(3)配置服务器标识,这里标识名配置为:worker2,添加jvmRoute="worker2",该步骤必须。

  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">


Engine节点启用集群配置,只需去掉Cluster节点前的注释就行了,该步骤必须,配置了集群才能实现Session复制,如果只有一个集群,只按
我下边的配置就行了,如果多个集群,则不能按此配置,tomcat服务器内的帮助文档/docs/cluster-howto.html,/docs
/config/cluster.html有介绍,需要的可以参考下。

  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
  2. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

要实现session复制,还需要在context.xml添加属性distributable="true",如下:

  1. <Context distributable="true">

如果不想在context.xml中添加distributable="true",还有另一方法是在应用程序的web.xml中添加<distributeable/>

配置完成,访问地址为:http://127.0.0.1:8079

注意:如果两个tomcat是放在同一台机内,server.xml可能还需要修改其它端口,请确认两个tomcat能正常启动。端口号不能相同

现在开始apache和tomcat的不同方式集成
1、jk方式集成
下载mod_jk-1.2.31-httpd-2.2.3.so,请下载合适的mod_jk版本,改名为mod_jk.so放进modules文件夹内
修改conf/httpd.conf配置

  1. LoadModule jk_module modules/mod_jk.so
  2. JkWorkersFile conf/workers.properties
  3. JkLogFile logs/mod_jk.log
  4. JkLogLevel debug
  5. JkMount  /*.do loadbalancer
  6. JkMount  /*.jsp loadbalancer

增加conf/workers.properties文件,添加内容

  1. worker.list=loadbalancer
  2. worker.worker2.port=8077   #ajp的监听端口
  3. worker.worker2.host=108.88.3.105
  4. worker.worker2.type=ajp13
  5. worker.worker2.lbfactor=1
  6. worker.worker3.port=9009
  7. worker.worker3.host=127.0.0.1
  8. worker.worker3.type=ajp13
  9. worker.worker3.lbfactor=1
  10. worker.loadbalancer.type=lb
  11. worker.loadbalancer.balance_workers=worker2,worker3 #这里在的worker2、worker3为需要与上边tomcat设置的别名一致
  12. worker.loadbalancer.sticky_session=1

配置完成任务,访问http://127.0.0.1:8081/test/test.jsp,检查是否能正常访问。

2、ajp_proxy
去掉httpd.conf文件中下面内容的注释(删掉#号),开启下边的配置

  1. Include conf/extra/httpd-vhosts.conf
  2. LoadModule proxy_module modules/mod_proxy.so
  3. LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
  4. LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
  5. LoadModule proxy_connect_module modules/mod_proxy_connect.so
  6. LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
  7. LoadModule proxy_http_module modules/mod_proxy_http.so

注意:
除了mod_proxy.so,mod_proxy_balancer.so,mod_proxy_connect.so
如果是采用ajp_proxy,需要加载mod_proxy_ajp.so这个模块;
如果是采用http_proxy,需要加载mod_proxy_http.so这个模块;

httpd.conf,删除刚才jk方式的配置内容,增加下边的配置

  1. ProxyRequests Off
  2. <proxy balancer://loadbalancer>
  3. BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=worker3
  4. BalancerMember ajp://108.88.3.105:8077 loadfactor=1 route=worker2
  5. </proxy>

conf/extra/httpd-vhosts.conf增加配置

  1. <VirtualHost *:8081>
  2. ServerAdmin xxxx@xxx.com
  3. ServerName localhost
  4. ServerAlias localhost
  5. ProxyPass / balancer://loadbalancer/ stickysession=jsessionid nofailover=On
  6. ProxyPassReverse / balancer://loadbalancer/
  7. ErrorLog "logs/loadbalancer-error.log"
  8. CustomLog "logs/loadbalancer-access.log" common
  9. </VirtualHost>

配置完成任务,访问http://127.0.0.1:8081/test/test.jsp,检查是否能正常访问。

3、http_proxy
http_proxy的配置与ajp_proxy类似,修改方法2的httpd.conf配置如下,其它不变

  1. ProxyRequests Off
  2. <proxy balancer://loadbalancer>
  3. BalancerMember http://127.0.0.1:8078 loadfactor=1 route=worker3
  4. BalancerMember http://108.88.3.105:8079 loadfactor=1 route=worker2
  5. </proxy>

配置完成任务,访问http://127.0.0.1:8081/test/test.jsp,检查是否能正常访问。

apache与tomcat负载集群集成方法配置的更多相关文章

  1. apache与tomcat负载集群的3种方法

    花了两天时间学习apache与tomcat的集成方法,现在把学习成果记录下来. apache与tomcat负载集群集成方法有3种jk.jk_proxy.http_proxy 本次集成使用的软件版本: ...

  2. apache整合tomcat部署集群

    近日,由于公司项目需要,所以学习了apache整合tomcat以及集群的一些知识. 所以做下笔记日后回顾可以用到. apache只有处理静态事物的能力, 而tomcat的强项就是处理动态的请求,所以a ...

  3. (总结)Nginx与Apache、Tomcat、Resin动静分离核心配置

    PS:近来有几个刚使用nginx的新童鞋老问我,nginx+fastcgi不够稳定,偶尔出现502错误,怎么解决?本人使用nginx也有3年多了,也认为php-fpm模块不够稳定,在访问量不大的时候没 ...

  4. 用apache和tomcat搭建集群,实现负载均衡

    型的企业应用每天都需要承受巨大的访问量,在着巨大访问量的背后有数台服务器支撑着,如果一台服务器崩溃了,那么其他服务器可以使企业应用继续运行,用户对服务器的运作是透明化的,如何实现这种透明化呢?由如下问 ...

  5. 结合Apache和Tomcat实现集群和负载均衡 JK 方式

    本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实操经历记录而成,碰到些出入,以及个别地方依据个人的习惯,所以在一定程度上未能保持原文的完整性,还望原著者海涵. 因原文中有较多的 ...

  6. 结合Apache和Tomcat实现集群和负载均衡

    http://fableking.iteye.com/blog/360870 TomcatApacheJSP应用服务器Web  本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实 ...

  7. 基于apache的tomcat负载均衡和集群配置

    最近不是很忙,用零碎时间做点小小的实验. 以前公司采用F5负载均衡交换机,F5将请求转发给多台服务器,每台服务器有多个webserver实例,每个webserver分布在多台服务器,交叉式的分布集群. ...

  8. Apache、Tomcat负载均衡与集群

    一. 环境准备 1.软件下载 a) apache_2.0.55-win32-x86-no_ssl.msi: b) apache-tomcat-5.5.17.rar c) mod_jk-apache-2 ...

  9. apache的tomcat负载均衡和集群配置 "

    略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务 ...

随机推荐

  1. android HTTP镜像

    mirrors.neusoft.edu.cn 80

  2. Python学习笔记十_模块、第三方模块安装、模块导入

    一.模块.包 1.模块 模块实质上就是一个python文件.它是用来组织代码的,意思就是把python代码写到里面,文件名就是模块的名称,test.py test就是模块的名称 2.包 包,packa ...

  3. pom.xml文件释义

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  4. 发布后就很丢人的随笔(c++)

    for循环条件中使用的变量 可以是循环条件中定义的变量 也可以是循环之外的变量 代码: #include <iostream> int main(){ int a = 1; int b = ...

  5. linux-kernel-4.4 移植 (2)解决上部遗留DMA-PL330的问题

    查看drivers/tty/serial/samsung.c文件发现,当传输数据量小于ourport->min_dma_size时,不使用DMA,大于等于min_mda_size时才是使用DMA ...

  6. mysql执行计划id为空—UNION关键字

    简介 UNION 操作符用于合并两个或多个 SELECT 语句的结果集.例如,我有两个表,表1记录的是公司男员工的数据,包括年龄.姓名.职位.表2记录的是公司女员工的数据,包括姓名.家庭住址.手机号等 ...

  7. Spring in Action 第一章 Spring之旅

    1.1 简化Java开发 1.1.2 依赖注入(DI) 松耦合:如果一个对象只通过接口(而不是具体实现或初始化过程)来表明依赖关系,那么这种依赖就能在对象本身毫不知情的情况下,用不同的具体实现进行替代 ...

  8. 面试简单整理之spring、spring mvc

    90.为什么要使用 spring? 解决企业应用开发的复杂性,IOC.aop 91.解释一下什么是 aop? 面向切面编程.... 92.解释一下什么是 ioc? 控制反转.. 93.spring 有 ...

  9. 通过js获取外部css样式

    通过js获取外部样式表中的属性,比如.box在style.css样式表中有个属性叫font-size:16px; 通过js获取.box的这个属性: js代码为: <script> wind ...

  10. USB设备类学习笔记

    usb audio class 版本目前有3个版本  分别是1.0,2.0,3.0:1.0针对各个厂家的设备具有不同的描述符,而2.0则将它们统一简化,3.0则是最新的,还没有与2.0作进一步比较:因 ...