keepalived 支持同一服务器绑定多个 vip,需为每个 vip 配置独立 vrrp_instance,且 virtual_router_id 必须唯一(1–255);各实例可指定不同网卡、vip、优先级、健康检查及状态,并支持跨网段部署与独立漂移。

Keepalived 支持在同一台服务器上绑定并管理多个 VIP(虚拟 IP),只需为每个 VIP 单独定义一个 vrrp_instance 块,且确保它们的 virtual_router_id 互不相同。多个 VIP 可以独立漂移、独立选举主备,互不影响。
每个 VIP 对应独立的 vrrp_instance
Keepalived 不允许两个实例使用相同的 virtual_router_id,否则会启动失败或行为异常。因此,要实现多个 VIP 漂移,必须为每个 VIP 配置专属的实例:
- 每个
vrrp_instance设置唯一的virtual_router_id(范围 1–255) - 指定各自绑定的网卡(
interface)和 VIP 地址(virtual_ipaddress) - 可分别设置优先级(
priority)、健康检查脚本(track_script)和状态(state MASTER/BACKUP)
支持跨网段 VIP 绑定不同网卡
若多个 VIP 属于不同子网(例如 192.168.1.100/24 和 10.0.0.100/24),可将它们分别绑定到不同物理网卡或别名接口:
- 在
vrrp_instance中明确指定interface eth0或interface eth1 - VIP 地址需与对应网卡所在网段一致,避免 ARP 响应失败
- 确保底层网络允许该 VIP 的二层可达性(如交换机未禁用 gratuitous ARP)
健康检查与漂移完全解耦
多个 VIP 的漂移逻辑彼此隔离,但可通过脚本联动增强业务语义:
- 每个
vrrp_instance可挂载独立的vrrp_script,例如分别检测 Nginx、MySQL、Redis 端口 - 也可复用同一脚本,通过参数区分检查目标,返回值影响对应实例的权重
- 若需“全服务正常才持有所有 VIP”,可在脚本中聚合多个服务状态,统一控制权重升降
注意共用资源与冲突规避
多个 VIP 共存时需关注底层资源协调:
- 避免多个实例监听同一 UDP 端口(默认 VRRP 使用 224.0.0.18 多播地址,端口固定,通常无冲突)
- 若启用单播(
unicast_peer),需为每个实例单独配置对端地址列表 - 日志中通过
instance name区分事件,排查时建议为每个vrrp_instance起有意义的名称(如VI_nginx、VI_db)











