本文环境:OS:CentOS 5.3 x86_64
Apache 一台(Apache/2.2.3,本文是rpm 安装的)ip 为:192.168.10.251
Tomcat 两台(apache-tomcat-6.0.20.tar.gz)
Tomcat-1 IP 为:192.168.10.252
Tomcat-2 IP 为:192.168.10.253
1. 首先分别安装Apache,jdk,tomcat 并且可以正常运行(略)
2. 配置Apache
[root@test ]# cd /etc/httpd/conf
[root@test ]# vi httpd.conf
(1) 启动代理模块(去掉如下模块前面的注释)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
(2) 在文件的最后面加入如下代理负载均衡信息
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://192.168.10.252:8009/b loadfactor=1 route=jvm1
BalancerMember ajp://192.168.10.253:8009/a loadfactor=1 route=jvm2
</proxy>
解释:其中192.168.10.252:8009/b 和192.168.10.253:8009/a 分别为两个tomcat
的项目,jvm1 和jvm2 是标识,要和下文的tomcat 配置文件保持一致,其中端
8009 为ajp 协议的Apache 和tomact 的通讯端口
(3) 配置虚拟主机
<VirtualHost *:80>
ServerAdmin www.test.com
ProxyPass / balancer://cluster/ stickysession=jsessionid
nofailover=On
ProxyPassReverse / balancer://cluster/
</VirtualHost>
3. 重启Apache 服务
[root@test ]# /etc/init.d/httpd restart
4. Tomcat 的配置
(1) 分别把事先准备好的两个war 包丢到/usr/local/tomcat/webapps/目录中,这样当
tomcat 启动的时候就会自动解包,war 包的名称分别为b.war 和a.war 分别属于
192.168.10.252 和192.168.10.253 即访问方式为:http://192.168.10.252:8080/b
http://192.168.10.253:8080/a,内容分别为bbbbbbbbbb 和aaaaaaaaaaa(此处是为了区
分)
(2) 配置主配置文件
[root@test-2 conf]# cd /usr/local/tomcat/conf/
[root@test-2 conf]# vi server.xml
找到如下一行
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
注意这里的 jvm1 一定要和Apache 的代理配置相同即192.168.10.253 此处应该改为
jvm2
(3) 重新启动tomcat
5. 现在就可以验证结果了, 在测试机的host 文件里指定www.test.com 对应为
192.168.10.251,然后在浏览器里访问:http:// www.test.com 会发现返回的是两个tomcat
的项目页面而且是轮询,为了更直观的查看可以用如下命令
[root@test-2 conf]# curl www.test.com
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://192.168.10.251:80/a/">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
&lt;link rel="stylesheet" type="text/css" href="styles.css">
--&gt;
</head>
<body>
<h1>aaaaaaaaaaaaa</h1>
</body>
</html>
[root@test-2 conf]#curl http://192.168.10.251/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://192.168.10.251:80/b/">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
&lt;link rel="stylesheet" type="text/css" href="styles.css">
--&gt;
</head>
<body>
<h1>bbbbbbbbbbbbb</h1>
</body>
</html>