LVS+Keepalived 高可用群集

目录

[一、 Keepalived 双机热备核心技术](#一、 Keepalived 双机热备核心技术)

[1.1 Keepalived 架构与 VRRP协议](#1.1 Keepalived 架构与 VRRP协议)

[1.2 双机热备配置深度优化](#1.2 双机热备配置深度优化)

[二、 LVS+Keepalived 高可用负载均衡架构](#二、 LVS+Keepalived 高可用负载均衡架构)

[2.1 系统架构设计](#2.1 系统架构设计)

[2.2 LVS集成配置详解](#2.2 LVS集成配置详解)

[三、 关键技术与疑难解析](#三、 关键技术与疑难解析)

[3.1 DR模式 ARP 仰制机制](#3.1 DR模式 ARP 仰制机制)

[3.2 健康检查策略优化](#3.2 健康检查策略优化)

[四、 企业级运维实践](#四、 企业级运维实践)

[4.1 故障转移测试方案](#4.1 故障转移测试方案)

[4.2 性能调优建议](#4.2 性能调优建议)

[五、 架构演进与最佳实践](#五、 架构演进与最佳实践)

[5.1 从双机热备到最多集群](#5.1 从双机热备到最多集群)

[5.2 灾备设计原则](#5.2 灾备设计原则)


一、 Keepalived 双机热备核心技术

1.1 Keepalived 架构与 VRRP协议

Keepalived 的核心价值在于通过 VRRP(虚拟路由冗余协议) 实现服务高可用。其架构设计包含三层关键组件:

  • **VRRP Stack:**管理虚拟路由器状态(MASTER/BACKUP),通过多播心跳包(advert_int参数控制频率)实现节点通信。
  • **Checkers:**对后端服务(如 LVS节点、Nginx)进行健康检测,支持TCP/HTTP/SSL 等多种检测方式。
  • **SMTP Notifier:**故障切换时发送邮件告警。

VRRP工作流程

  1. 初始化:各节点广播优先级(priority)

  2. 选举:最高优先级节点成为 MASTER,持有 VIP

  3. 心跳:MASTER 周期性发送 Advertisement 包

  4. 故障切换:当 BACKUP 节点超时未收到心跳,触发选举新 MASTER

1.2 双机热备配置深度优化

配置文件 /etc/keepalived/keepalived.conf 的精准控制:

关键参数说明:

复制代码
vrrp_instance VI_1 {
    state MASTER         # 初始状态(MASTER/BACKUP)
    interface ens33      # 绑定 VIP 的物理网卡
    virtual_router_id 62 # 集群唯一ID (0-255)
    priority 100         # 选举权重(MASTER > BACKUP)
    advert_int 1         # 心跳间隔(秒)
    authentication {
        auth_type PASS   # 认证方式
        auth_pass 1111   # 密码(所有节点一致)
    }
    virtual_ipaddress {
        192.168.10.100/24 # VIP(可配置多个)
    }
}

故障切换性能优化:

  • 减少 advert_int 值(如0.5秒)加速故障检测
  • 设置nopreempt防止优先级反转导致的频繁切换
  • 日志追踪: tail -f /var/log/messages 监控状态迁移事件

二、 LVS+Keepalived 高可用负载均衡架构

2.1 系统架构设计

+---------------------+

| Client |

+----------+----------+

|

+----------+----------+

| VIP: 192.168.10.100|

+----------+----------+

|

+----------------+----------------+

| |

+---------+---------+ +---------+---------+

| Master LVS (lb01)| | Backup LVS (lb02)|

| IP: 192.168.10.101| | IP: 192.168.10.102|

+---------+---------+ +---------+---------+

| |

+---------+---------+ +---------+---------+

| Web01 (web01) | | Web02 (web02) |

| IP: 192.168.10.103| | IP: 192.168.10.104|

+-------------------+ +-------------------+

2.2 LVS集成配置详解

Keepalived 通过 virtual_server 断管理 LVS规则:

DR 模式核心配置:

复制代码
virtual_server 192.168.10.100 80 {
    delay_loop 3              # 健康检查间隔(秒)
    lb_algo rr                # 调度算法(rr/wlc/lc)
    lb_kind DR                # 工作模式(DR/NAT/TUN)
    persistence_timeout 50    # 会话保持时间
    
    # 真实服务器池配置
    real_server 192.168.10.103 80 {
        weight 1              # 权重值
        TCP_CHECK {
            connect_port 80   # 检测端口
            connect_timeout 3 # 连接超时
            retry 3           # 重试次数
            delay_before_retry 2 # 重试间隔
        }
    }
    # 其他节点类似配置...
}

调度算法对比:

|--------|---------|------------|
| 算法 | 名称 | 适用场景 |
| rr | 轮询 | 各服务器性能均等时 |
| wlc | 加权最小连接数 | 服务器性能差异较大时 |
| sh | 源地址哈希 | 需要会话保持的应用 |


三、 关键技术与疑难解析

3.1 DR模式 ARP 仰制机制

**问题场景:**多台服务器声明 VIP导致ARP冲突

解决方案(节点服务器配置):

复制代码
# 配置 ARP 参数
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

# 添加 VIP 到 lo 接口
ip addr add 192.168.10.100/32 dev lo label lo:0

参数含义:

  • **arp_ignore=1:**仅响应目标IP为本机接口的ARP请求
  • **arp_announce=2:**始终使用最佳本地地址进行ARP宣告

3.2 健康检查策略优化

高阶检测方式示例:

复制代码
real_server 192.168.10.103 80 {
    HTTP_GET {
        url {
            path /healthz      # 健康检查URL
            status_code 200    # 预期状态码
        }
        connect_timeout 3
        retry 3
    }
}

检查类型对比:

|-----------|--------------|-------------|
| 类型 | 特点 | 适用场景 |
| TCP_CHECK | 建立TCP连接即视为健康 | 快速检测端口存活 |
| HTTP_GET | 验证HTTP状态码和内容 | Web应用深度健康检查 |
| SSL_GET | 支持HTTPS证书验证 | 安全要求高的场景 |


四、 企业级运维实践

4.1 故障转移测试方案

复制代码
sequenceDiagram
    Client->>+MASTER: 请求(VIP)
    MASTER->>Web01: 转发请求
    Web01-->>Client: 返回数据
    Note over MASTER: 模拟故障(停止Keepalived)
    Client->>+BACKUP: 请求(VIP)
    BACKUP->>Web02: 转发请求
    Web02-->>Client: 返回数据

关键指标验证:

  1. **切换时间:**通过 ping -t VIP 观察丢包数(应≤2个)
  2. **服务一致性:**检查 Web 内容是否同步(需配合 NFS/rsync)
  3. **日志追踪:**监控 /var/log/messages 中状态迁移记录

4.2 性能调优建议

内核参数优化:

复制代码
# 提高端口复用能力
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.ip_local_port_range="1024 65000"

# 增大连接跟踪表
sysctl -w net.netfilter.nf_conntrack_max=1000000

LVS 连接管理:

复制代码
virtual_server 192.168.10.100 80 {
  # 开启SYN Cookie防护
  syn_proxy on
  # 设置最大连接数
  connection_timeout 300
}

五、 架构演进与最佳实践

5.1 从双机热备到最多集群

+-----------+

| Global LB|

+-----+-----+

|

+--------------+--------------+

| |

+-------+-------+ +---------+-------+

| Region1 LVS | | Region2 LVS |

| VIP: 10.1.1.1| | VIP: 10.2.2.1 |

+-------+-------+ +---------+-------+

| |

+-------+-------+ +---------+-------+

| Web Cluster | | Web Cluster |

| (Keepalived) | | (Keepalived) |

+--------------+ +-----------------+

5.2 灾备设计原则

  1. **RTO(恢复时间目标):**通过预配置脚本将切换时间控制在秒级
  2. **RPO(数据恢复点):**采用DRBD+Keepalived 实现存储级高可用
  3. **异地多活:**结合DNS智能解析实现跨地域流量调度

结语:构建坚不可摧的服务基座

LVS+Keepalived的组合为关键业务系统提供了双重保障:

  1. **流量层:**LVS 实现高性能负载分发,单集群可支撑 10Gbps+流量
  2. **容错层:**Keepalived 确保调度器持续可用,切换过程用户无感知

成功部署的关键要素:

  • 严格遵循 DR 模式的 ARP 抑制配置

  • 健康检查策略需匹配业务特性

  • 生产环境必须进行故障注入测试

  • 日志监控系统集成(如 ELK 收集 /var/log/messages)

随着云原生技术的发展,该方案可与 Kubernetes Ingress Controller 集成,为传统架构向云原生演进提供平滑过渡路径,成为混合云场景下的核心流量治理方案。

相关推荐
liulilittle14 分钟前
关于DDOS
linux·运维·服务器·网络·ddos·通信
别NULL1 小时前
《TCP/IP 详解 卷1:协议》第3章:链路层
网络·网络协议·tcp/ip
pianmian13 小时前
3D Tiles高级样式设置与条件渲染(3)
linux·服务器·前端
SysMax3 小时前
TC/BC/OC P2P/E2E有啥区别?-PTP协议基础概念介绍
网络·网络协议·ptp
Clownseven4 小时前
用Git管理你的服务器配置文件与自动化脚本:版本控制、变更追溯、团队协作与安全回滚的运维之道
运维·服务器·git
Roki Zhang4 小时前
RustDesk 搭建自建服务器并设置服务自启动
运维·服务器
SZ1701102315 小时前
每个路由器接口,都必须分配所属网络内的 IP 地址,用于转发数据包
网络·tcp/ip·智能路由器
嵌入式学习菌5 小时前
TCP通信与MQTT协议的关系
网络·网络协议·tcp/ip
wanhengidc5 小时前
影响服务器稳定性的因素都有什么?
运维·服务器·分布式
编码小笨猪6 小时前
一文详谈Linux中的时间管理和定时器编程
linux·服务器