VRRP 多节点工作原理
VRRP 多节点工作原理
基本概念
- VRRP 的设计初衷是给一组节点提供一个 虚拟路由器,对外只表现出一个 VIP。
- 协议规定:同一个 VRRP 实例 下始终只有 一个 Master 持有 VIP,其它全部是 Backup。
- Master → 持有 VIP,负责转发流量到Master或Backup;
- Backup → 不持有 VIP,只监听 Master 状态。
优先级机制
节点A (Priority: 100) --> Master
节点B (Priority: 90) --> Backup
节点C (Priority: 80) --> Backup
节点D (Priority: 70) --> Backup
当 Master 故障时,优先级最高的 Backup 会接管成为新的 Master。
多节点配置示例
节点1配置(优先级最高)
# /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100 # 最高优先级advert_int 1authentication {auth_type PASSauth_pass 1234}virtual_ipaddress {192.168.1.100}
}
节点2配置(第二优先级)
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 90 # 第二优先级advert_int 1authentication {auth_type PASSauth_pass 1234}virtual_ipaddress {192.168.1.100}
}
节点3配置(第三优先级)
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 80 # 第三优先级advert_int 1authentication {auth_type PASSauth_pass 1234}virtual_ipaddress {192.168.1.100}
}
故障切换流程
正常状态
Master (Priority: 100) -- 持有 VIP|+-- 发送 VRRP 广播|
Backup1 (Priority: 90) -- 监听 VRRP 广播|
Backup2 (Priority: 80) -- 监听 VRRP 广播|
Backup3 (Priority: 70) -- 监听 VRRP 广播
Master 故障时
1. Master 停止发送 VRRP 广播
2. 所有 Backup 节点检测到超时
3. Backup 节点开始选举:- Backup1 (90) vs Backup2 (80) vs Backup3 (70)- Backup1 胜出,成为新 Master
4. 新 Master 接管 VIP
高级特性
1. 抢占模式(Preempt)
vrrp_instance VI_1 {state BACKUPnopreempt # 非抢占模式priority 100# ... 其他配置
}
- 抢占模式(默认):高优先级节点恢复后会抢回 Master 角色
- 非抢占模式:即使高优先级节点恢复,当前 Master 也不会让出
2. 优先级动态调整
vrrp_script chk_nginx {script "/etc/keepalived/check_nginx.sh"interval 2weight -20 # 检查失败时优先级减20
}vrrp_instance VI_1 {state BACKUPpriority 100track_script {chk_nginx}
}
3. 多组 VRRP 实例
可以配置多个 VRRP 实例实现负载分担:
# 节点1:VI_1 的 Master,VI_2 的 Backup
vrrp_instance VI_1 {state MASTERpriority 100virtual_ipaddress {192.168.1.100}
}vrrp_instance VI_2 {state BACKUPpriority 90virtual_ipaddress {192.168.1.101}
}# 节点2:VI_1 的 Backup,VI_2 的 Master
vrrp_instance VI_1 {state BACKUPpriority 90virtual_ipaddress {192.168.1.100}
}vrrp_instance VI_2 {state MASTERpriority 100virtual_ipaddress {192.168.1.101}
}
实际应用场景
1. 数据库集群(3节点)
主数据库 (Priority: 100)
从数据库1 (Priority: 90) -- 同步延迟较小
从数据库2 (Priority: 80) -- 同步延迟较大
2. Web服务集群(4节点)
Web1 (Priority: 100) -- 配置最高
Web2 (Priority: 95) -- 配置次高
Web3 (Priority: 90) -- 配置中等
Web4 (Priority: 85) -- 配置较低
3. 混合优先级策略
# 基于服务器性能和网络位置设置优先级
vrrp_instance VI_1 {state BACKUPpriority 100 # 基础优先级track_script {chk_cpu_load # CPU 负载高时 -30chk_mem_usage # 内存不足时 -20chk_service # 服务异常时 -50}
}
注意事项
- 优先级范围:1-254(0和255保留)
- 相同优先级:如果多个节点优先级相同,IP 地址较大的节点优先
- 网络分区:需要考虑脑裂问题,可能需要额外的仲裁机制
- 广播风暴:节点过多时要注意 VRRP 广播对网络的影响
- 典型模式: 1 主 + N 备,通过优先级和抢占来实现层级式 Failover。
VRRP 的多节点支持使得它非常适合构建高可用集群,不仅限于简单的主备模式,可以根据实际需求灵活配置。