Keepalived 双主(Active‑Active)模式

Keepalived 双主(Active‑Active)模式

在两台 Keepalived 节点(示例:KA1、KA2)上实现"双主"/Active‑Active(两个 VIP 分别由不同节点作为 MASTER)配置的要点、示例配置与测试方法,方便快速复现与排查。


1 概要与拓扑

  • 目标:在两台节点上分别承载不同的虚拟 IP(VIP),例如:
    • VIP A(172.25.254.100)由 KA1 作为 MASTER 提供服务(WEB)
    • VIP B(172.25.254.200)由 KA2 作为 MASTER 提供服务(DB)
  • 优点:不同服务可以并行运行在不同节点上,提高资源利用与可靠性。
  • 要点:每个 vrrp_instance 使用不同的 virtual_router_id;在两台节点上,对同一 instance 的 state 与 priority 要互补(一个较高为 MASTER,一个较低为 BACKUP)。

2 配置要点(注意事项)

  • 每个 vrrp_instance 的 virtual_router_id 必须唯一(不同 VIP 使用不同 id)。
  • MASTER 与 BACKUP 的 priority 值需区分:MASTER > BACKUP。
  • 若希望 Backup 在短时间内不抢回 MASTER,可设置 preempt_delay 或禁用 preempt(根据场景选择)。
  • 若需要执行告警/业务切换脚本,可使用 notify_master / notify_backup / notify_fault 回调(脚本需可执行且注意 PATH)。
  • enable_script_security + script_user:如开启,确保脚本权限与用户设置兼容。
  • 检查网络是否允许 VRRP 报文(组播/协议 112)通过、接口名正确(eth0 / ensX 等)。
  • 使用 ip addr / ifconfig 验证 VIP 是否被正确添加与移除。

3 示例配置(分别在 KA1 与 KA2 上)

在两台机器的 /etc/keepalived/keepalived.conf 中,增加两个 vrrp_instance:WEB_VIP 与 DB_VIP。

示例------KA1(WEB MASTER,DB BACKUP):

bash 复制代码
# /etc/keepalived/keepalived.conf(KA1)
vrrp_instance WEB_VIP {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:0
    }
}

vrrp_instance DB_VIP {
    state BACKUP
    interface eth0
    virtual_router_id 52
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.200/24 dev eth0 label eth0:1
    }
}

示例------KA2(WEB BACKUP,DB MASTER):

bash 复制代码
# /etc/keepalived/keepalived.conf(KA2)
vrrp_instance WEB_VIP {
    state BACKUP
    interface eth0
    virtual_router_id 51
    preempt_delay 10         # 可选:避免频繁抢主
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:0
    }
}

vrrp_instance DB_VIP {
    state MASTER
    interface eth0
    virtual_router_id 52
    preempt_delay 10
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.200/24 dev eth0 label eth0:1
    }
}

说明:

  • 同一 VIP 对应的 virtual_router_id 在两台机器上相同(例如 WEB_VIP 两端都用 51),但 prioritystate 不同以产生 MASTER/BACKUP 关系。
  • 不同 VIP 之间要使用不同的 virtual_router_id(例如 51 与 52)。

4 重启与验证

复制代码
[root@KA1 ~]# systemctl restart keepalived.service
[root@KA2 ~]# systemctl restart keepalived.service

#测试
[root@KA1 ~]# ifconfig

测试故障转移:

  • 在当前 WEB 主节点上停止 keepalived: systemctl stop keepalived.service

  • 在另一节点上观察是否获取到 VIP(172.25.254.100)

  • 恢复后注意是否按预期抢回(受 preempt / preempt_delay 控制)

    故障模拟测试:
    [root@KA1 ~]# systemctl stop keepalived.service
    [root@KA2 ~]# ifconfig

ka1的vip迁移到ka2上

现在模拟ka2故障

复制代码
[root@KA2 ~]# systemctl stop keepalived.service
[root@KA1 ~]# ifconfig

5 常见问题与排查

  • VIP 两端都出现 MASTER(split‑brain):
    • 检查两端 virtual_router_id 是否相同且认证(auth_pass)一致。
    • 检查网络是否丢失 VRRP 报文(组播或协议 112 被防火墙/交换机阻断)。
    • 检查系统时间偏差不会直接导致 split‑brain,但建议保持时间同步。
  • VIP 无法迁移或不出现:
    • 确认 interface 名称正确(与 ip addr 输出一致)。
    • 确认 priority、state 配置无误,且 keepalived 日志没有错误。
  • 频繁抖动(flapping):
    • 调整 advert_intpreempt_delay 或使用 track_script/track_interface 做更细粒度健康检测。
  • 脚本回调不执行:
    • 确认脚本可执行(chmod +x),并使用绝对路径调用系统命令(避免 PATH 问题)。
    • 若开启 enable_script_security,确保 script_user 有权限运行脚本。

ack_script/track_interface 做更细粒度健康检测。

  • 脚本回调不执行:
    • 确认脚本可执行(chmod +x),并使用绝对路径调用系统命令(避免 PATH 问题)。
    • 若开启 enable_script_security,确保 script_user 有权限运行脚本。
相关推荐
HalvmånEver3 小时前
Linux:进程 vs 线程:资源共享与独占全解析(线程四)
java·linux·运维
zzzsde3 小时前
【Linux】进程(2):进程概念与操作理解
linux·运维·服务器
郝学胜-神的一滴3 小时前
Linux Socket模型创建流程详解
linux·服务器·开发语言·网络·c++·程序人生
天才奇男子3 小时前
《深度解析HAProxy七层代理:原理、配置与最佳实践》
linux·运维·微服务·云原生
Morantkk3 小时前
股票复盘11.20-11.27
服务器
交换机路由器测试之路3 小时前
交换机专题:什么是ALS(激光器自动关断)
运维·网络·以太网·交换机·节能
浪客灿心4 小时前
Linux的Ext系列文件系统
linux·运维·服务器·c语言
速易达网络4 小时前
linux命令大全
linux·运维·excel
·云扬·4 小时前
Redis运维实战:大key与热key排查优化、监控指标及内存策略全解析
运维·数据库·redis