keepalived高可用与负载均衡

Keepalived 是 Linux 下一款同时实现 高可用 (HA)负载均衡 (LB) 的核心软件,通常用于构建高可靠的服务集群(如 Nginx、MySQL、LVS 等)。


一、核心两大功能

1. 高可用 (High Availability, HA)

核心原理:基于 VRRP 协议实现 IP 漂移

  • VRRP (虚拟路由冗余协议) :将多台物理机组成一个虚拟路由器 ,共享一个 VIP (虚拟 IP)
  • 角色
    • Master (主节点) :绑定 VIP,对外提供服务,每秒发送 VRRP 心跳包(组播地址 224.0.0.18)。
    • Backup (备节点):监听心跳,不绑定 VIP,处于待命状态。
  • 故障切换
    1. 备节点 3 秒 未收到心跳,判定主节点故障。
    2. 优先级最高的备节点升级为 Master,绑定 VIP。
    3. 发送 免费 ARP 广播,刷新全网 ARP 表,流量立即导向新主节点。
    4. 切换时间通常 < 5 秒,对用户完全透明。
2. 负载均衡 (Load Balancing, LB)

核心原理:集成 Linux 内核 IPVS (LVS) 模块,实现四层负载均衡

  • IPVS (IP Virtual Server) :工作在 传输层 (L4),基于内核态转发,性能极高。
  • 工作模式
    • NAT (网络地址转换):请求与响应都经过负载均衡器。
    • DR (直接路由) :仅请求经负载均衡器,响应由后端服务器直接返回客户端(生产最常用)。
    • TUN (IP 隧道):跨网段部署。
  • 常用调度算法
    • rr (轮询):平均分配。
    • wrr (加权轮询):按服务器性能权重分配。
    • lc (最少连接):分给连接数最少的服务器。
    • sh (源地址哈希):同一 IP 固定分配到同一服务器(会话保持)。

二、典型架构:Keepalived + Nginx / LVS

架构图示意:

plaintext

复制代码
用户 → [VIP (192.168.1.100)]
          ↓
[LB节点1 (Master)] ↔ [LB节点2 (Backup)] (Keepalived 主备)
          ↓ (负载分发)
[Web Server 1] [Web Server 2] [Web Server 3] (后端真实服务器)

作用

  1. 高可用:任意一台 LB 节点宕机,VIP 自动漂移,服务不中断。
  2. 负载均衡:LB 节点将请求均匀分发到后端 Web 服务器。
  3. 健康检查:自动剔除宕机的后端服务器,恢复后自动加回。

三、核心配置文件 (keepalived.conf)

1. 高可用 (VRRP) 配置(主节点)

conf

复制代码
global_defs {
    router_id LVS_DEVEL  # 集群内唯一ID
}

vrrp_instance VI_1 {
    state MASTER         # 角色:主节点
    interface eth0       # 绑定网卡
    virtual_router_id 51 # 集群ID,主备必须一致
    priority 150         # 优先级(主>备)
    advert_int 1         # 心跳间隔1秒

    # 虚拟IP
    virtual_ipaddress {
        192.168.1.100/24 dev eth0
    }

    # 健康检查脚本(如检查Nginx是否存活)
    track_script {
        chk_nginx
    }
}

# 自定义检查脚本
vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2  # 每2秒检查一次
    weight -20  # 失败则优先级-20,触发切换
}
2. 负载均衡 (IPVS) 配置

conf

复制代码
# 定义虚拟服务(VIP:端口)
virtual_server 192.168.1.100 80 {
    delay_loop 6          # 健康检查间隔
    lb_algo rr            # 调度算法:轮询
    lb_kind DR            # 模式:直接路由
    persistence_timeout 0 # 会话保持时间

    # 后端真实服务器
    real_server 192.168.1.11 80 {
        weight 1          # 权重
        TCP_CHECK {       # 健康检查:TCP端口
            connect_timeout 3
        }
    }
    real_server 192.168.1.12 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }
    }
}

四、关键特性总结

  • 双功能合一 :一套软件同时解决单点故障流量分发
  • 服务级高可用:通过脚本检查服务进程(如 Nginx),而非仅检查主机存活。
  • 无缝切换:基于 ARP 广播,客户端无感知。
  • 高性能:四层负载均衡(IPVS)性能远超七层(Nginx)。

五、常用命令

bash

运行

复制代码
# 安装
yum install keepalived -y

# 启动/停止/状态
systemctl start/stop/status keepalived

# 查看VIP
ip addr show eth0

# 查看IPVS规则
ipvsadm -Ln
相关推荐
XIAOHEZIcode1 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220702 天前
如何搭建本地yum源(上)
运维
大树885 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠5 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质5 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工5 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智5 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_5 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉5 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦5 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw