当前位置: 首页 > news >正文

LVS + Keepalived 高可用负载均衡集群

目录

一、核心组件与作用

1. LVS(Linux Virtual Server)

2. Keepalived

二、DR 模式下的 LVS + Keepalived 工作原理

1. 整体架构

2. 数据包流向(DR 模式)

三、部署步骤(DR 模式)

3.1 环境规划

3.2 主 / 备 LVS 节点配置(以主节点为例)

(1)基础环境准备

(2)配置 VIP(主 / 备节点均需配置)

(3)配置 Keepalived(主节点)

(4)优化内核参数(主 / 备节点均需配置)

(5)启动服务

3.3 后端 RS 配置(RS1 和 RS2 均需配置)

(1)绑定 VIP 到 lo 接口

(2)优化 ARP 策略(避免 MAC 冲突)

(3)部署 Web 服务

四、测试与验证

五、核心优势与注意事项

优势

注意事项

六、与其他方案对比(LVS+Keepalived vs Nginx/HAProxy)


一、核心组件与作用

1. LVS(Linux Virtual Server)

  • 定位:内核级四层负载均衡器,通过虚拟 IP(VIP)将客户端请求分发到后端真实服务器(Real Server,RS)。
  • 核心功能
    • 基于不同模式(DR/NAT/TUN)实现流量转发,其中 DR 模式因高性能成为主流选择。
    • 支持多种调度算法(如轮询 rr、加权轮询 wrr 等),实现请求的均衡分发。
  • 优势:工作在内核态,转发效率极高,适合高并发场景(百万级并发支撑)。

2. Keepalived

  • 定位:基于 VRRP 协议的高可用工具,为 LVS 提供故障转移和健康检查能力。
  • 核心功能
    • VIP 漂移:监控 LVS 主节点状态,故障时自动将 VIP 切换到备用节点,避免单点故障。
    • 健康检查:检测后端 RS 状态,自动剔除故障节点,确保请求仅分发到正常服务。
    • 集群管理:直接集成 LVS 配置,统一管理负载均衡规则。

二、DR 模式下的 LVS + Keepalived 工作原理

1. 整体架构

  • 角色分工
    • 主 LVS 节点(MASTER):承载 VIP,处理并分发客户端请求,发送 VRRP 心跳给备节点。
    • 备 LVS 节点(BACKUP):监听主节点心跳,主节点故障时接管 VIP,继续提供负载均衡。
    • 后端 RS:部署 Web 等服务,通过 lo 接口绑定 VIP,直接响应客户端(不经过 LVS)。
  • VIP 流转:正常时 VIP 在主 LVS 节点,主节点故障后 VIP 自动漂移到备节点。

2. 数据包流向(DR 模式)

  1. 客户端 → 主 LVS 节点:客户端请求发送到 VIP,数据包到达主 LVS 内核空间。
  2. LVS → 后端 RS:LVS 仅修改数据包的目标 MAC 地址(改为目标 RS 的 MAC),IP 地址不变(源 CIP,目标 VIP),通过二层网络发送到 RS。
  3. RS → 客户端:RS 通过 lo 接口的 VIP 处理请求,响应数据包直接发送给客户端(源 VIP,目标 CIP),不经过 LVS。

三、部署步骤(DR 模式)

3.1 环境规划

角色IP 地址核心配置
主 LVS(MASTER)192.168.10.80绑定 VIP 192.168.10.180
备 LVS(BACKUP)192.168.10.23备用节点,主节点故障时接管 VIP
后端 RS1192.168.10.16部署 Web 服务,lo 接口绑定 VIP
后端 RS2192.168.10.17部署 Web 服务,lo 接口绑定 VIP
客户端192.168.10.100访问 VIP 192.168.10.180

3.2 主 / 备 LVS 节点配置(以主节点为例)

