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
相关推荐
EMTime16 小时前
Docker运行OpenWRT
运维·docker·容器
lolo大魔王17 小时前
Linux 文件系统超全面详解(原理、结构、挂载、分区、inode、日志、管理命令)
linux·运维·服务器
zyl8372119 小时前
Docker 使用手册
运维·docker·容器
古月方枘Fry20 小时前
MGRE实验
运维·服务器
stolentime20 小时前
FreeDomain 本地开发环境快速搭建指南
运维·服务器·网络
bush421 小时前
嵌入式linux学习记录四
linux·运维·学习
lihao lihao1 天前
软硬链接
linux·运维·服务器
TOWE technology1 天前
智能安防监控系统如何做好防雷?——视频信号SPD综合应用方案解析
运维·服务器·防雷产品·信号保护·信号防雷·spd
楼田莉子1 天前
Docker学习:Docker介绍及其架构介绍
运维·后端·学习·docker·容器·架构
大明者省1 天前
IIS 端口绑定正常访问的原理说明与常见误区澄清
运维·服务器·笔记