阅读量:1
架构与组件
- 前端入口:使用 Nginx 作为反向代理与负载均衡,将请求分发到后端多个 Tomcat 实例。
- 会话保持:Tomcat 节点间启用内置集群的 会话复制(DeltaManager),保证节点故障时会话不丢失。
- 入口高可用:在 Nginx 前部署 Keepalived 提供 VIP,实现主备自动切换。
- 典型拓扑:两台 Nginx+Keepalived(主/备),两台或多台 Tomcat 实例。
部署步骤
- 准备环境
- 安装 JDK 8(所有节点一致版本),配置环境变量;安装并启动 Tomcat(建议同版本)。
- 规划实例端口,避免同机多实例端口冲突(如 8080/8081,对应 8005/9005 关闭端口、8009/8010 AJP 端口)。
- 配置 Tomcat 集群与会话复制
- 在 server.xml 的
上设置唯一 jvmRoute(如 node1、node2),并加入 。 - 在 conf/context.xml 的
中启用集群会话管理(DeltaManager),并为需要会话粘滞的应用在 web.xml 增加 。
- 在 server.xml 的
- 配置 Nginx 负载均衡
- 在 /etc/nginx/conf.d/tomcat.conf 定义 upstream 指向各 Tomcat 的 8080 端口,location 中使用 proxy_pass 并传递 Host/X-Real-IP/X-Forwarded-For/X-Forwarded-Proto 等头。
- 配置 Keepalived 主备
- 两台 Nginx 分别部署 Keepalived,主节点 state=MASTER、备节点 state=BACKUP,设置 virtual_router_id 一致、priority 主高备低,配置 virtual_ipaddress(VIP);启用 vrrp_instance 与认证。
- 启动与验证
- 启动 Tomcat → 启动 Nginx → 启动 Keepalived;访问 VIP 验证轮询与故障切换。
关键配置示例
- Nginx 负载均衡(/etc/nginx/conf.d/tomcat.conf)
http {
upstream tomcat_cluster {
server 192.168.205.152:8080 max_fails=3 fail_timeout=30s;
server 192.168.205.153:8080 max_fails=3 fail_timeout=30s;
}
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;
}
}
}
- Tomcat 集群与会话复制(server.xml 片段)
- Keepalived 主节点(/etc/keepalived/keepalived.conf 片段)
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication { auth_type PASS; auth_pass 42 }
virtual_ipaddress { 192.168.205.135/24 }
}
- 应用开启会话分发(WEB-INF/web.xml)
- 健康检查与故障转移要点
- Nginx 使用 max_fails/fail_timeout 进行后端健康检查与摘除;Keepalived 通过 VRRP 实现 VIP 漂移,主节点宕机后 VIP 自动漂移至备节点。
验证与运维
- 会话粘滞与复制验证
- 部署测试页打印 SessionID 与服务器标识,刷新与关闭节点验证会话是否保持与复制生效。
- 健康检查与摘除
- 停止某 Tomcat 实例,Nginx 应在 fail_timeout 后将实例标记为不可用并继续服务其余实例。
- 主备切换演练
- 停止主 Nginx 或关闭网卡,观察 VIP 是否漂移至备机、访问是否不受影响。
- 监控与日志
- 建议接入 Prometheus + Grafana 监控 Tomcat/Nginx 指标,集中日志便于排障。
常见问题与优化
- 组播与网络
- Tomcat 集群默认使用 UDP 组播 228.0.0.4:45564,确保云服务器或容器网络策略放通;跨机房/跨 VPC 建议改用 TCP 单播 或外置会话存储。
- 会话复制策略
- 节点多且会话较大时,考虑 BackupManager 或外置 Redis/Memcached 集中会话,降低复制风暴。
- 单点风险
- 仅一台 Nginx 仍是单点,生产建议 双机 + Keepalived VIP;对外域名解析到 VIP。
- 启动顺序
- 先启动 Tomcat 再启动 Nginx/Keepalived,避免转发到未就绪实例。
- 安全加固
- 限制管理端口与 AJP 暴露面,启用防火墙,必要时仅内网开放。
以上就是关于“centos上tomcat高可用性配置”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm