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

LVS+Keepalived 高可用

目录

一、核心概念

1. LVS(Linux Virtual Server)

2. Keepalived

二、高可用架构设计

1. 架构拓扑图

2. 工作流程

三、部署步骤(以 DR 模式为例)

1. 环境准备

2. 主 LVS 节点配置

(1)安装 Keepalived

(2)配置 Keepalived 主节点(/etc/keepalived/keepalived.conf)

(3)配置 LVS 内核参数(DR 模式需关闭 ARP 响应)

3. 备 LVS 节点配置

4. 后端服务器配置(以 Nginx 为例)

(1)绑定 VIP(lo 接口,避免响应 ARP 请求)

(2)关闭 IP 转发

(3)启动 Nginx 服务

四、验证与维护

1. 状态检查

2. 故障切换测试

五、注意事项

六、扩展场景

命令解析

全局配置部分

VRRP 实例配置

LVS 虚拟服务器配置

后端服务器配置

配置总结


一、核心概念
1. LVS(Linux Virtual Server)
  • 定义:基于 Linux 内核的负载均衡器,工作在 OSI 模型的第四层(传输层),通过 IP 和端口实现流量分发。
  • 工作模式
    • NAT 模式:客户端请求经 LVS 转发至后端服务器,响应流量需通过 LVS 返回(需配置 SNAT/DNAT)。
    • DR 模式(Direct Routing):LVS 仅转发请求,后端服务器直接响应客户端(需共享 VIP,配置路由或调整内核参数)。
    • TUN 模式(隧道模式):通过 IP 隧道封装技术将请求转发至后端服务器(适用于跨网段场景)。
  • 调度算法
    • 轮询(Round Robin)、加权轮询(Weighted RR)、最少连接(Least Connections)、加权最少连接(Weighted LC)等。
2. Keepalived
  • 定义:基于 VRRP(Virtual Router Redundancy Protocol)协议的高可用解决方案,用于监控 LVS 节点状态,实现主备切换。
  • 核心功能
    • 健康检查:通过 TCP、HTTP、SSL 等方式检测后端服务器和 LVS 节点的存活状态。
    • 虚拟路由冗余:多个 Keepalived 节点组成 VRRP 组,共享一个虚拟 IP(VIP),主节点故障时自动切换至备节点。
二、高可用架构设计
1. 架构拓扑图
客户端 <---- VIP ----> [主LVS+Keepalived] <---- 内网 ----> 后端服务器集群└---- VIP ----> [备LVS+Keepalived]

  • 关键组件
    • 主备 LVS 节点:运行 LVS 负载均衡服务,共享 VIP。
    • Keepalived 服务:部署在主备 LVS 节点上,通过心跳机制同步状态。
    • 后端服务器:处理实际业务请求,需配置为 LVS 的 Real Server。
2. 工作流程
  1. 正常状态
    • 主节点持有 VIP,接收客户端请求并通过 LVS 调度算法分发给后端服务器。
    • 备节点处于待命状态,定期监听主节点心跳。
  2. 主节点故障
    • 备节点检测到主节点心跳丢失,接管 VIP 并成为新的主节点,继续处理流量。
    • 原主节点恢复后,自动转为备节点(需配置抢占模式)。
三、部署步骤(以 DR 模式为例)
1. 环境准备
角色IP 地址软件组件
主 LVS 节点192.168.1.100LVS+Keepalived
备 LVS 节点192.168.1.101LVS+Keepalived
虚拟 IP(VIP)192.168.1.200-
后端服务器 1192.168.1.110Nginx+Keepalived(健康检查)
后端服务器 2192.168.1.111Nginx+Keepalived(健康检查)
2. 主 LVS 节点配置
(1)安装 Keepalived
yum install keepalived -y
(2)配置 Keepalived 主节点(/etc/keepalived/keepalived.conf)
global_defs {router_id LVS_MASTER  # 节点标识,主备需不同
}vrrp_instance VI_1 {state MASTER          # 主节点状态(备节点为BACKUP)interface eth0        # 绑定VIP的网卡virtual_router_id 51  # VRRP组ID(主备需一致)priority 100          # 优先级(备节点设为90)advert_int 1          # 心跳间隔(秒)authentication {auth_type PASSauth_pass 1111    # 认证密码(主备需一致)}virtual_ipaddress {192.168.1.200/24  # 虚拟IP}
}# LVS健康检查(监控后端服务器)
virtual_server 192.168.1.200 80 {delay_loop 6         # 健康检查间隔(秒)lb_algo rr           # 调度算法(轮询)lb_kind DR           # 工作模式(DR)protocol TCP         # 协议类型# 后端服务器配置real_server 192.168.1.110 80 {weight 1          # 服务器权重TCP_CHECK {       # TCP健康检查connect_port 80connect_timeout 3retry 3delay_before_retry 3}}real_server 192.168.1.111 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3retry 3delay_before_retry 3}}
}
(3)配置 LVS 内核参数(DR 模式需关闭 ARP 响应)
echo "1" > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
3. 备 LVS 节点配置
  • Keepalived 配置:与主节点基本一致,需修改:
    state BACKUP          # 状态改为BACKUP
    priority 90           # 优先级低于主节点
    router_id LVS_BACKUP  # 节点标识不同
    
  • 内核参数配置:与主节点相同。
