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 等参数
相关推荐
雨浓YN2 小时前
WPF MVVM 模式(调Prism库)项目创建笔记 —— 包含C++/CLI OpenCV互操作
c++·笔记·wpf
星辰_mya2 小时前
进程状态转换
linux·运维·服务器
HoneyMoose2 小时前
Jenkins 中 NodeJS 安装如何添加全局安装组件
运维·jenkins
孙同学_2 小时前
【项目篇】高并发服务器 - Reactor模型详解
运维·服务器
WangJunXiang62 小时前
keepalived高可用与负载均衡
运维·负载均衡
枳实-叶2 小时前
音视频 Linux 指令速查
linux·运维·音视频
朱一头zcy2 小时前
Java基础复习08:IO流(File类与IO流概述、字节输入输出流、字符输入输出流、缓冲流、字符转换流、对象序列化、打印流、Commons-io包介绍)
java·笔记
SilentSamsara2 小时前
Linux 管道与重定向:命令行精髓的结构性解析
linux·运维·服务器·c++·云原生