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

六十、【Linux系统lvs应用】LVS简介 、 LVS-NAT集群 、 LVS-DR集群

LVS架构全景图

核心组件
NAT模式
DR模式
TUN模式
返回流量
直接返回
IP隧道
IPVS内核模块
LVS调度器
Keepalived
健康检查
客户端
后端服务器
后端服务器
后端服务器

LVS 功能概述

LVS (Linux Virtual Server) 是 Linux 内核内置的高性能负载均衡解决方案,提供三种工作模式:NAT、DR 和 TUN。核心组件包括:

  • 负载调度器:接收客户端请求并分发到后端服务器
  • 真实服务器集群:实际处理请求的应用服务器
  • 共享存储:保证服务器间数据一致性

NAT 模式特点

  • 调度器修改目标 IP 为后端服务器
  • 后端服务器返回流量经过调度器
  • 支持端口映射,调度器性能瓶颈

DR 模式特点

  • 调度器仅修改 MAC 地址
  • 后端服务器直接响应客户端
  • 高性能,要求服务器在同一局域网

一、LVS-NAT 集群配置

1. 网络拓扑

客户端 (192.168.1.100) → LVS调度器 (外:192.168.1.10, 内:10.0.0.1) → 后端服务器 (10.0.0.2, 10.0.0.3)

2. 调度器配置

# 开启IP转发
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward# 安装IPVS管理工具
[root@localhost ~]# yum install ipvsadm -y# 创建虚拟服务
[root@localhost ~]# ipvsadm -A -t 192.168.1.10:80 -s rr# 添加后端服务器
[root@localhost ~]# ipvsadm -a -t 192.168.1.10:80 -r 10.0.0.2:80 -m
[root@localhost ~]# ipvsadm -a -t 192.168.1.10:80 -r 10.0.0.3:80 -m# 查看配置
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.10:80 rr-> 10.0.0.2:80                  Masq    1      0          0-> 10.0.0.3:80                  Masq    1      0          0

3. 后端服务器配置

# 设置网关为调度器内网IP
[root@localhost ~]# ip route add default via 10.0.0.1# 启动Web服务
[root@localhost ~]# systemctl start httpd

二、LVS-DR 集群配置

1. 网络拓扑

客户端 (192.168.1.100) → LVS调度器 (192.168.1.10) → 后端服务器 (192.168.1.11, 192.168.1.12)

2. 调度器配置

# 创建虚拟IP(VIP)
[root@localhost ~]# ip addr add 192.168.1.10/32 dev lo# 配置IPVS服务
[root@localhost ~]# ipvsadm -A -t 192.168.1.10:80 -s wrr
[root@localhost ~]# ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.11 -g -w 2
[root@localhost ~]# ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.12 -g -w 1

3. 后端服务器配置

# 隐藏VIP响应(ARP抑制)
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce# 添加VIP到lo接口
[root@localhost ~]# ip addr add 192.168.1.10/32 dev lo

三、健康检查配置

# 安装监控脚本
[root@localhost ~]# cat > /etc/keepalived/check_http.sh <<EOF
#!/bin/bash
curl -s http://localhost >/dev/null || exit 1
EOF
[root@localhost ~]# chmod +x /etc/keepalived/check_http.sh# 配置Keepalived
[root@localhost ~]# vi /etc/keepalived/keepalived.conf
vrrp_script chk_http {script "/etc/keepalived/check_http.sh"interval 2weight 2
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.10}track_script {chk_http}
}

命令总结表格

演示命令功能描述关键参数
ipvsadm -A -t VIP:80 -s rr创建虚拟服务-A 添加服务, -s 调度算法
ipvsadm -a -t VIP:80 -r RIP -mNAT模式添加后端-r 真实服务器, -m NAT模式
ipvsadm -a -t VIP:80 -r RIP -gDR模式添加后端-g DR直连模式
ip addr add VIP/32 dev lo配置虚拟IP需在调度器和后端执行
echo 1 > /proc/sys/net/ipv4/ip_forward开启IP转发NAT模式必需
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore抑制ARP响应DR模式必需
keepalived -D启动高可用守护进程提供故障切换

