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
相关推荐
九硕智慧建筑一体化厂家42 分钟前
楼宇自控|智慧建筑核心引擎!楼宇自控系统,赋能建筑高效低碳运维
运维·人工智能·笔记·智慧城市
90后小陈老师1 小时前
Google账号申诉处理建议
运维
怪侠_岭南一只猿1 小时前
[简单理解]小龙虾是怎么一回事?
运维·服务器·ai
海兰1 小时前
【应用】Wastnet 框架的 SSE (Server-Sent Events)从协议原理到实践指南
运维·服务器·人工智能
向生2 小时前
FRP 0.61.0 完整保姆级部署教程
运维
2401_894915532 小时前
Geo 优化源码部署实战:环境配置、参数调优完整指南
运维·服务器·数据库·tcp/ip·安全
爱和冰阔落3 小时前
【Linux】Ctrl+C 到底做了什么?从键盘、kill 到 alarm,一次讲清信号的产生
linux·运维·c++·安卓
JavaPub-rodert4 小时前
Linux 下部署 MongoDB:从安装、配置到生产环境使用
linux·运维·mongodb
画中有画4 小时前
自动化脚本中如何启动/打开app的某个页面
运维·自动化
我星期八休息5 小时前
Linux—五种IO模型与非阻塞IO
linux·运维·服务器·网络·数据库·网络协议