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 等参数
相关推荐
tedcloud1232 小时前
OpenShip 部署指南:开源 AI 应用快速启动模板 Linux 搭建实践
linux·运维·服务器·人工智能·开源
一只小菜鸡..9 小时前
南京大学 操作系统 (JYY) 学习笔记:从 UNIX 到 Linux 与庞大的应用生态
笔记·学习·unix
晚风吹长发11 小时前
Docker基础——Docker Network(网络详解)
linux·运维·网络·ubuntu·docker·容器
熊猫钓鱼>_>11 小时前
ArkTS 装饰器总览:V1 / V2 / 通用装饰器完整学习笔记
笔记·学习·华为·交互·harmonyos·arkts·arkweb
GLDbalala12 小时前
GPU PRO 5 - 5.2 glTF: Designing an Open-Standard Runtime Asset Format笔记
笔记
春生野草12 小时前
个人笔记——栈
笔记
chnyi6_ya12 小时前
论文阅读笔记 | One Sentence, One Drama: 基于多智能体系统的个性化短剧生成
论文阅读·笔记
LedgerNinja13 小时前
WEEX API 自动化交易实践:下单、撤单、订单查询与状态闭环
运维·自动化
ysa05103013 小时前
【板子】短序列dp(换成维护更小常数维度的dp)
c++·笔记·算法·板子
执笔画流年呀13 小时前
Linux搭建Java项目部署环境
java·linux·运维