4. 后端服务器配置(以 Nginx 为例)
(1)绑定 VIP(lo 接口,避免响应 ARP 请求)
ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.200
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
(2)关闭 IP 转发
echo "0" > /proc/sys/net/ipv4/ip_forward
(3)启动 Nginx 服务
yum install nginx -y
systemctl start nginx
四、验证与维护
1. 状态检查
  • 查看 Keepalived 状态
    systemctl status keepalived
    # 主节点应显示"Master",备节点显示"Backup"
    
  • 查看 VIP 绑定情况
    ip addr show eth0 | grep 192.168.1.200  # 主节点应存在VIP
    
  • LVS 规则检查
    ipvsadm -L -n  # 应显示后端服务器列表
    
2. 故障切换测试
  1. 停止主节点 Keepalived 服务:
    systemctl stop keepalived
    
  2. 检查备节点是否接管 VIP,且 LVS 规则正常。
  3. 重启主节点 Keepalived,验证是否恢复为备节点(非抢占模式需手动切换)。
五、注意事项
  1. 网络互通性
    • 主备 LVS 节点需与后端服务器网络互通(DR 模式需共享 VIP 所在网段)。
    • 后端服务器响应流量需直接返回给客户端,避免经过 LVS(需配置路由或环回接口)。
  2. 健康检查优化
    • 根据业务类型选择检查方式(如 HTTP 检查需配置 URL 路径)。
    • 调整检查间隔(delay_loop)和重试次数,避免误判。
  3. 防火墙配置
    • 开放 Keepalived 心跳端口(UDP 112)和业务端口(如 80、443)。
    • 在 DR 模式中,确保后端服务器不响应 VIP 的 ARP 请求。
六、扩展场景
  • 多 VRRP 组:为不同业务配置独立的 VRRP 组,实现更细粒度的高可用。
  • 负载均衡与高可用分离:使用独立节点部署 Keepalived,避免与 LVS 共享资源。
  • 结合云平台:在云环境中通过浮动 IP(EIP)和私有网络实现 LVS+Keepalived 架构。

命令解析

全局配置部分

global_defs {router_id LVS_MASTER  # 节点标识,主备需不同
}

global_defs:定义全局参数

router_id:标识 Keepalived 实例的唯一名称,主备节点必须不同,用于区分不同的 Keepalived 节点

VRRP 实例配置

vrrp_instance VI_1 {state MASTER          # 主节点状态(备节点为BACKUP)interface eth0        # 绑定VIP的网卡virtual_router_id 51  # VRRP组ID(主备需一致)priority 100          # 优先级(备节点设为90)advert_int 1          # 心跳间隔(秒)authentication {auth_type PASSauth_pass 1111    # 认证密码(主备需一致)}virtual_ipaddress {192.168.1.200/24  # 虚拟IP}
}

  • vrrp_instance VI_1:定义 VRRP 实例,名称为 VI_1
  • state MASTER:当前节点的初始状态,主节点为 MASTER,备节点为 BACKUP
  • interface eth0:绑定虚拟 IP 的物理网卡
  • virtual_router_id 51:VRRP 组 ID,取值范围 1-255,主备节点必须相同
  • priority 100:节点优先级,数值越大优先级越高,主节点应高于备节点
  • advert_int 1:发送 VRRP 通告的时间间隔(心跳间隔)
  • authentication:VRRP 认证配置,防止非法节点加入
    • auth_type PASS:密码认证方式
    • auth_pass 1111:认证密码,主备必须一致
  • virtual_ipaddress:定义虚拟 IP 地址,可配置多个

