vrrp是什么_
2026/7/23大约 3 分钟
梓涵,既然你已经玩到了“互为主备”和“秒级自愈”,那 VRRP 就是你必须吃透的底层逻辑。它是 Keepalived 的“心脏”,也是面试官最喜欢深挖的协议细节。
1. 什么是 VRRP?
VRRP (Virtual Router Redundancy Protocol),全称“虚拟路由冗余协议”。
它的核心任务只有一件事:把多台物理路由器(或负载均衡器)虚拟成一台“逻辑路由器”,并给它一个 VIP(虚拟 IP)。
- 痛点:如果你的内网机器网关只指向一台真实物理机,那这台机器挂了,全网就断了。
- 解决方案:VRRP 让一群物理机竞选出一个“老大”(Master),老大负责扛 VIP。如果老大不回话了,剩下的“小弟”(Backup)里立刻选个新的出来接管 VIP。
2. VRRP 的工作流程(面试高频考点)
面试官通常会问:“两个 LB 之间是怎么知道对方死活的?”你要按这三个阶段回答:
- 选举阶段:
- 比较 Priority(优先级):谁高谁当 Master。
- 优先级一样?比较 IP 地址:谁大谁当 Master。
- 宣告阶段(心跳):
- Master 节点会定期(默认每秒)发送 VRRP 通告报文(这是基于组播地址
224.0.0.18的)。 - 这个报文就像在喊:“我还活着!我还活着!”
- 失效检测阶段:
- Backup 节点如果连续 3 个周期(Master_Down_Interval)没收到老大的喊话。
- 它就认为老大“驾崩”了,立刻把自己切换成 Master 状态,并发送 免费 ARP(Gratuitous ARP),告诉交换机:“现在 VIP
192.168.10.100的 MAC 地址是我了!”
3. VRRP 报文里藏着什么秘密?
为什么你的“互为主备”需要两个不同的 virtual_router_id?看报文内容就明白了:
- Virtual Router ID (VRID):一组 VRRP 设备的唯一 ID。如果 ID 一样,两组设备就会互相打架。
- Adver Int (Advertisement Interval):心跳频率。
- VIP 地址:这组设备共同维护的虚拟 IP。
4. 💡 梓涵的“真实感”深度问题:什么是“脑裂”?
这是 VRRP 架构中最致命的问题,也是你面试时的加分项。
现象:由于中间的网线断了或防火墙拦住了组播报文,两台 LB 互相听不到对方的心跳,于是它们都觉得自己是老大,都去抢占 VIP。
后果:VIP 会在局域网内疯狂闪烁,客户端连接一会儿通一会儿断。
你的解决方案(落地感):
“为了防止 VRRP 脑裂,我在 ZH-Kinger 中做了三层防护:
- 物理链路冗余:增加心跳专用的网线。
- 配置防火墙放行:确保
firewalld允许vrrp协议的组播包通过。 - 脚本仲裁(Check Script):我在 Keepalived 里写了一个
vrrp_script。如果 LB 发现自己 ping 不通外网网关,即使它没收到对方的心跳,也会主动降低自己的优先级,放弃抢占 Master。”
5. 总结:VRRP 和 Keepalived 的关系
- VRRP 是“法律/协议”:规定了怎么选老大、怎么发心跳。
- Keepalived 是“实现/执行者”:它是 Linux 下实现 VRRP 协议的一个软件工具,顺便还把 LVS 的管理功能给集成了。
梓涵,现在你应该明白为什么两个 LB 必须配置不同的 **priority** 了吧?你想让我帮你写一个专门监控 VRRP 报文的 **tcpdump** 命令吗?当你亲眼看到那些每秒跳动的组播包,你对 VRRP 的理解就真正“落地”了。
Would you like me to show you the specific command to capture and analyze VRRP heartbeats?
