LVS+Keepalived 高可用群集

article/2025/8/28 3:11:03

目录

一、 Keepalived 双机热备核心技术

1.1 Keepalived 架构与 VRRP协议

1.2 双机热备配置深度优化 

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

2.1 系统架构设计

 2.2 LVS集成配置详解

三、 关键技术与疑难解析

3.1 DR模式 ARP 仰制机制

3.2 健康检查策略优化

四、 企业级运维实践

4.1 故障转移测试方案

4.2 性能调优建议

五、 架构演进与最佳实践

5.1 从双机热备到最多集群

 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      # 健康检查URLstatus_code 200    # 预期状态码}connect_timeout 3retry 3}
}

检查类型对比:

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

四、 企业级运维实践

4.1 故障转移测试方案

 

sequenceDiagramClient->>+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 集成,为传统架构向云原生演进提供平滑过渡路径,成为混合云场景下的核心流量治理方案。


http://www.hkcw.cn/article/YEwREZqfhY.shtml

相关文章

python + vscode 开发环境搭建

一、下载安装Python Python 官网链接Welcome to Python.org 二、Python3.12.7安装 三、Python虚拟环境 开发编译器使用Vscode 1、打开VsCode,键盘输入ctrl shift p 点击完了会在文件夹目录下出现一个.venv的路径。 虚拟环境的作用是隔离不同项目的 Python 环境…

[ Qt ] | QRadioButton和QCheckBox的使用

目录 QRadioButton 常用属性 clicked(bool)信号、pressed信号、released信号 小项目 QRadioButton QRadioButton是一个单选按钮,也是继承自QAbstractButton(继承自QWidget) 常用属性 checkable 是否能选中 checked 是否已经被选中 autoExclusive 是否排…

关于无法下载Qt离线安装包的说明

不知道出于什么原因考虑,Qt官方目前不提供离线的安装包下载,意味着网上各种文章提供的各种下载地址都失效了,会提示Download from your IP address is not allowed,当然目前可以在线安装,但是据说只提供了从5.15开始的…

github双重认证怎么做

引言 好久没登陆github了, 今天登陆github后,提醒进行2FA认证。 查看了github通知,自 2023 年 3 月起,GitHub 要求所有在 GitHub.com 上贡献代码的用户启用一种或多种形式的双重身份验证 (2FA)。 假如你也遇到这个问题&#xf…

多部手机连接同一wifi的ip一样吗?

在家庭和办公环境中,多台手机同时连接同一个WiFi路由器已成为常态。不少用户会产生疑问:这些设备的IP地址会相同吗?下面就一起来了解一下吧。 一、多部手机连接同一WiFi的IP‌一样吗 多部手机连接同一WiFi时的IP地址是否相同,需要…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.7 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.7 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图&#xff0c;等值线图。 dataframe <-data.frame…

如何打造一份出色的技术文档?

文章目录 每日一句正能量前言一、明确文档的目标和受众二、合理规划文档结构三、注重内容的清晰性和准确性四、持续更新和优化文档五、实用工具推荐六、案例分享示例&#xff1a;如何使用Python编写一个简单的Web应用引言背景知识安装和配置使用指南高级用法常见问题参考文献 七…

记一次 Starrocks be 内存异常宕机

突发性 be 内存飙高&#xff0c;直至被系统 kill 掉&#xff0c;be 内存如下&#xff1a;其中 starrocks_be_update_mem_bytes 指标打满&#xff0c;重启也是如此 [rootlocalhost bin]# curl -XGET -s http://192.168.1.49:8040/metrics | grep "^starrocks_be_.*_mem_b…

阿里云服务器邮件发送失败(dail tcp xxxx:25: i/o timeout)因为阿里云默认禁用 25 端口

最近在测试发送邮件的功能&#xff0c;发现了一个奇怪的问题&#xff0c;同样的 docker 镜像&#xff0c;在本地跑起来是可以正常发送邮件的&#xff0c;但是在阿里云的服务器上跑&#xff0c;就会报错 i/o timeout。 排查了一圈发现&#xff0c;原来是阿里云的操作&#xff0…

什么叫做回表?

