最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
怎么利用 Keepalived 实现 Nginx 虚拟 IP 漂移
时间:2026-06-19 09:11:52 编辑:袖梨 来源:一聚教程网
Keepalived 结合 Nginx 实现 VIP 漂移,核心是用 VRRP 协议自动选举主节点并绑定虚拟 IP;主节点故障时备节点秒级接管,用户无感知。需准备双机环境、配置健康检查脚本、设置主备优先级与认证,并验证 VIP 漂移及服务连续性。
Keepalived 结合 Nginx 实现 VIP 漂移,核心是用 VRRP 协议让多台 Nginx 服务器自动选举主节点,将同一个虚拟 IP 绑定到当前主节点网卡上;当主节点故障时,备节点秒级接管 VIP,用户无感知切换。
一、基础环境准备
确保至少两台服务器(例如 node1 和 node2),均安装好 Nginx 和 Keepalived,并能互相 ping 通。VIP(如 192.168.10.100)需与真实 IP 在同一网段,且未被其他设备占用。关闭防火墙或放行 VRRP 组播(目的地址 224.0.0.18,协议号 112):
- CentOS/RHEL:执行 systemctl stop firewalld 或添加规则允许 proto 112
- Ubuntu/Debian:ufw 允许 proto vrrp 或临时禁用 ufw
- 确认内核支持 VRRP:grep -i vrrp /boot/config-$(uname -r) 应返回 CONFIG_IP_VS=y 或类似项
二、Nginx 健康检查配置
Keepalived 不直接监控 Nginx 进程,而是通过自定义脚本检测其服务能力(比如能否响应 HTTP 请求)。在两台机器上创建检测脚本:
/etc/keepalived/check_nginx.sh#!/bin/bashif ! curl -s --head http://127.0.0.1:80 | grep "200 OK" > /dev/null; then systemctl stop keepalivedfi
赋予执行权限:chmod +x /etc/keepalived/check_nginx.sh,并确保 Nginx 已启动且首页可访问(如返回 200)。
三、Keepalived 主配置(node1 为主,node2 为备)
编辑 /etc/keepalived/keepalived.conf,关键字段说明:
- state MASTER/BACKUP:主节点设为 MASTER,备节点设为 BACKUP
- priority:主节点优先级更高(如 100),备节点略低(如 90),数值越大越可能当选
- virtual_router_id:同一集群必须相同(1–255),避免冲突
- advert_int:VRRP 通告间隔,默认 1 秒
- authentication:主备间认证方式(PASS 或 AH),密码一致即可
- virtual_ipaddress:定义 VIP 及子网掩码,如 192.168.10.100/24 dev eth0
- track_script:绑定上面写的健康检查脚本,失败时触发降权或停服
示例 node1(主)配置节选:
vrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" interval 2 weight -5}vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.10.100/24 dev eth0 } track_script { chk_nginx }}
四、验证与排错要点
启动 Keepalived 后,执行以下操作确认效果:
- 在主节点运行 ip addr show eth0,应看到 VIP 出现在输出中;备节点不应出现
- 用 tcpdump -i eth0 host 224.0.0.18 可捕获 VRRP 广播报文
- 手动停掉主节点的 Nginx,约 2 秒后 VIP 应漂移到备节点(检查 ip addr 输出)
- 访问 http://192.168.10.100,始终应返回 Nginx 欢迎页,不中断
- 常见问题:SELinux 阻止脚本执行(setsebool -P keepalived_read_config on)、VIP 被 ARP 缓存延迟(加 arp_ignore/arp_announce 内核参数可优化)
相关文章
- 明末渊虚之羽版本奖励错误如何补偿 07-01
- 原神峡谷盈月之镜解谜方法 07-01
- 末日进化如何升级人物卡 07-01
- 魔兽世界卡格罗什的命运背包位置在哪 07-01
- 沙石镇时光体力恢复方法大全 沙石镇时光快速回满体力的实用技巧 07-01
- 空洞骑士寻神者篇章攻略 07-01