采用ajp代理模式配置Apache+tomcat实现负载均衡
一、前期准备工作:安装用的程序(前提保证已安装了JDK1.5以上的版本)
APAHCE 2.2.4
TOMCAT6.0
二、安装过程
APAHCE安装目录:D:\Apache Group\Apache2。
l两个TOMCAT目录:自行解压到(D:\Apache Group\集群服务器\)下。分别为 tomcat6_1,tomcat6_2,这几个安装过程就不详细说明了。
三、配置
1、Apache配置
1.1、httpd.conf配置
修改APACHE的配置文件D:\Apache Group\Apache2\conf\httpd.conf
将以下Module的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用了ajp代理的方法,就这么简单。
将下面的内容去掉注释:(其实注释掉前面三行也就行了,因为采用的是ajp代理)
再找到<IfModule dir_module></IfModule>加上index.jsp修改成
<IfModule dir_module>
DirectoryIndex index.html index.jsp
</IfModule>
1.1.1、 在最下面加入
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:8109 loadfactor=1 route=jvm1
BalancerMember ajp:// 127.0.0.1:8209 loadfactor=1 route=jvm2
</proxy>
上面的两个BalancerMember成员是我们配置的tomcat集群,注意上面红色的端口号,要跟Tomcat1中的server.xml <Connector port="8109" protocol="AJP/1.3" redirectPort="8443" /> Tomcat2的为
<Connector port="8209" protocol="AJP/1.3" redirectPort="8443" />
1.2、httpd-vhosts.conf设置
接下来进行虚拟主机的设置。APACHE的虚拟主机设置如下:
首先要修改 conf/httpd.conf找到(#Include conf/extra/httpd-vhosts.conf)
把注释去掉。
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
在文件(extra/httpd-vhosts.conf)最下面加入
<VirtualHost *:80>
ServerAdmin 979398098@qq.com
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
</VirtualHost>
其中的邮箱,域名和路径根据你自己情况设置
然后再设置TOMCAT虚拟主机
2 配置 tomcat
2.1. 配置 server 的关闭
我们需要在一台机器上跑 2个不同的 tomcat ,需要修改不同的 tomcat 的关闭口,避免出现端口被占用的情况。其中tomcat6.0用默认值,不修改。其他三个修改。在tomcat6_1\conf, tomcat6_2\conf下的 server.xml 中找到 server, 将:
<Server port="8005" shutdown="SHUTDOWN">
改为
<Server port="XXXX" shutdown="SHUTDOWN">
XXXX 在这里表示不同的端口:我的两个个 tomcat 分别使用 8105,8205。
2.2. 配置 Engine
把原来的配置注释掉,把下面一句去掉注释。并标明jvmRoute="jvm1".
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
以下是原来的配置。
<!-- <Engine name="Catalina" defaultHost="localhost"> -->
Tomcat6_2也要同样配置。注意:jvmRoute配置不要一样。
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2">
2.3. 配置 Connector
原来的默认配置。
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
这里是apache和tomcat链接的关键(前面有说过),前台apache就是通过AJP协议与tomcat进行通信的,以完成负载均衡的作用。也可以用HTTP协议。大家注意它们是如何连接通信的,上面的红色部分(port="8009")就是连接的接口了。
我的两个Tomcat分别设置为8109和8209.
注意 此端口 必须与 httpd.Conf 中相对应的 端口相同
BalancerMember ajp://127.0.0.1:8109 loadfactor=1 route=jvm1