指的是在Mysql中使用非聚簇索引&#xff0c;也就是使用二级索引进行作为条件进行查询时&#xff0c;查询了除索引之外的数据&#xff0c;需要根据获得的主键去聚簇索引&#xff0c;查询其他的所需的数据。 有表格&#xff08;id,name,age&#xff09;,进行查询select * from w…

pikachu靶场通关笔记08 XSS关卡04-DOM型XSS

目录 一、XSS原理 二、DOM型XSS 三、源码分析 1、进入靶场 2、XSS探测 3、源码分析 四、渗透实战 1、Payload1 2、Payload2 3、Payload3 本系列为通过《pikachu靶场通关笔记》的XSS关卡(共10关&#xff09;渗透集合&#xff0c;通过对XSS关卡源码的代码审计找到XSS风…

Python打卡第39天

浙大疏锦行 作业&#xff1a; """ DAY 39 图像数据与显存 本节主要介绍深度学习中的图像数据处理和显存管理。 """import torch import torch.nn as nn import torch.nn.functional as F import torchvision import torchvision.transforms as…

SQLite 中文写入失败问题总结

SQLite 中文写入失败问题总结与解决方案 在 Windows 下使用 C 操作 SQLite 数据库时&#xff0c;中文字段经常出现 写入成功但内容显示为 BLOB 或 乱码 的问题。根本原因在于 SQLite 要求字符串以 UTF-8 编码 存储&#xff0c;而默认的 std::string 中文通常是 GB2312/ANSI 编…

63、【OS】【Nuttx】任务休眠与唤醒:sleep

背景 之前的 blog 分析了 Nuttx 编码规范 62、【OS】【Nuttx】编码规范解读&#xff08;十&#xff09; 接下来继续分析下 Nuttx OS 的一个核心功能&#xff0c;任务休眠与唤醒 任务休眠 先来看任务休眠&#xff0c;关键函数 sleep&#xff0c;sleep函数是 C 标准库中的一个…

PostgreSQL学会如何建表

开始使用PostgreSQL之前&#xff0c; 上一节我们说了怎样安装它。 PostgreSQL可能已经安装到你的电脑上了,安装后postgre服务默认在电脑开机时运行启动。 一.了解PostgreSQL的运行 PostgreSQL使用一种客户端/服务器&#xff08;C/S&#xff09;模型。 和其他典型的客户端/服务…

Wirtinger Flow算法的matlab实现和python实现

文章目录 1. 数学模型2. Wirtinger Flow 算法2.1. 光谱初始化方法2.2. Wirtinger梯度下降 3. 算法实现3.1. Matlab实现3.2. Python实现 参考文献 1. 数学模型 观测数学模型可由下面公式给出 y ∣ A x ∣ 2 y |Ax|^2 y∣Ax∣2 其中 x ∈ C n x\in\mathbb C^{n} x∈Cn&#x…

QT+opecv如何更改图片的拍摄路径

如何更改相机拍摄图片的路径 前言&#xff1a;基础夯实&#xff1a;效果展示&#xff1a;实现功能&#xff1a;遇到问题&#xff1a;未解决&#xff1a; 核心代码&#xff1a; 前言&#xff1a; 最近在项目开发中遇到需要让用户更改相机拍摄路径的问题&#xff0c;用户可自己选…

常见的国密加密算法(M1/M2/M3/M4)

国密加密算法 SM2(非对称加密算法) 类型&#xff1a;是非对称加密算法&#xff0c;基于椭圆曲线密码实现。特点&#xff1a;包括有数字签名算法、密钥交换协议&#xff0c;公钥加密算法等部分&#xff0c;其中256位的安全强度比RSA 2048位高&#xff0c;但运算速度更快。使用…

Ubuntu系统下Docker部署Dify保姆级教程:实现内网穿透远程访问

文章目录 前言1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 各位开发者朋友&#xff0c;今天我们将开启一项创新实践——基于Ubuntu系统搭建Dify大语言模型开发平台&#xff0c;并通过Docker容器…

MySQL高可用革命:Orchestrator实现零干预的故障转移与智能拓扑管理

MySQL高可用革命&#xff1a;Orchestrator实现零干预的故障转移与智能拓扑管理 凌晨3点&#xff0c;某电商平台的数据库主节点突然宕机&#xff0c;而系统却在30秒内自动切换至备用节点&#xff0c;数百万用户的购物车数据完好无损——这一切的背后&#xff0c;正是Orchestrato…