六十、【Linux系统lvs应用】LVS简介 、 LVS-NAT集群 、 LVS-DR集群
LVS架构全景图
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 -m | NAT模式添加后端 | -r 真实服务器, -m NAT模式 |
ipvsadm -a -t VIP:80 -r RIP -g | DR模式添加后端 | -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哈希(会话保持) |
生产环境建议
-
DR模式优化
# 调整内核参数提升性能 echo 1024 > /proc/sys/net/ipv4/vs/conn_tab_bits echo 30 > /proc/sys/net/ipv4/vs/expire_nodest_conn
-
会话保持配置
# 基于cookie的持久连接 ipvsadm -A -t 192.168.1.10:80 -s sh ipvsadm -p 300 # 300秒会话保持
-
健康检查增强
# TCP检查 ipvsadm --add-server -t 192.168.1.10:80 -r 192.168.1.11 --check-interval 5 --check-type tcp
-
安全防护
# 防止SYN洪水攻击 echo 1 > /proc/sys/net/ipv4/vs/syn_protect
故障排查流程
故障排查命令
# 查看实时连接
ipvsadm -Lnc# 检查后端状态
ipvsadm -Ln --stats# 跟踪数据包路径
tcpdump -i eth0 host 192.168.1.10