Ubuntu下Tomcat集群配置步骤
一 环境准备与端口规划
| 节点 | Server port | HTTP | AJP | Receiver port |
|---|---|---|---|---|
| node1 | 8005 | 8080 | 8009 | 4000 |
| node2 | 8006 | 8081 | 8010 | 4001 |
二 配置Tomcat集群会话复制
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<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="4000" autoBind="100"
selectorTimeout="5000" 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.MessageDispatchInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
</Engine>
三 配置负载均衡
worker.list=loadbalancer,status
worker.tomcat1.port=8009
worker.tomcat1.host=192.168.1.10
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
worker.tomcat2.port=8010
worker.tomcat2.host=192.168.1.11
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=tomcat1,tomcat2
worker.loadbalancer.sticky_session=1
worker.status.type=status
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /path/to/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
<VirtualHost *:80>
ServerName yourdomain.com
JkMount /* loadbalancer
JkMount /jk-status status
</VirtualHost>
upstream tomcat_cluster {
server 192.168.1.10:8080;
server 192.168.1.11:8081;
}
server {
listen 80;
location / {
proxy_pass http://tomcat_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
四 启动与验证
五 常见问题与优化