keepalived高可用与负载均衡笔记

一、核心概念

  • Keepalived :基于 VRRP 协议 实现高可用(HA) ,同时支持 4 层负载均衡(LVS)。
  • 高可用:解决单点故障,主节点挂掉自动切换到备节点。
  • 负载均衡:将请求分发到多台后端服务器,提升并发与性能。
  • VRRP :虚拟路由冗余协议,一组设备对外提供 VIP(虚拟 IP)

二、核心角色

  1. Master 主节点
    • 持有 VIP,对外提供服务
    • 发送 VRRP 广播报文
  2. Backup 备节点
    • 监听 Master 状态
    • Master 宕机后自动抢占为 Master
  3. VIP 虚拟 IP
    • 对外统一入口,与业务 IP 无关
  4. LVS
    • Linux 内核实现的 4 层负载均衡,Keepalived 直接管理

三、工作原理(高可用)

  1. 主备配置相同 VRRP 组
  2. Master 周期发送通告
  3. Backup 收不到报文(默认 3*advert_int)认为 Master 故障
  4. Backup 根据 优先级(priority) 选举新 Master
  5. 新 Master 绑定 VIP,发送免费 ARP,刷新网关 / 交换机 MAC 表
  6. 原 Master 恢复后可配置抢占 / 非抢占模式

四、Keepalived 三大模块

  1. VRRP 模块:实现高可用
  2. Health-check 健康检查:检测后端服务存活
  3. LVS 模块:实现 4 层负载均衡

五、典型架构

1)纯高可用(常用)

  • Nginx + Keepalived
  • Keepalived 只做 VIP 漂移,Nginx 做 7 层负载均衡

2)高可用 + 4 层负载均衡

  • Keepalived(LVS)+ 后端 RS(Real Server)
  • 直接用 LVS 做转发,性能更高

六、关键配置要点

1. 全局配置

plaintext

复制代码
global_defs {
  router_id LVS_01  # 本节点标识,唯一
}

2. VRRP 实例

plaintext

复制代码
vrrp_instance VI_1 {
  state MASTER|BACKUP
  interface eth0        # 网卡
  virtual_router_id 51  # 组ID,同组一致
  priority 150          # 优先级,主>备
  advert_int 1          # 通告间隔(s)
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  virtual_ipaddress {
    192.168.1.100/24    # VIP
  }
}

3. 负载均衡 LVS 配置

plaintext

复制代码
virtual_server 192.168.1.100 80 {
  delay_loop 6          # 健康检查周期
  lb_algo rr|wrr|lc|wlc  # 调度算法
  lb_kind DR|NAT|TUN     # 转发模式
  protocol TCP

  real_server 192.168.1.11 80 {
    weight 1
    TCP_CHECK {
      connect_timeout 3
    }
  }
  real_server 192.168.1.12 80 {
    weight 1
    TCP_CHECK {
      connect_timeout 3
    }
  }
}

七、LVS 三种转发模式

  1. NAT
    • 进出都经过 LVS
    • 配置简单,LVS 成为瓶颈
  2. DR(Direct Route,生产最常用)
    • 请求进 LVS,响应直接回客户端
    • 性能最高,同一 VLAN
  3. TUN
    • IP 隧道,跨网段,复杂

八、负载均衡调度算法

  • rr:轮询
  • wrr:加权轮询
  • lc:最少连接
  • wlc:加权最少连接(默认)

九、健康检查方式

  • TCP_CHECK:端口探测
  • HTTP_GET|SSL_GET:URL 探测
  • MISC_CHECK:自定义脚本检查

十、生产常用场景

  1. Nginx 高可用
    • 两台 Nginx + Keepalived
    • 挂 Nginx 或挂机器都能自动切换
  2. LVS + Keepalived
    • 高并发网关入口
  3. MySQL 高可用
    • 配合 MGR / 主从 + 脚本判断主从

十一、常用命令

bash

运行

复制代码
systemctl start|stop|restart keepalived
systemctl enable keepalived

# 查看VIP
ip addr
# 查看VRRP状态
cat /var/log/messages | grep VRRP
# 查看LVS
ipvsadm -Ln

十二、常见问题

  1. VIP 不漂移
    • 防火墙 /iptables 未放 VRRP(协议号 112)
    • virtual_router_id 不一致
    • 优先级相同、网卡名错误
  2. 脑裂
    • 主备之间网络互通异常,各自成为 Master
    • 解决方案:绑定链路、增加仲裁、脚本互杀
  3. 切换后访问不通
    • 未发送免费 ARP,交换机 MAC 表未更新
    • 开启 garp_master_delay 等参数
相关推荐
取地址符12 小时前
Rust学习笔记(基于Rustlings)(2):数据结构与集合
笔记·学习·rust
A.零点13 小时前
期末复习,408考研数据结构:第一章绪论完整知识梳理与真题深度解读
c语言·数据结构·笔记·考研
茯苓gao13 小时前
嵌入式开发笔记:工业机器人通信协议深度解析——从现场总线到工业以太网
笔记·嵌入式硬件·学习·机器人·信息与通信
取地址符13 小时前
Rust语法学习 (基于Rustlings)(1):基础语法
经验分享·笔记·学习·rust
不会调制解调的猫14 小时前
笔记 | 什么是 rp_filter(反向路径过滤)?
服务器·网络·笔记
星马梦缘14 小时前
ACM CSP竞赛笔记(二十三)——线段树 与 树状数组
笔记·线段树·acm·树状数组·csp
Splashtop高性能远程控制软件14 小时前
聊天工具与专业远程支持软件:企业 IT 远程支持工具选型的五个评估维度
运维·远程工作·splashtop
运维大师14 小时前
【安全与故障排查】07-混沌工程落地:用故障注入提升系统韧性
运维
北鸟南游15 小时前
学习-claude code 工程化实战的笔记-极客时间
笔记·学习·ai编程
解局易否结局15 小时前
鸿蒙PC应用开发:窗口管理 + 鼠标键盘交互 + 文件对话框
笔记·华为·计算机外设·交互·harmonyos