Keepalived 高可用与负载均衡

一、核心概念

1. 什么是 Keepalived

  • 基于 VRRP 协议 实现的高可用(HA)工具
  • 主要作用:单点故障自动切换 + 配合 LVS/Nginx 做负载均衡健康检查
  • 应用场景:Nginx、MySQL、LVS、业务网关等高可用集群

2. 高可用 vs 负载均衡

  • 高可用(HA):保证服务不挂,一台挂了另一台顶上
  • 负载均衡(LB):流量分摊到多台后端,提升并发
  • Keepalived 本身不做流量转发 ,只做:
    1. 节点健康检查
    2. VIP 漂移
    3. 故障自动切换

二、核心原理:VRRP 协议

1. 角色

  • Master(主):持有 VIP,对外提供服务
  • Backup(备):监听 Master,不绑定 VIP
  • 主挂了 → 备抢占 VIP → 成为新 Master

2. 关键术语

  • VIP(虚拟 IP):对外统一入口,用户只访问这个 IP
  • 漂移:故障时 VIP 从主节点转移到备节点
  • 优先级(priority):值越大越优先成为 Master

三、安装与基础配置

1. 安装(CentOS /openEuler)

bash

运行

复制代码
yum install -y keepalived

2. 配置文件路径

plaintext

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

3. 主节点配置(精简版)

conf

复制代码
global_defs {
    router_id LVS_01  # 本节点标识,唯一即可
}

vrrp_instance VI_1 {
    state MASTER       # 主节点
    interface eth0     # 绑定网卡
    virtual_router_id 51
    priority 150       # 优先级,备节点设更低
    advert_int 1       # 心跳间隔1秒

    authentication {
        auth_type PASS
        auth_pass 123456
    }

    virtual_ipaddress {
        192.168.1.100/24  # VIP
    }
}

4. 备节点配置

  • state BACKUP
  • priority 100
  • 其余基本一致

四、配合 Nginx 实现高可用(最常用)

目标

Nginx 挂了 → Keepalived 自动切换 VIP

1. 添加 Nginx 健康检查脚本

conf

复制代码
vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight -20  # 失败则优先级-20
}

vrrp_instance VI_1 {
    ...
    track_script {
        chk_nginx
    }
}

2. 检查脚本 check_nginx.sh

bash

运行

复制代码
#!/bin/bash
if ! pgrep nginx &>/dev/null; then
    systemctl stop keepalived
fi

bash

运行

复制代码
chmod +x /etc/keepalived/check_nginx.sh

五、配合 LVS 做负载均衡(四层 LB)

1. LVS + Keepalived 作用

  • LVS:四层负载均衡(转发流量)
  • Keepalived:LVS 高可用 + 自动配置 VS/RS + 健康检查

2. 典型配置片段

conf

复制代码
virtual_server 192.168.1.100 80 {
    delay_loop 3
    lb_algo rr        # 轮询
    lb_kind DR        # Direct Route 模式
    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
        }
    }
}

六、常用命令

bash

运行

复制代码
# 启动/开机自启
systemctl start keepalived
systemctl enable keepalived

# 查看状态
systemctl status keepalived

# 查看VIP
ip addr show eth0

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

七、面试高频考点

  1. **Keepalived 用什么协议?**VRRP 协议,实现主备高可用。
  2. **脑裂是什么?怎么解决?**心跳断了 → 主备都抢 VIP → 脑裂。解决:串口心跳、冗余网卡、防火墙放行 VRRP。
  3. **Nginx 高可用怎么做?**Nginx + Keepalived + 脚本检查 Nginx 进程。
  4. **LVS 与 Keepalived 关系?**LVS 做四层负载均衡,Keepalived 做高可用与健康检查。
  5. **VIP 有什么用?**给用户统一入口,故障时漂移,业务无感知。

八、总结

Keepalived = VRRP 高可用 + 服务健康检查 + 配合 LVS/Nginx 实现负载均衡高可用

  • 主备切换靠 VRRP
  • 流量入口靠 VIP
  • 服务存活靠 检查脚本
  • 负载均衡靠 LVS/Nginx
相关推荐
用户03284722207012 小时前
如何搭建本地yum源(上)
运维
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉4 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦4 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
java_cj4 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes