集群负载均衡,Apache +Tomcat负载均衡集群

Apache+Tomcat负载均衡集群
系统环境:RHEL5.4
软件下载:http://tomcat.apache.org/
主机:station1:192.168.0.1
station2:192.168.0.2
1. JDK 安装
sh jdk6u7linuxi586.bin
mv jdk1.6.0_07 /usr/local/jdk
2. 设置环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
3. TOMCAT 安装
tar zxf apachetomcat6.0.18.
tar.gz
mv apachetomcat6.0.18
/usr/local/tomcat
/usr/local/tomcat/bin/startup.sh
http://localhost:8080 (如能看到tom家的小猫说明成功)
4. Tomcat负载均衡配置
mv mod_jk1.2.28-httpd2.2.
X.so /etc/httpd/modules/mod_jk.so #安装mod_jk模块
vi /etc/httpd/conf.d/httpd-jk.conf
LoadModule jk_module modules/mod_jk.
so #加载jk模块
JkWorkersFile conf/workers.properties #指定workers.properties文件路径
JkShmFile logs/mod_jk.shm #jk共享内存文件
JkLogFile logs/mod_jk.log #jk日志文件
JkLogLevel info #jk日志级别
JkMount /jkstatus status #/jkstatus请求由status这个worker处理
JkMount /*.jsp loadbalancer #所有.jsp文件交给tomcat处理,"loadbalancer"为在
workers.propertise里指定的负载均衡控制器
vi /etc/httpd/conf/workers.properties
worker.list = loadbalancer,status #可用worker列表
#========tomcat1========
worker.tomcat1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=192.168.0.1 #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=8009
worker.tomcat2.host=192.168.0.2
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========controller,负载均衡控制器========
worker.loadbalancer.type=lb #定义负载均衡类型
worker.loadbalancer.balanced_workers=tomcat1,tomcat2 #指定分担请求的tomcat
worker.loadbalancer.sticky_session=1 #设置负载均衡的server的session可否共享
worker.status.type=status #这是用来监控jk模块的
service httpd start
注:以上4步操作在station1上完成,station2上只需完成13
步操作即可
新建测试文件
vi /usr/local/tomcat/webapps/test/test.jsp
<%
System.out.println(“=====================”);
%>
访问:http://station1/test/test.jsp,反复刷新页面,再看station1和station2上
的tomcat日志文件/
usr/local/tomcat/logs/catalina.out 是否实现负载均衡。
http://station1/jkstatus jk模块的监控页面
5. 集群session共享配置
vi /usr/local/tomcat/conf/server.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute=”tomcat1”>
#station2上改为tomcat2
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="6">
<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>
<!<
Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="5000"
selectorTimeout="100"
maxThreads="6"/>
<Sender
className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport
className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/
>
</Sender>
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector
"/>
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15I
nterceptor"/>
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.ThroughputIntercep
tor"/
>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/wartemp/"
deployDir="/tmp/wardeploy/"
watchDir="/tmp/warlisten/"
watchEnabled="false"/>
<ClusterListener
className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
重启tomcat和apache
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
service httpd restart
新建测试文件
vi /usr/local/tomcat/webapps/test/index.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " +
request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session list</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="index.jsp" method="POST">
name:<input type=text size=20 name="dataName">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
mkdir /usr/local/tomcat/webapps/test/WEBINF
<webapp
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/
webapp_
2_5.xsd"
version="2.5">
<displayname>
Welcome to Tomcat</displayname>
<distributable/>
</webapp>
访问:http://station1/test/index.jsp,输入值并提交,查看日志,关闭正在处理
session会话的
tomcat,再次提交页面,如能看到session会话被复制到另一台tomcat上表示成功,此
动作对用户
是透明的。
Wufeng
[email protected]
Tags:  集群负载均衡

延伸阅读

最新评论

发表评论