主从服务器配置同步需持续保障一致性、可验证性与自动化,涵盖nginx全配置树、keepalived三参数严格配对、nginx健康检查脚本、基础环境镜像级统一及vip动态绑定。

主从服务器配置同步不是“拷贝一次就完事”,而是确保两台机器在服务层面完全等效的持续过程。核心在于一致性、可验证性和自动化支撑,否则 VIP 切换后可能返回错误页面或 502,导致切换失败。
配置文件内容必须逐字一致
Nginx 配置同步不是只同步 /etc/nginx/nginx.conf,而是整个生效配置树:包括主配置、server 块、upstream 定义、root 路径、proxy_pass 地址、SSL 证书路径、甚至 index.html 内容。任何一处差异(比如主节点 proxy_pass 到 192.168.1.201:8001,备节点写成 192.168.1.202:8001)都会造成切换后服务异常。
- 建议使用
rsync -avz /etc/nginx/ user@backup:/etc/nginx/批量同步,排除临时文件和日志目录 - 每次修改后,在两台机器上都执行
nginx -t校验语法,再systemctl reload nginx - 静态页加运行标识(如
<h1>WEB01 - MASTER</h1>和<h1>WEB02 - BACKUP</h1>),便于 curl 直接验证实际响应
Keepalived 角色参数严格配对
VRRP 不靠主机名或 IP 判断主备,而依赖三个硬性参数共同生效:state、priority、virtual_router_id。三者中任一不匹配,两节点就无法组成心跳组,VIP 永远不会漂移。
- 主节点:
state MASTER、priority 100、virtual_router_id 51 - 备节点:
state BACKUP、priority 90、virtual_router_id 51(必须完全相同) - 检查网卡名是否真实一致(用
ip a确认是ens33还是eth0),interface字段写错会导致 VIP 绑定失败
必须配套 Nginx 健康检查脚本
Keepalived 默认只检测网络连通性,若 Nginx 进程僵死但进程仍在(假活),VIP 不会迁移。必须通过自定义脚本主动探测 Nginx 实际服务能力。
- 脚本示例:
/etc/keepalived/nginx_check.sh中用curl -s --fail http://127.0.0.1:80/health || exit 1 - Keepalived 配置中启用该脚本,并设置
weight -5:检测失败时降低优先级,触发重新选举 - 脚本需有执行权限:
chmod +x /etc/keepalived/nginx_check.sh,且 Keepalived 进程能读取
基础环境保持镜像级一致
操作系统、内核、SELinux 状态、防火墙规则、Nginx 版本、甚至 OpenSSL 库版本,都应尽量统一。细微差异可能导致 SSL 握手失败或模块加载异常。
- 关闭 firewalld 或放行端口 80/443 + VRRP 协议(IP 协议号 112)
- SELinux 设为 permissive:
setenforce 0,避免拦截 VRRP 组播(目标地址 224.0.0.18) - 两台机器使用同一子网静态 IP,VIP(如 192.168.1.100)不配置在任何物理网卡上,由 Keepalived 动态绑定