功能对比分析

LVS工作模式对比

特性NAT模式DR模式
网络要求调度器需双网卡所有服务器同网段
性能较低(双向流量)高(仅入站流量)
配置复杂度简单复杂(需ARP抑制)
服务器可见性隐藏(私有IP)暴露(公网IP)
端口映射支持不支持
典型场景中小流量HTTP/HTTPS高并发TCP服务

调度算法选择

算法类型适用场景
rr静态简单轮询(服务器性能均等)
wrr静态加权轮询(服务器性能不均)
lc动态最小连接数(长连接服务)
wlc动态加权最小连接(最优负载均衡)
sh静态源IP哈希(会话保持)

生产环境建议

  1. DR模式优化

    # 调整内核参数提升性能
    echo 1024 > /proc/sys/net/ipv4/vs/conn_tab_bits
    echo 30 > /proc/sys/net/ipv4/vs/expire_nodest_conn
    
  2. 会话保持配置

    # 基于cookie的持久连接
    ipvsadm -A -t 192.168.1.10:80 -s sh
    ipvsadm -p 300  # 300秒会话保持
    
  3. 健康检查增强

    # TCP检查
    ipvsadm --add-server -t 192.168.1.10:80 -r 192.168.1.11 --check-interval 5 --check-type tcp
    
  4. 安全防护

    # 防止SYN洪水攻击
    echo 1 > /proc/sys/net/ipv4/vs/syn_protect
    

故障排查流程

服务不可用
VIP是否存活?
检查后端状态
检查Keepalived
后端健康?
检查网络路径
修复后端服务
数据包可达?
检查调度规则
修复网络
问题解决

故障排查命令

# 查看实时连接
ipvsadm -Lnc# 检查后端状态
ipvsadm -Ln --stats# 跟踪数据包路径
tcpdump -i eth0 host 192.168.1.10

企业级架构

Keepalived
VRRP
备LVS
主LVS
客户端
后端服务器1
后端服务器2

电商平台架构案例

用户
CDN
LVS集群
Web层
API层
服务层
数据库集群
http://www.dtcms.com/a/327601.html

相关文章:

  • 微服务ETCD服务注册和发现
  • 3 Abp 核心框架(Core Framework)
  • 过程设计工具深度解析-软件工程之详细设计(补充篇)
  • 数字孪生如何推动智慧园区精细化管理
  • CV 医学影像分类、分割、目标检测,之【皮肤病分类】项目拆解
  • OHEM (在线难例挖掘) 详细讲解
  • 【Vue.js】生产设备规划工具(报价单Word文档生成)【开发全流程】
  • 无人机航拍数据集|第14期 无人机水体污染目标检测YOLO数据集3000张yolov11/yolov8/yolov5可训练
  • etcd 备份与恢复
  • Etcd客户端工具Etcd Workbench更新了1.2.0版本!多语言支持了中文,新增了许多快捷功能使用体验再次提升
  • Spark 运行流程核心组件(一)作业提交
  • 干货分享|如何从0到1掌握R语言数据分析
  • 小红书笔记信息获取_实在智能RPA源码解读
  • 邦纳BANNER相机视觉加镜头PresencePLUSP4 RICOH FL-CC2514-2M工业相机
  • C++实现LINGO模型处理程序
  • Java结课案例-景点人数统计的几种场景
  • 日期格式化成英文月,必須指定語言環境
  • Secure CRT做代理转发
  • HTTP应用层协议-长连接
  • 记对外国某服务器的内网渗透
  • C++少儿编程(二十二)—条件结构
  • 机械臂运动规划与控制12讲
  • SQL 语言分类
  • 后端学习路线
  • 3D文档控件Aspose.3D实用教程:在 C# 中将 3MF 文件转换为 STL
  • 开疆智能Ethernet转ModbusTCP网关连接发那科机器人与三菱PLC配置案例
  • Spring Boot部署万亿参数模型推理方案(深度解析)
  • css之再谈浮动定位float(深入理解篇)
  • 物联网、大数据与云计算持续发展,楼宇自控系统应用日益广泛
  • 黑马程序员mysql课程p65 安装linux版本的mysql遇到问题