Skip to content

Keepalived-工作模式

抢占模式

工作原理

抢占模式是 Keepalived 的默认行为。当优先级更高的节点恢复在线时,它会立即尝试重新获取 VIP 控制权。

bash
vrrp_instance VI_1 {
    state MASTER
    priority 100       # 主节点优先级
    # 不设置 nopreempt 即为抢占模式
    preempt_delay 0   # 立即抢占(默认)
}

工作流程

  1. 主节点故障
  2. 备节点(优先级90)接管 VIP
  3. 原主节点恢复
  4. 原主节点立即发送 VRRP 通告
  5. 备节点检测到更高优先级节点
  6. 备节点释放 VIP
  7. 原主节点重新获得 VIP

特点

特性说明
切换速度快(毫秒级)
VIP 稳定性可能频繁切换
适用场景主节点性能明显优于备节点
配置要求默认模式,无需特殊配置

非抢占模式

工作原理

启用 nopreempt参数后,即使主节点恢复,也不会主动抢回 VIP 控制权。

bash
vrrp_instance VI_1 {
    state BACKUP       # 建议所有节点设为BACKUP
    priority 100       # 主节点初始优先级
    nopreempt          # 关键参数:启用非抢占模式
    preempt_delay 300  # 延迟时间(可选)
}

工作流程

  1. 主节点故障
  2. 备节点接管 VIP
  3. 原主节点恢复
  4. 原主节点不会立即抢占 VIP
  5. 备节点继续持有 VIP
  6. 需要手动干预或等待备节点故障才会切换

特点

特性说明
切换速度故障切换快,恢复切换慢
VIP 稳定性高(VIP 不会频繁移动)
适用场景稳定服务优先于快速恢复
配置要求必须设置 nopreempt

混合模式:延迟抢占

工作原理

结合抢占模式和非抢占模式的优点,设置抢占延迟时间。

bash
vrrp_instance VI_1 {
    state BACKUP
    priority 100
    # 不设置 nopreempt
    preempt_delay 300  # 等待300秒后再抢占
}

工作流程

  1. 主节点故障
  2. 备节点接管 VIP
  3. 原主节点恢复
  4. 原主节点等待 preempt_delay
  5. 延迟结束后,原主节点尝试重新获取 VIP

适用场景

  • 需要主节点提供服务,但允许短暂延迟
  • 避免服务刚恢复就立即切换导致的不稳定
  • 典型配置:preempt_delay 300(5分钟)

模式对比表

特性抢占模式非抢占模式延迟抢占
配置参数默认nopreemptpreempt_delay
主节点恢复行为立即抢占不抢占延迟后抢占
VIP稳定性
故障切换速度
恢复切换速度慢(需手动)可配置
适用场景主节点性能优先服务稳定性优先平衡稳定与恢复
典型配置数据中心内部生产环境大多数场景