5.9 KiB
5.9 KiB
VRRP 环境兼容性说明
支持的环境
✅ 完全支持
- 物理服务器: 完全支持所有功能
- 本地虚拟机(网络配置正确):
- KVM/QEMU: 完全支持
- Proxmox VE: 完全支持
- VMware ESXi: 需要启用混杂模式
- VirtualBox: 需要桥接网络 + 混杂模式
- Hyper-V: 需要外部网络交换机
⚠️ 部分支持
- 某些私有云环境: 取决于网络配置
- Docker 容器: 需要
--privileged和--net=host模式 - Kubernetes: 需要 hostNetwork 模式
❌ 不支持
- AWS EC2: 不支持组播,无法运行 VRRP
- 阿里云 ECS: 不支持组播,无法运行 VRRP
- Azure VM: 默认不支持,需要特殊配置
- Google Cloud: 默认不支持组播
- 大多数公有云: 网络虚拟化层面禁用了组播
为什么云环境不支持 VRRP?
- 组播协议限制: VRRP 使用 IP 组播地址 224.0.0.18,云环境网络虚拟化层通常过滤组播流量
- 安全考虑: 云厂商不希望用户自行管理 IP 漂移,避免 IP 冲突
- 网络架构: SDN (软件定义网络) 架构不支持传统的 MAC 地址漂移
云环境替代方案
AWS
方案1: Elastic IP (EIP)
- 使用 AWS API 动态绑定/解绑 EIP
- 结合健康检查脚本实现故障切换
方案2: Application Load Balancer (ALB)
- 7层负载均衡
- 自动健康检查和故障切换
方案3: Network Load Balancer (NLB)
- 4层负载均衡
- 支持静态 IP
阿里云
方案1: 高可用虚拟IP (HaVip)
- 阿里云提供的 VRRP 替代方案
- 支持主备切换
方案2: 负载均衡 SLB
- 4层/7层负载均衡
- 自动健康检查
Azure
方案1: Azure Load Balancer
- 标准负载均衡器
- 支持高可用性
方案2: Azure Traffic Manager
- DNS 级别的流量管理
- 支持多区域故障切换
虚拟化环境配置指南
VMware ESXi
- 选择虚拟机
- 编辑设置 → 网络适配器
- 展开 "高级选项"
- 混杂模式: 允许
- MAC 地址更改: 允许
- 伪传输: 允许
VirtualBox
- 虚拟机设置 → 网络
- 连接方式: 桥接网卡
- 高级 → 混杂模式: 全部允许
- 高级 → 接入网线: 勾选
KVM/libvirt
<interface type='bridge'>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
Proxmox VE
默认配置即可支持,使用 vmbr0 桥接网络。
检测脚本使用
运行环境检测脚本:
# 下载并运行检测脚本
sudo ./deployment/check-env.sh
脚本会自动检测:
- ✓ 运行权限(root)
- ✓ 操作系统兼容性
- ✓ 网络接口状态
- ✓ VIP 添加能力
- ✓ VRRP 协议支持
- ✓ 防火墙配置
- ✓ 内核参数
- ✓ 服务冲突检测
- ✓ 组播支持
- ✓ 虚拟化环境
- ✓ 云环境限制
常见问题排查
1. VIP 无法添加
症状: ip addr add 命令失败
可能原因:
- 权限不足(需要 root)
- IP 地址冲突
- 网络接口不存在或未启动
- 子网掩码错误
解决方法:
# 检查网卡状态
ip link show eth0
# 检查 IP 冲突
arping -I eth0 192.168.1.100
# 手动测试添加
sudo ip addr add 192.168.1.100/24 dev eth0
2. VIP 添加成功但无法 Ping 通
可能原因:
- 防火墙阻止 ICMP
- 路由配置错误
- ARP 表未更新
- 网络隔离(VLAN)
解决方法:
# 发送免费 ARP
arping -c 3 -A -I eth0 192.168.1.100
# 检查路由
ip route show
# 检查防火墙
iptables -L -n | grep ICMP
3. VRRP 报文无法发送/接收
症状: 双节点无法选举 Master
可能原因:
- 组播被过滤
- 防火墙阻止协议 112
- 网络交换机禁用组播
- 虚拟机混杂模式未启用
解决方法:
# 抓包验证 VRRP 报文
sudo tcpdump -i eth0 proto 112 -v
# 检查组播路由
ip maddr show eth0
# 添加防火墙规则
sudo iptables -A INPUT -p 112 -j ACCEPT
sudo iptables -A OUTPUT -p 112 -j ACCEPT
4. 云环境 VRRP 不工作
确认方法:
# 运行检测脚本
sudo ./deployment/check-env.sh
# 手动检查云环境
curl -s -m 1 http://169.254.169.254/latest/meta-data/instance-id
解决方案: 使用云厂商提供的高可用方案(见上方"云环境替代方案")
网络环境要求
必需条件
- 二层网络连通(同一 VLAN/子网)
- 支持组播(224.0.0.18)
- 允许 ARP 广播
- 网卡支持混杂模式(虚拟机环境)
推荐配置
- 千兆以上网络
- 低延迟网络(< 10ms)
- 禁用 STP 或配置 PortFast(交换机)
- 专用 VLAN(生产环境)
测试步骤
1. 基础网络测试
# 测试网卡连通性
ping -c 3 <对端IP>
# 测试组播连通性(需要两台机器)
# 机器 A
iperf3 -s -B 224.0.0.18
# 机器 B
iperf3 -c 224.0.0.18 -u -b 1M
2. VIP 手动测试
# 添加 VIP
sudo ip addr add 192.168.1.100/24 dev eth0
# 发送免费 ARP
sudo arping -c 3 -A -I eth0 192.168.1.100
# 从其他机器 ping VIP
ping 192.168.1.100
# 删除 VIP
sudo ip addr del 192.168.1.100/24 dev eth0
3. VRRP 功能测试
# 使用最小配置启动
sudo ./go-alived --config config.mini.yaml --debug
# 另一个终端监控网卡
watch -n 1 "ip addr show eth0 | grep inet"
# 抓包验证
sudo tcpdump -i eth0 proto 112 -v
生产环境部署建议
- 使用专用网络: 将 VRRP 流量与业务流量隔离
- 配置监控: 监控 VIP 状态、VRRP 状态变化
- 测试故障切换: 定期测试主备切换是否正常
- 文档记录: 记录网络拓扑、IP 分配、故障处理流程
- 备份配置: 定期备份 go-alived 配置文件