Tomcat + apache 做web 负载平衡和群集
操作系统:windows 我本机。以下是已经试验过的。
tomcat-6.0.26? 下载地址:http://tomcat.apache.org/download-60.cgi
httpd-2.2.15 下载地址:http://labs.renren.com/apache-mirror/httpd/binaries/win32/httpd-2.2.15-win32-x86-no_ssl.msi
?
1、Apache配置
1.1、httpd.conf配置
修改APACHE的配置文件D:\Apache \conf\httpd.conf
将以下Module的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了 mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用了代理的方法,就这么简单。
LoadModule proxy_module modules/mod_proxy.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
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
再找到<IfModule dir_module></IfModule>加上index.jsp修改成
<IfModule dir_module>
DirectoryIndex index.html index.jsp
</IfModule>
1.2 ?在 httpd.conf中找到Include conf/extra/httpd-vhosts.conf 把它前面的注释去掉
1.3 在 Apache2.2\conf\extra 目录下找到httpd-vhosts.conf在它的内容尾添加下面内容:
ProxyRequests Off
<VirtualHost *:80>
???????? ServerAdmin webmaster@dummy-host2.a.com
???????? ServerName localhost
???????? ServerAlias localhost
???????? ProxyPass / balancer://proxy/ stickysession=JSESSIONID nofailover=Off lbmethod=bytraffic
???????? ProxyPassReverse / balancer://proxy
?? ??????<Proxy balancer://proxy>
??????????????? BalancerMember http://127.0.0.1:9080/ loadfactor=1 route=work1
??????????????? BalancerMember http://127.0.0.1:10080/ loadfactor=1 route=work2
???????? </Proxy>
</VirtualHost>
?
?
<Location /balancer-manager>
? ??SetHandler balancer-manager
??? Order Deny,Allow
??? Deny from all
??? Allow from all
</Location>
?9080 和 10080 两个端口是你的tomcat http访问端口 apache配置完。
?
2、tomcat的配置 (一下配置都在server.xml 文件中))
2.1 改端口两个地方端口
<Connector port="#####" protocol="HTTP/1.1" ?connectionTimeout="20000" redirectPort="8443" />
<Connector port="#####" protocol="AJP/1.3" redirectPort="#####" />
多个tomcat需要把#####替换成不通的端口号
2.2? 打开两个注释
<Engine name="Catalina" defaultHost="localhost" jvmRoute="work1">把原来的 engine 那个注释掉,多个tomcat ?jvmRoute=”不同的名”,且需要和apacheHTTPServer 中的route值对应
? <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 这个注释也打开
?
?
备注:
1、linux下Apache
进入解压目录,在终端执输入以下命令:
./configure --prefix=/usr/local/httpd --enable-so --enable-proxy --enable-proxy-ajp --enable-proxy-http --enable-proxy-ftp --enable-proxy-connect --enable-proxy-balancer
然后编译安装
参照地址:http://bbs.ctocio.com.cn/viewthread.php?tid=7810697