在 CentOS 上构建 Java 应用的高可用
一、总体架构与组件
二、快速落地步骤
三、关键配置示例
upstream tomcat {
server 192.168.77.152:8080 max_fails=2 fail_timeout=10s;
server 192.168.77.153:8080 max_fails=2 fail_timeout=10s;
# least_conn; # 可选:最少连接
}
server {
listen 80;
server_name your.domain;
location / {
proxy_pass http://tomcat;
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;
}
}
global_defs { router_id LVS_DEVEL }
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication { auth_type PASS auth_pass YourPass }
virtual_ipaddress { 192.168.77.188/24 }
track_script {
chk_tomcat
}
}
vrrp_script chk_tomcat {
script "/usr/local/bin/check_tomcat.sh"
interval 2
weight -20
fall 2
rise 2
}
#!/usr/bin/env bash
curl -f http://localhost:8080/health || exit 1
说明:健康检查脚本应返回 0(健康)或 非 0(异常);Keepalived 根据脚本退出码与权重自动切换 VIP。上述 Nginx 配置与 Keepalived+脚本的做法已在多实例 Tomcat 场景中验证可行。四、验证与运维要点
五、常见陷阱与优化建议