apache与tomcat负载集群的3种方法 (转载)

标签: apache tomcat 负载 | 发表时间:2013-11-20 00:00 | 作者:wangen2009
出处:http://www.iteye.com

 

集群tomcat主要是解决SESSION共享的问题

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->apache:httpd-2.2.17-win32-x86-no_ssl.msi
tomcat:apache-tomcat-6.0.20.zip
jdk:jdk-6u14-windows-i586.exe


本次测试是1个apache集成两个tomcat。
安装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,该步骤非必要,只要不冲突就行了。

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><Connector port="8079" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />


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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><Connector port="8077" protocol="AJP/1.3" redirectPort="8443" />


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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
   <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 


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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><Context distributable="true">

如果不想在context.xml中添加distributable="true",还有另一方法是在应用程序的web.xml中添加<distributeable/>,不过这方法我没有测试。
配置完成,访问地址为:http://127.0.0.1:8079

另一个tomcat.worker3的配置
server.xml

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><Connector port="8078" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker3">
   <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

context.xml配置tomcat.worker2一样。
配置完成,访问地址为:http://127.0.0.1:8078
注意:如果两个tomcat是放在同一台机内,server.xml可能还需要修改其它端口,请确认两个tomcat能正常启动。

在tomcat.worker2和tomcat.worker3的webapps文件夹添加同样的测试文件test"test.jsp

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><html>
<head>
  <title>helloapp</title>
</head>
<body>
<%
System.out.println("call test.jsp");

%>   
SessionID: <%=session.getId() %>  
</body>
</html>

访问http://127.0.0.1:8078/test/test.jsp和http://127.0.0.1:8079/test/test.jsp,确保能成功访问。

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
JkMount  /*.do loadbalancer
JkMount  /*.jsp loadbalancer

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->worker.list=loadbalancer
worker.worker2.port=8077   #ajp的监听端口
worker.worker2.host=108.88.3.105
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
worker.worker3.port=9009
worker.worker3.host=127.0.0.1
worker.worker3.type=ajp13
worker.worker3.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=worker2,worker3 #这里在的worker2、worker3为需要与上边tomcat设置的别名一致
worker.loadbalancer.sticky_session=1

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

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->Include conf/extra/httpd-vhosts.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
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方式的配置内容,增加下边的配置

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->ProxyRequests Off
<proxy balancer://loadbalancer> 
BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=worker3
BalancerMember ajp://108.88.3.105:8077 loadfactor=1 route=worker2
</proxy>

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><VirtualHost *:8081>
         ServerAdmin [email protected]
         ServerName localhost
         ServerAlias localhost
         ProxyPass / balancer://loadbalancer/ stickysession=jsessionid nofailover=On
         ProxyPassReverse / balancer://loadbalancer/
         ErrorLog "logs/loadbalancer-error.log"
         CustomLog "logs/loadbalancer-access.log" common
</VirtualHost>

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

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->ProxyRequests Off
<proxy balancer://loadbalancer> 
BalancerMember http://127.0.0.1:8078 loadfactor=1 route=worker3
BalancerMember http://108.88.3.105:8079 loadfactor=1 route=worker2
</proxy>

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

apache_tomcat配置文件下载: apache_tomcat



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [apache tomcat 负载] 推荐:

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

- dongsheng - BlogJava-首页技术区
花了两天时间学习apache与tomcat的集成方法,现在把学习成果记录下来. apache与tomcat负载集群集成方法有3种jk、jk_proxy、http_proxy. 本次测试是1个apache集成两个tomcat. 安装apache http server省略,访问地址为http://127.0.0.1:8081.

apache与tomcat负载集群的3种方法 (转载)

- - 研发管理 - ITeye博客
集群tomcat主要是解决SESSION共享的问题. 花了两天时间学习apache与tomcat的集成方法,现在把学习成果记录下来. apache与tomcat负载集群集成方法有3种jk、jk_proxy、http_proxy. 本次测试是1个apache集成两个tomcat. 安装apache http server省略,访问地址为http://127.0.0.1:8081.

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

- - 研发管理 - ITeye博客
基于apache的tomcat负载均衡和集群配置. httpd-2.2.15-win32-x86-no_ssl.msi    网页服务器. mod_jk-1.2.30-httpd-2.2.3.so             Apache/IIS 用来连接后台Tomcat的模块,支持集群和负载均衡.        JK 分为两个版本 1,x 和 2.x ,其中 2.x 并不是最新的版本,它是 JK 的另外一个分支,后不知何因没有继续开发,因此2.x 版本已经废弃.

Apache +Tomcat的负载均衡与集群配置

- - 企业架构 - ITeye博客
Tomcat的安装和配置. Tomcat_a的ip:192.168.55.229. Tomcat_b的ip:192.168.55.231. Tomcat的需要安装jdk和tomcat包(例如apache-tomcat-6.0.30.zip和jdk-6u5-linux-x64.bin). tomcat的安装和配置可以参考我的博客:.

Apache+Tomcat+keepalived的负载均衡session复制及HA

- - 开源软件 - ITeye博客
0、关闭防火墙(service iptables stop; chkconfig --level 35 iptables off),.    关闭selinux vi /etc/selinux/config   SELINUX=disabled. setenforce 0 生效. 1、将mod_jk-1.2.31-httpd-2.2.x.so上传至/etc/httpd/modules目录下.

Linux下Apache+Tomcat搭建负载均衡服务器集群

- - 极客521 | 极客521
这篇文章主要讲解关于如何在Linux下搭建Apache+tomcat 负载均衡服务器集群的过程. 负载均衡集群配置(1):Tomcat的配置. 修改“ tomcat/conf/server.xml ”文件. 编辑server.xml文件,找到“ ”元素节点,在server.xml文件里面未注释掉的有两个 元素节点.

采用ajp代理模式配置Apache+tomcat实现负载均衡

- - 研发管理 - ITeye博客
这一种方法,配置简单,性能也高. apache 必须是2.2.x以上版本.       AJP是Apache提供的完成与其它服务器通讯的一种协议. 在Apache中通过mod_proxy_ajp模块发送AJP数据,另外一端的服务器需要实现AJP协议,能够接受mod_proxy_ajp模块发送的AJP协议数据,在接受到AJP协议数据后做适当处理,并能够将处理结果以AJP协议方式发送回给mod_proxy_ajp模块.

Apache整合Tomcat、集群

- - ITeye博客
Apache 整合 Tomcat 、集群. 1.1     使用mod_proxy整合. 1.2     使用mod_jk整合. 1.3.1    Tomcat集群配置. 1.3.2    mod_proxy进行负载均衡. 1.3.3    mod_jk进行负载均衡.        Apache整合Tomcat主要有两种方式,通过mod_proxy整合和通过mod_jk整合.

Docker自动部署Apache Tomcat

- - 开源软件 - ITeye博客
本文是Docker的入门文章,推荐Java开发者阅读. 文章详细介绍了如何用Docker来安装部署Tomcat. 扩展Tomcat的官方Dockerfile. 在容器里部署RESTful的Web服务并测试. 使用docker search可以查到最流行的(和官方的)Docker Tomcat容器: .

Apache Tomcat 6.0.35前有拒绝服务,信息泄露等漏洞

- - C1G军火库
Apache Tomcat 6.0.35前有信息泄露相关的一个漏洞(CVE-2011-3375),. 以及另一个在此前广受关注的哈希碰撞引发拒绝服务(DoS)漏洞(CVE-2012-0022),. Apache 建议用户对 Tomcat 进行升级从而规避此漏洞. 一.安装Oracle JRockit.