Keepalived 高可用与负载均衡

Keepalived 高可用与负载均衡

一、基础概念

1. 什么是 Keepalived

  • 基于 VRRP 协议 实现的高可用(HA)工具
  • 核心作用:单点故障自动切换,保证服务不间断
  • 同时集成 LVS 负载均衡 管理功能,可直接做四层负载均衡

2. 核心应用场景

  1. 高可用(HA)
    • 双机热备 / 双主:网关、Nginx、MySQL、Redis 等
    • 虚拟 IP(VIP)漂移,对上层透明
  2. 负载均衡(LB)
    • 配合 LVS 做四层(TCP/UDP)负载均衡
    • 支持健康检查,自动剔除异常后端

3. 关键术语

  • VRRP:虚拟路由冗余协议,多台设备虚拟出一个网关
  • Master:主节点,持有 VIP,对外提供服务
  • Backup:备节点,监听主节点,故障时接管
  • VIP:虚拟 IP,对外统一访问入口
  • LVS:Linux Virtual Server,内核四层负载均衡
  • 健康检查:检测后端服务存活,自动上下线

二、工作原理

1. VRRP 高可用原理

  1. 多台服务器组成一个 VRRP 集群
  2. 选举 Master 节点,绑定 VIP
  3. Master 定时发送 VRRP 广播(默认 1s)
  4. Backup 收不到广播则认为主故障,抢占 VIP
  5. 切换后自动发送免费 ARP,刷新交换机 / 客户端 ARP 表

2. 负载均衡原理(LVS+Keepalived)

  1. Keepalived 配置虚拟服务(VIP:PORT)
  2. 定义后端真实服务器(RS)池
  3. 配置调度算法(rr、wrr、lc 等)
  4. 自动对 RS 做健康检查(HTTP/TCP/PING)
  5. 异常 RS 自动剔除,恢复后自动加入

三、安装与基础配置

1. 安装(CentOS/RHEL)

bash

运行

复制代码
yum install -y keepalived

2. 配置文件路径

plaintext

复制代码
/etc/keepalived/keepalived.conf

3. 核心配置结构

  • global_defs:全局配置
  • vrrp_instance:VRRP 实例(高可用核心)
  • virtual_server:虚拟服务(负载均衡)
  • real_server:后端真实服务器

四、高可用(HA)典型配置

1. 主节点(Master)配置

plaintext

复制代码
global_defs {
    router_id LVS_MASTER
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 123456
    }

    virtual_ipaddress {
        192.168.1.100/24 dev eth0
    }
}

2. 备节点(Backup)配置

plaintext

复制代码
global_defs {
    router_id LVS_BACKUP
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 123456
    }

    virtual_ipaddress {
        192.168.1.100/24 dev eth0
    }
}

3. 关键参数说明

  • router_id:集群内唯一标识
  • state:初始角色(MASTER/BACKUP)
  • interface:绑定 VIP 的网卡
  • virtual_router_id:集群 ID,同集群必须一致
  • priority:优先级,值越大越易成为主
  • advert_int:VRRP 报文发送间隔
  • virtual_ipaddress:VIP 地址

五、负载均衡(LVS)配置

keepalived.conf 中添加 virtual_server 配置:

plaintext

复制代码
virtual_server 192.168.1.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.1.11 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
        }
    }

    real_server 192.168.1.12 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
        }
    }
}

1. 调度算法(lb_algo)

  • rr:轮询(默认)
  • wrr:加权轮询
  • lc:最少连接
  • wlc:加权最少连接
  • sh:源地址哈希(会话保持)

2. LVS 工作模式(lb_kind)

  • DR:直接路由(生产最常用,性能最高)
  • NAT:网络地址转换
  • TUN:IP 隧道

3. 健康检查方式

  • TCP_CHECK:TCP 端口检查
  • HTTP_GET:HTTP 路径检查
  • SSL_GET:HTTPS 检查
  • PING_CHECK:Ping 检查

六、服务管理与状态查看

bash

运行

复制代码
# 启动
systemctl start keepalived

# 开机自启
systemctl enable keepalived

# 查看状态
systemctl status keepalived

# 查看 VIP
ip addr show eth0

# 查看 VRRP 日志
tail -f /var/log/messages

七、常见高可用扩展

1. 抢占与非抢占模式

  • 默认:抢占模式,主恢复后自动抢回 VIP
  • 非抢占:添加 nopreempt,主恢复不抢回

plaintext

复制代码
vrrp_instance VI_1 {
    ...
    nopreempt
}

2. 脚本监控(Nginx/MySQL 高可用)

通过 track_script 监控服务状态,异常则降权触发切换

plaintext

复制代码
vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    ...
    track_script {
        check_nginx
    }
}

八、常见问题与排错

  1. VIP 不漂移
    • 防火墙未放通 VRRP(协议号 112)
    • virtual_router_id 不一致
    • 优先级配置错误
  2. 负载均衡不生效
    • LVS 内核模块未加载
    • RS 未配置 lo:0 绑定 VIP(DR 模式)
  3. 切换后访问不通
    • 未发送免费 ARP,网关 ARP 表未刷新
    • 网卡配置、子网掩码错误

九、生产使用总结

  1. Keepalived 主打高可用,负载均衡依赖 LVS
  2. 四层负载均衡用:Keepalived+LVS
  3. 七层负载均衡用:Keepalived+Nginx
  4. 关键业务建议:双主模式 + 服务监控脚本
  5. 注意时间同步、防火墙规则、网卡名称一致性
相关推荐
卢傢蕊5 小时前
LVS+Keepalived 高可用群集
linux·运维·lvs·keepalived
kc胡聪聪6 小时前
keepalived的高可用和负载均衡
keepalived
ldj20208 天前
Keepalived 备机解决proxysql单点故障
keepalived
小百菜12 天前
Keepalived + Nginx 实现高可用
nginx·keepalived
Brandon汐13 天前
HAProxy+Keepalived+MariaDB+tomcat+Prometheus+Grafana高可用部署
云原生·tomcat·grafana·prometheus·mariadb·keepalived·haproxy
cyber_两只龙宝25 天前
【Keepalived】抢占模式、延迟抢占模式与非抢占模式详解
linux·运维·服务器·keepalived
nzxzn2 个月前
Keepalived 核心知识点
运维·keepalived
feng68_2 个月前
Keepalived基础实现
运维·服务器·keepalived
cyber_两只龙宝2 个月前
Keepalived+LVS--实现IPVS的高可用+高性能的双主双业务架构详细配置流程及解析
linux·运维·集群·lvs·高性能·keepalived·高可用