(1)基础环境准备
# 关闭防火墙和 SELinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config# 安装工具
yum -y install ipvsadm keepalived
modprobe ip_vs  # 加载 LVS 内核模块
(2)配置 VIP(主 / 备节点均需配置)
# 创建虚拟网卡配置文件
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0# 编辑配置(子网掩码必须为 255.255.255.255)
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255
IPV6INIT=no# 启动虚拟网卡
ifup ens33:0
(3)配置 Keepalived(主节点)
vim /etc/keepalived/keepalived.conf
global_defs {router_id LVS_01  # 主节点标识,备节点改为 LVS_02
}# VRRP 实例(控制 VIP 漂移)
vrrp_instance VI_1 {state MASTER       # 备节点改为 BACKUPinterface ens33    # 绑定 VIP 的物理网卡virtual_router_id 10  # 主备节点需一致priority 100       # 主节点优先级高于备节点(备节点设为 90)advert_int 1       # 心跳间隔 1 秒authentication {auth_type PASSauth_pass abc123  # 主备节点认证密码需一致}virtual_ipaddress {192.168.10.180  # VIP 地址}
}# LVS 负载均衡配置
virtual_server 192.168.10.180 80 {delay_loop 6       # 健康检查间隔 6 秒lb_algo rr         # 调度算法:轮询lb_kind DR         # 模式:DRpersistence_timeout 50  # 会话保持超时 50 秒(同一客户端 50 秒内固定访问同一 RS)protocol TCP# 后端 RS1 配置real_server 192.168.10.16 80 {weight 1      # 权重(越高分配越多请求)TCP_CHECK {   # TCP 健康检查connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}# 后端 RS2 配置real_server 192.168.10.17 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
(4)优化内核参数(主 / 备节点均需配置)
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0  # 关闭 ARP 重定向
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p  # 生效配置
(5)启动服务
systemctl start keepalived
systemctl enable keepalived
ipvsadm-save > /etc/sysconfig/ipvsadm  # 保存 LVS 规则
systemctl start ipvsadm
ipvsadm -ln  # 验证 LVS 规则(显示 RR 算法和 DR 模式)

3.3 后端 RS 配置(RS1 和 RS2 均需配置)

(1)绑定 VIP 到 lo 接口
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.10.180  # 与 LVS 的 VIP 一致
NETMASK=255.255.255.255
IPV6INIT=no# 启动接口并添加路由
ifup lo:0
route add -host 192.168.10.180 dev lo:0  # 确保 VIP 路由指向 lo 接口
(2)优化 ARP 策略(避免 MAC 冲突)
vim /etc/sysctl.conf
# 禁止 RS 响应非本地物理 IP 的 ARP 请求
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p
(3)部署 Web 服务
yum -y install httpd
systemctl start httpd && systemctl enable httpd# RS1 页面内容
echo 'this is kgc web!' > /var/www/html/index.html
# RS2 页面内容
echo 'this is benet web!' > /var/www/html/index.html

四、测试与验证

  1. 负载均衡测试:客户端访问 http://192.168.10.180,刷新页面(间隔超过 50 秒),应轮询显示 RS1 和 RS2 的页面。
  2. 高可用测试
    • 停止主 LVS 节点的 Keepalived:systemctl stop keepalived
    • 在备节点执行 ip addr,确认 VIP 已漂移到备节点。
    • 客户端继续访问 VIP,服务正常(由备节点分发请求)。
    • 重启主节点 Keepalived,VIP 自动回归(默认抢占模式)。

五、核心优势与注意事项

优势

  • 高性能:DR 模式下 LVS 仅修改 MAC 地址,转发效率极高,适合高并发。
  • 高可用:Keepalived 实现 VIP 漂移,避免 LVS 节点单点故障。
  • 灵活性:支持多种调度算法,可根据 RS 性能调整权重。

注意事项

  • 网络要求:LVS 节点与 RS 必须在同一物理网段(DR 模式限制)。
  • ARP 策略:RS 必须配置 arp_ignore 和 arp_announce,否则会导致 VIP 冲突。
  • 会话保持persistence_timeout 需根据业务场景调整(如静态页面可设为 0)。
  • 脑裂防护:通过双心跳线、仲裁 IP(如网关)避免主备节点同时争抢 VIP。

六、与其他方案对比(LVS+Keepalived vs Nginx/HAProxy)

特性LVS + KeepalivedNginxHAProxy
工作层级四层(内核态)四层 + 七层(应用态)四层 + 七层(应用态)
性能最高(百万级并发)高(十万级并发)高(接近 Nginx)
健康检查依赖 Keepalived 脚本 / TCP 检查简单 HTTP/TCP 检查强大(支持多种协议)
适用场景超大规模集群、高并发中小型集群、需七层转发(如 URL 路由)高可用集群、复杂健康检查需求

通过 LVS + Keepalived 的组合,可构建兼具高性能和高可用性的负载均衡架构,是企业级核心服务的理想选择。


文章转载自:

http://93NMKx7N.rkqry.cn
http://ReJSn4Q0.rkqry.cn
http://EtWWlcEp.rkqry.cn
http://jE9h8LaF.rkqry.cn
http://f4PjaZpy.rkqry.cn
http://GZM34bi3.rkqry.cn
http://ZO3Ouy8J.rkqry.cn
http://ozii9VSE.rkqry.cn
http://w5jP8eaR.rkqry.cn
http://o9lm0JkE.rkqry.cn
http://yHru2XwJ.rkqry.cn
http://IZeqyuKn.rkqry.cn
http://jf5MXe8R.rkqry.cn
http://ElPHTxKD.rkqry.cn
http://geXWni3o.rkqry.cn
http://S6D9xmSv.rkqry.cn
http://23ChP0sg.rkqry.cn
http://csFGkih4.rkqry.cn
http://84fliDab.rkqry.cn
http://S20VgH8T.rkqry.cn
http://B0HZR7yZ.rkqry.cn
http://KcdbtOT1.rkqry.cn
http://VJKFECQV.rkqry.cn
http://JUdWcuYx.rkqry.cn
http://BlqHL26H.rkqry.cn
http://IPQYTPzk.rkqry.cn
http://vh0nP5yQ.rkqry.cn
http://8LhDVMzl.rkqry.cn
http://uYYcPuWH.rkqry.cn
http://WkBe267u.rkqry.cn
http://www.dtcms.com/a/377876.html

相关文章:

  • 《云原生场景下Prometheus指标采集异常的深度排查与架构修复》
  • 如何安装 node-v14.16.1-x64.msi?Node.js 14.16.1 64位MSI安装详细步骤
  • React 基础
  • 自动化SSL证书管理:应对域名SSL证书更新焦虑
  • 跨平台快速上手:Couchbase 安装与使用指南
  • 【译】Visual Studio 八月更新已发布 —— 更智能的人工智能、更出色的调试功能以及更多控制权
  • python+selenium+PO模式
  • Excel表格如何制作?【图文详解】表格Excel制作教程?电脑Excel表格制作?
  • 【基于CNN的57类交通标志识别系统】
  • 【深度学习新浪潮】Nano Banana(Gemini 2.5 Flash Image)技术解析与开发者实操指南
  • 【Qt开发】显示类控件(二)-> QLCDNumber
  • 三角孔径衍射误差难分析?OAS 软件深度仿真解难题
  • 鸿蒙Next Web组件生命周期详解:从加载到销毁的全流程掌控
  • 【从0开始学习Java | 第17篇】集合(中-Set部分)
  • 【AI指导】Python实现prophet模型的业绩预测
  • RPA-4.0.0.0_SAAS新版本已上线,Edge扩展自动安装,快速实现RPA流程自动化
  • Server 13 ,CentOS 上使用 Nginx 部署多个前端项目完整指南( 支持多端口与脚本自动化 )
  • Java后端测试
  • Skywork-OR1:昆仑万维开源的数学代码推理系列模型
  • 【Linux】基本指令 · 上
  • OBS插件详细教程:OBS美颜插件下载,OBS美颜插件怎么用?
  • 如何在 Spring Boot 中指定不同的配置文件?
  • spring boot 拦截器增加语言信息
  • leedcode 算法刷题第三十二天
  • CentOS 7 下iscsi存储服务配置验证
  • 求解指定泛函的驻点所满足的偏微分方程及边界条件
  • 股指期货保证金一手需要多少钱?
  • LVS与Keepalived详解(一)负载均衡集群介绍
  • 【Proteus仿真】按键控制系列仿真——LED灯表示按键状态/按键控制LED灯/4*4矩阵键盘控制LED
  • 【前沿技术拓展Trip one】 芯片自动化和具身智能