LVS 虚拟服务器配置

virtual_server 192.168.1.200 80 {delay_loop 6         # 健康检查间隔(秒)lb_algo rr           # 调度算法(轮询)lb_kind DR           # 工作模式(DR)protocol TCP         # 协议类型

  • virtual_server:定义虚拟服务器,即负载均衡的 VIP 和端口
  • delay_loop 6:健康检查的时间间隔(秒)
  • lb_algo rr:负载均衡调度算法
    • rr:轮询(Round Robin)
    • wrr:加权轮询
    • lc:最少连接(Least Connections)
    • wlc:加权最少连接
  • lb_kind DR:LVS 工作模式
    • DR:直接路由模式(Direct Routing)
    • NAT:网络地址转换模式
    • TUN:IP 隧道模式
  • protocol TCP:使用 TCP 协议进行负载均衡

后端服务器配置

    real_server 192.168.1.110 80 {weight 1          # 服务器权重TCP_CHECK {       # TCP健康检查connect_port 80connect_timeout 3retry 3delay_before_retry 3}}

  • real_server:定义真实服务器(后端服务器)的 IP 和端口
  • weight 1:服务器权重,数值越大被分配的请求越多
  • TCP_CHECK:TCP 健康检查配置
    • connect_port 80:检查的端口
    • connect_timeout 3:连接超时时间(秒)
    • retry 3:重试次数
    • delay_before_retry 3:重试前的延迟时间(秒)

配置总结

这个配置文件实现了一个基于 DR 模式的 LVS 负载均衡器的高可用方案:

  1. 使用 Keepalived 实现主备节点自动切换
  2. 虚拟 IP 地址为 192.168.1.200,绑定在 eth0 网卡上
  3. 负载均衡采用轮询算法,工作在 DR 模式
  4. 对两个后端服务器(192.168.1.110 和 192.168.1.111)进行健康检查
  5. 当主节点出现故障时,备节点将接管虚拟 IP 继续提供服务

配置注意事项:

  • 主备节点的 virtual_router_id 和 auth_pass 必须相同
  • 主备节点的 state 和 priority 必须不同
  • 后端服务器需要配置 VIP 的回环地址,并设置合适的 ARP 参数
  • DR 模式下,后端服务器需要和 LVS 在同一个物理网段

相关文章:

  • 如何将 WSL 的 Ubuntu-24.04 迁移到其他电脑
  • Void:免费且隐私友好的 AI 编码利器,挑战 Cursor 地位?
  • 自学嵌入式 day 25 - 系统编程 标准io 缓冲区 文件io
  • 从法律层面剖析危化品证书:两证一证背后的安全逻辑
  • Flannel 支持的后端
  • RV1126-OPENCV 交叉编译
  • OpenCV CUDA模块直方图计算------在 GPU 上计算输入图像的直方图(histogram)函数histEven()
  • 缓存常见问题:缓存穿透、缓存雪崩以及缓存击穿
  • x86_64-apple-ios-simulator 错误
  • 分析rds的空间占用
  • VSCode远程开发-本地SSH隧道保存即时修改
  • 5.28 孔老师 nlp讲座
  • AugmentFree:解除 AugmentCode 限制的终极方案 如何快速清理vscode和AugmentCode缓存—windows端
  • 互联网大厂Java求职面试:AI大模型融合下的企业知识库架构设计与性能优化
  • 多模态大语言模型arxiv论文略读(九十九)
  • ZigBee 协议:开启物联网低功耗通信新时代
  • 在 Ubuntu 上安装 NVM (Node Version Manager) 的步骤
  • 从“固定“到“流动“:移动充电如何重塑用户体验?
  • 每日算法 -【Swift 算法】盛最多水的容器
  • 深入理解 SQL 的 JOIN 查询:从基础到高级的第一步
  • ps与dw怎么做网站/火星时代教育培训机构官网
  • 教育网站建设的目的/如何加入广告联盟赚钱
  • 做卷子的网站/互联网推广运营
  • 百度搜索网站被跳转到其他网站/搜索引擎推广排名
  • 如何做网站推广广告/搭建网站费用是多少
  • 政府网站/百度开户代理公司