最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Ubuntu环境Tomcat集群配置指南
时间:2026-06-25 08:44:47 编辑:袖梨 来源:一聚教程网
Ubuntu Tomcat 集群配置指南

一 架构与准备
- 架构建议:前端使用Nginx/Apache HTTP Server + mod_jk/HAProxy做负载均衡,后端部署2–N 个 Tomcat 实例;会话通过 Tomcat 内置的集群会话复制保持可用。
- 节点规划示例:
- 负载均衡:192.168.1.40(Nginx 或 Apache+mod_jk)
- Tomcat A:192.168.1.50:8080(AJP 8009)
- Tomcat B:192.168.1.51:8080(AJP 8009)
- 基础要求:
- 所有节点安装相同版本的 JDK 与 Tomcat,系统时间通过 NTP 同步。
- 各节点能通过主机名解析到非 127.0.0.1的本机地址(检查 /etc/hosts 或网卡地址)。
- 防火墙放行:Tomcat 8080/8009、负载均衡 80/443,以及集群通信端口(见下文)。
- 需要会话粘滞时,负载均衡开启sticky session;若应用可改造,优先使用无状态会话或外部会话存储(如 Redis)。
二 安装与基础配置
- 安装 JDK 与 Tomcat(示例为解压安装,生产建议使用包管理或标准化目录):
- 配置环境变量(/etc/profile 或 systemd 环境文件):
- JAVA_HOME、CATALINA_HOME、PATH
- 验证:java -version、catalina.sh version
- 配置环境变量(/etc/profile 或 systemd 环境文件):
- 统一应用部署:将应用 WAR 放到各实例的 webapps/,或使用外部共享目录/自动化发布。
- 重要提示:集群内各实例的应用版本与配置需保持一致,避免路由与会话兼容性问题。
三 配置 Tomcat 集群与会话复制
方式 A 快速默认集群(适合节点数较少,如**<10**台)
- 在 server.xml 的
中取消注释或新增: - 该默认配置使用组播自动发现成员,适合快速验证与小规模部署。
- 在 server.xml 的
方式 B 显式配置(可控性与可观测性更好)
- 在
内添加如下 Cluster(示例为两台节点,按实际修改 IP/端口): <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> - 关键参数说明:
- Membership(组播):228.0.0.4:45564 为默认组播地址/端口,同一集群需一致;跨网段或云环境常禁用组播,改用静态配置(见下节排错)。
- Receiver:port=4000 为接收端口,单机多实例需不同;address 建议设为本机非回环地址(auto 通常可用)。
- 应用需标记为可分布式:在应用的 WEB-INF/web.xml 中加入
。 - 会话对象需实现 java.io.Serializable,否则复制会失败或不完整。
- 在
四 配置负载均衡
方案 1 Apache HTTP Server + mod_jk
- 安装:sudo apt-get install libapache2-mod-jk
- 配置 /etc/apache2/mods-enabled/jk.conf(或 httpd.conf):
- LoadModule jk_module modules/mod_jk.so
- JkWorkersFile /etc/libapache2-mod-jk/workers.properties
- JkLogFile /var/log/apache2/mod_jk.log
- JkLogLevel info
- JkMount /* loadbalancer
- JkMount /jk-status jkstatus
- workers.properties 示例:
worker.list=loadbalancer,statusworker.tomcat1.type=ajp13worker.tomcat1.host=192.168.1.50worker.tomcat1.port=8009worker.tomcat1.lbfactor=1worker.tomcat2.type=ajp13worker.tomcat2.host=192.168.1.51worker.tomcat2.port=8009worker.tomcat2.lbfactor=1worker.loadbalancer.type=lbworker.loadbalancer.balance_workers=tomcat1,tomcat2worker.loadbalancer.sticky_session=1worker.status.type=status - 如需会话粘滞,保持 sticky_session=1;若应用完全无状态,可关闭粘滞以便更均衡。
方案 2 Nginx 负载均衡(HTTP 转发)
- 配置 /etc/nginx/nginx.conf 的 http 段:
upstream backend {server 192.168.1.50:8080 weight=1 max_fails=3 fail_timeout=20s;server 192.168.1.51:8080 weight=1 max_fails=3 fail_timeout=20s;# 可选:ip_hash; 实现基于客户端 IP 的会话粘滞}server {listen 80;server_name your.domain;location / {proxy_pass http://backend;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;}} - 如需会话粘滞,可使用 ip_hash 或结合 Tomcat 的 JSESSIONID 策略。
- 配置 /etc/nginx/nginx.conf 的 http 段:
五 启动与验证及高可用扩展
启动与验证
- 启动顺序:先 Tomcat 集群,再负载均衡。
- 验证步骤:
- 访问应用首页,确认返回节点 IP 随请求在实例间切换(Nginx 轮询或 mod_jk 转发)。
- 登录后刷新/切换节点,检查会话是否保持(粘滞或复制生效)。
- 查看日志:
- Tomcat:catalina.out、localhost.
.log(关注集群成员加入、复制消息) - mod_jk:/var/log/apache2/mod_jk.log
- Nginx:/var/log/nginx/access.log、error.log
- Tomcat:catalina.out、localhost.
- 部署验证:将应用 WAR 同时部署到各实例 webapps,或观察 FarmWarDeployer(若启用)同步情况。
高可用扩展(可选)
- 在负载均衡层再叠加 Keepalived + VIP,实现主备自动切换:
- Keepalived 配置 VRRP 实例与 虚拟 IP(VIP),两台 Nginx/Apache 互为主备。
- 业务域名指向 VIP,故障时自动漂移,避免单点。
- 在负载均衡层再叠加 Keepalived + VIP,实现主备自动切换:
常见问题与排错
- 组播不通(云环境常见):默认 228.0.0.4:45564 可能被禁用,改用静态成员配置(StaticMembershipInterceptor)或改用 Nginx/HAProxy + AJP/HTTP 直连方式;确认交换机/安全组未拦截组播。
- Receiver 端口冲突:同一机器多实例需设置不同 Receiver port(如 4000/4001)。
- 会话不复制:应用未加
、会话对象未实现 Serializable、复制 Valve 未生效或过滤器配置不当。 - 时间漂移:集群节点需 NTP 同步,否则会影响过期判断与集群稳定性。
- 本机地址为 127.0.0.1:检查 /etc/hosts 主机名映射与网卡地址,确保 Receiver address 可绑定到非回环地址。
相关文章
- 白银之城法索医生 白银之城法索医生角色背景与技能解析 07-01
- 抵抗者官网在哪里 07-01
- 马年兽有多强《魔域口袋版》新年兽攻略 07-01
- 乱涂彩世界洛琪神明怎么玩 07-01
- 如约出行app如何操作 07-01
- 反思日记app如何设置每周开始日期 07-01