集群、分布式与 LVS 负载均衡详解

一、集群和分布式简介

1.1 系统性能扩展方式

  • Scale UP:向上扩展,通过增强单台设备的性能(如提升 CPU、内存、硬盘等)来提高系统性能。
  • Scale Out:向外扩展,通过增加设备数量,并解决设备间的调度分配问题,形成集群(Cluster)来提升系统性能。

1.2 集群(Cluster)

集群(Cluster)是为解决某个特定问题,将多台计算机组合起来形成的单个系统。常见的三种类型如下:

  • LB(Load Balancing,负载均衡):由多个主机组成,每个主机仅承担一部分访问请求,实现请求的均衡分配。
  • HA(High Availability,高可用) :解决单点故障(SPOF,Single Point Of Failure)问题,确保服务持续可用。
    • MTBF(Mean Time Between Failure):平均无故障时间,即系统正常运行的时间。
    • MTTR(Mean Time To Restoration/Repair):平均恢复前时间,即系统发生故障后恢复正常的时间。
    • 可用性公式:A = MTBF /(MTBF + MTTR),取值范围为 (0,1),常见指标为 99%、99.5%、99.9%、99.99%、99.999%。
    • SLA(Service Level Agreement,服务等级协议):服务提供商与用户间定义的协定,规定服务性能和可用性标准(如 "三个 9""四个 9"),未达标可能有惩罚措施,运维的核心目标是达成 SLA。
    • 停机时间分为计划内停机计划外停机,运维重点关注计划外停机。
  • HPC(High-performance Computing,高性能计算):属于国家战略资源,不在常规课程范围内。

1.3 分布式

分布式系统通过将任务拆分到多台设备上协同完成,常见应用场景包括:

  • 分布式存储:Ceph、GlusterFs、FastDFS、MogileFs 等。
  • 分布式计算:Hadoop、Spark 等。
  • 分布式常见应用
    • 分布式应用:服务按功能拆分,采用微服务架构。
    • 分布式静态资源:静态资源(如图片、视频)存储在不同的集群上。
    • 分布式数据和存储:使用 key-value 缓存系统(如 Redis 集群)。
    • 分布式计算:针对特殊业务(如大数据处理)使用分布式计算框架(如 Hadoop 集群)。

1.4 集群和分布式的区别

  • 集群:同一业务系统部署在多台服务器上,每台服务器功能、数据、代码完全一致,通过 "提高单位时间内执行的任务数" 提升效率。
  • 分布式:一个业务拆分为多个子业务(或本身是不同业务),部署在多台服务器上,每台服务器功能、数据、代码有差异,组合起来才是完整业务。通过 "缩短单个任务的执行时间" 提升效率。

举例

  • 大型网站的负载均衡集群:前端部署负载均衡服务器,后端多台服务器运行同一业务,某台服务器故障时其他服务器可顶替。
  • 分布式系统:若一个业务拆分为用户服务、订单服务、支付服务,分别部署在不同服务器上,某台服务器故障会导致对应子业务失效。

二、LVS(Linux Virtual Server)运行原理

2.1 LVS 简介

LVS(Linux Virtual Server)是内核集成的负载调度器,由章文嵩博士开发。阿里的四层 SLB(Server Load Balance)基于 LVS+keepalived 实现。

  • 核心术语
    • VS(Virtual Server):负载调度器,负责请求调度。
    • RS(Real Server):真实服务器,负责实际提供服务。

2.2 LVS 集群体系结构

LVS 集群由 VS(调度器)和多个 RS(真实服务器)组成,VS 接收客户端请求并调度至合适的 RS,RS 处理请求后响应客户端(具体流程因工作模式而异)。

2.3 LVS 核心概念

  • CIP(Client IP):客户端 IP 地址。
  • VIP(Virtual Server IP):VS 对外提供服务的 IP 地址(外网 IP)。
  • DIP(Director IP):VS 内网的 IP 地址(与 RS 通信的 IP)。
  • RIP(Real Server IP):RS 的 IP 地址。

访问流程:CIP <--> VIP == DIP <--> RIP

2.4 LVS 集群的类型

LVS 有四种核心工作模式,分别通过不同的报文处理方式实现负载均衡:

2.4.1 NAT 模式(lvs-nat)
  • 本质:多目标 IP 的 DNAT(目标地址转换),通过修改请求报文的目标 IP 和端口为某台 RS 的 RIP 和端口实现转发。
  • 特点
    • RIP 和 DIP 需在同一 IP 网络(建议使用私网地址),且 RS 的网关必须指向 DIP。
    • 请求报文和响应报文均需经过 Director,Director 易成为系统瓶颈。
    • 支持端口映射(可修改请求报文的目标端口)。
    • VS 必须是 Linux 系统,RS 可是任意 OS。
2.4.2 NAT 模式数据逻辑
  1. 客户端发送请求,数据包包含源 IP(CIP)、目标 IP(VIP)、目标端口(如 9000)。
  2. VS 接收请求后,执行 DNAT:将目标 IP(VIP)改为 RS 的 RIP,目标端口改为 RS 的端口(如 80)。
  3. RS 处理请求后,响应数据包包含源 IP(RIP)、目标 IP(CIP)、目标端口(9000)。
  4. VS 接收响应后,修改源 IP(RIP→VIP)、源端口(80→9000),再回传给客户端。
  5. 注意 :NAT 模式下,客户端请求和响应均经过 VS,可能导致 VS 阻塞;需清理 iptables 规则(IPVS 工作在 PREROUTING 和 INPUT 链之间,iptables 规则可能干扰)。
2.4.3 DR 模式(lvs-dr)
  • 本质:Direct Routing(直接路由),LVS 默认模式,应用最广泛。通过为请求报文重新封装 MAC 首部转发:源 MAC 为 DIP 所在接口的 MAC,目标 MAC 为选中 RS 的 RIP 所在接口的 MAC;源 IP / 端口、目标 IP / 端口均不变。
2.4.4 DR 模式数据传输过程
  1. 客户端发送数据帧:包含源 IP(CIP)、源 MAC(客户端 MAC)、目标 IP(VIP)、目标 MAC(VIP 的 MAC)。
  2. VS 接收后,修改数据帧的目标 MAC 为选中 RS 的 MAC(如 RS1 的 MAC),其他信息不变。
  3. RS 接收数据帧后,处理请求并响应,响应数据包包含源 IP(VIP)、源 MAC(RS1 的 MAC)、目标 IP(CIP)、目标 MAC(客户端 MAC),直接回传给客户端。
  4. 仅请求报文经过 Director,响应报文由 RS 直接发往客户端,性能优于 NAT。
  5. 不支持端口映射,RS 可使用大多数 OS。
2.4.5DR模式数据传输过程
  • Director 和所有 RS 均需配置 VIP(避免地址冲突需特殊处理)。
  • 需确保前端路由器将目标 IP 为 VIP 的请求发往 Director(可通过网关静态绑定、arptables 或内核参数限制 ARP 响应)。
  • RIP 与 DIP 需在同一 IP 网络(可使用私网地址),RS 的网关不能指向 DIP(避免响应报文经过 VS)。
  • 仅请求报文经过 Director,响应报文由 RS 直接发往客户端,性能优于 NAT。
  • 不支持端口映射,RS 可使用大多数 OS。
2.4.6 TUN 模式(lvs-tun,了解)
  • 本质:在原请求报文外封装新 IP 首部(源 IP 为 DIP,目标 IP 为 RIP),原 IP 首部(源 IP=CIP,目标 IP=VIP)不变;RS 处理后直接响应客户端(源 IP=VIP,目标 IP=CIP)。
2.4.7 TUN 模式特点
  • DIP、VIP、RIP 均需为公网地址(支持远距离通信)。
  • RS 的网关一般不指向 DIP,请求报文经过 Director,响应报文直接发往客户端。
  • 不支持端口映射,RS 的 OS 需支持隧道功能。
2.4.8 fullnat 模式(lvs-fullnat,了解)
  • 本质:同时修改请求报文的源 IP(CIP→DIP)和目标 IP(VIP→RIP)。
  • 特点
    • VIP 为公网地址,RIP 和 DIP 为私网地址(可不在同一网络),RS 网关一般不指向 DIP。
    • 请求和响应报文均经过 Director(RS 响应给 DIP,再由 Director 转发给客户端)。
    • 支持端口映射。
2.4.9 LVS 工作模式总结
模式 请求 / 响应路径 网络要求 端口映射 RS OS 限制
lvs-nat 均经过 Director RIP 与 DIP 同网段,RS 网关指向 DIP 支持
lvs-dr 请求经 Director,响应直连客户端 RIP 与 DIP 同网段 不支持
lvs-tun 请求经 Director,响应直连客户端 均为公网地址 不支持 需支持隧道
lvs-fullnat 均经过 Director RIP 与 DIP 可不同网段 支持
2.4.10. fullnet模式(了解)

ullnat:通过同时修改请求报文的源IP地址和目标IP地址进行转发

CIP --> DIP

VIP --> RIP

1.VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP

2.RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client

3.请求和响应报文都经由Director

4.支持端口映射

2.5 LVS 的调度算法

LVS 调度算法分为静态方法 (不考虑 RS 负载)和动态方法(基于 RS 当前负载调度)。

2.5.1 静态调度算法
  • RR(Round Robin,轮询):按顺序将请求分配给 RS,不考虑 RS 性能差异,适用于 RS 配置一致的场景。
  • WRR(Weighted RR,加权轮询):根据 RS 权重分配请求,权重高的 RS 被调度次数多(性能好的 RS 可设高权重)。
  • SH(Source Hashing,源地址哈希):对客户端 IP 哈希,同一 IP 的请求始终调度到第一次选中的 RS,实现会话绑定。
  • DH(Destination Hashing,目标地址哈希):对目标地址哈希,同一目标地址的请求始终调度到第一次选中的 RS,适用于正向代理缓存场景(如宽带运营商)。
2.5.2 动态调度算法

基于 RS 当前负载(Overhead,负载值)调度,Overhead 越小的 RS 优先被选中。

  • LC(Least Connections,最少连接):适用于长连接应用,Overhead = 活动连接数 ×256 + 非活动连接数。
  • WLC(Weighted LC,加权最少连接):默认调度算法,Overhead =(活动连接数 ×256 + 非活动连接数)/ 权重。
  • SED(Shortest Expection Delay,最短预期延迟):初始连接优先分配给高权重 RS,Overhead =(活动连接数 + 1 + 非活动连接数)×256 / 权重。
  • NQ(Never Queue,无队列):第一轮均匀分配请求,后续按 SED 调度。
  • LBLC(Locality-Based LC,基于本地的最少连接):动态 DH 算法,适用于正向代理场景。
  • LBLCR(LBLC with Replication,带复制的 LBLC):解决 LBLC 负载不均衡问题,将负载重的 RS 任务复制到负载轻的 RS。
2.5.3 内核 4.15 + 新增调度算法
  • FO(Weighted Fail Over,加权故障转移):常用于灰度发布。遍历 RS 链表,选择未过载(未设置 IP_VS_DEST_F_OVERLOAD 标志)且权重最高的 RS;过载 RS 不被调度。
  • OVF(Overflow-connection,溢出连接):基于 RS 活动连接数和权重调度。优先调度到权重最高的 RS,直到其活动连接数超过权重,再调度到下一个高权重 RS(需满足未过载、权重非零)。

三、LVS 部署命令介绍

3.1 LVS 软件相关信息

  • 程序包:ipvsadm
  • Unit File:ipvsadm.service
  • 主程序:/usr/sbin/ipvsadm
  • 规则保存工具:/usr/sbin/ipvsadm-save
  • 规则重载工具:/usr/sbin/ipvsadm-restore
  • 配置文件:/etc/sysconfig/ipvsadm-config
  • 调度规则文件:/etc/sysconfig/ipvsadm

3.2 ipvsadm 命令核心功能

ipvsadm 用于管理 LVS 集群服务和真实服务器(RS),包括增删改查操作。

管理集群服务
复制代码
 ipvsadm -A|E -t(tcp)|u(udp)|f(防护墙标签) \
 
        service-address(集群地址) \
 
        [-s scheduler(调度算法)] \
 
        [-p [timeout]] \
 
        [-M netmask] \
 
        [--pepersistence_engine] \
 
 
 
        [-b sched-flags] ipvsadm -D -t|u|f service-address 删除
 
        ipvsadm --C 清空
 
        ipvsadm --R 重载
 
        ipvsadm -S [-n] 保存
  • 参数说明
    • -A:新增集群服务;-E:修改集群服务。
    • -t:TCP 服务;-u:UDP 服务;-f:防火墙标记(数字)。
    • -s:指定调度算法(默认 WLC)。
    • -p [timeout]:设置持久连接超时(同一客户端在超时内请求调度到同一 RS)。
管理集群中的 Real Server
复制代码
ipvsadm -a|e -t|u|f service-address -r server-address [-g | -i| -m](工作模式) [-w weight](权重)
 
ipvsadm -d -t|u|f service-address -r server-address            删除RS
 
ipvsadm -L|l [options]                                         查看rs
 
ipvsadm -Z [-t|u|f service-address]                            清楚计数器
  • 参数说明
    • -a:新增 RS;-e:修改 RS。
    • -r:指定 RS 地址。
    • -g:DR 模式;-i:TUN 模式;-m:NAT 模式。
    • -w:设置 RS 权重。

3.3 LVS 集群规则增删改示例

1. 集群服务管理
复制代码
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
 
-A           #添加
 
-E           #修改
 
-t            #tcp服务
 
-u           #udp服务
 
-s           #指定调度算法,默认为WLC
 
-p           #设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver
 
-f            #firewall mask 火墙标记,是一个数字

#增加

复制代码
[root@DR-server ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
 
[root@DR-server ~]# ipvsadm -A -f 66 -p 3000

#修改

复制代码
[root@DR-server ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr -p 3000

#删除

复制代码
[root@DR-server ~]# ipvsadm -D -t 172.25.254.100:80
 
[root@DR-server ~]# ipvsadm -D -f 66

2.管理集群中RealServer的曾增删改

复制代码
ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]
 
-a           #添加realserver
 
-e           #更改realserver
 
-t            #tcp协议
 
-u           #udp协议
 
-f            #火墙 标签
 
-r            #realserver地址
 
-g           #直连路由模式
 
-i            #ipip隧道模式
 
-m          #nat模式
 
-w           #设定权重
 
-Z           #清空计数器
 
-C           #清空lvs策略
 
-L            #查看lvs策略
 
-n           #不做解析 --rate :输出速率信息

#添加

复制代码
[root@DR-server ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.30 -m
 
[root@DR-server ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.40 -m -w 2

#更改

复制代码
[root@DR-server ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30 -m -w 1
 
[root@DR-server ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30 -i -w 1

#删除

复制代码
[root@DR-server ~]# ipvsadm -d -t 172.25.254.100:80 -r 192.168.0.30

pvs规则:/proc/net/ip_vs

ipvs连接:/proc/net/ip_vs_conn

四、LVS 实战案例

4.1 部署 NAT 模式集群案例

4.1.1 实验环境
  • 调度器(VS):双网卡(外网网卡:桥接,内网网卡:仅主机,IP:192.168.0.100)。
  • 真实服务器(RS):单网卡(仅主机,IP:192.168.1.10、192.168.1.20),网关指向 VS 内网 IP(192.168.0.100),无需外网。
4.1.1.实验环境

真实服务器(RS)

调度器

4.1.2.配置命令

1.在node1中启用内核路由功能

复制代码
    ]# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf
 
    ]# sysctl --system

2.在node1中安装ipvsadm

复制代码
]# yum install ipvsadm -y

3.在node1中添加调度策略

复制代码
]# ipvsadm -A -t 172.0.0.30:80 -s rr
 
]# ipvsadm -a -t 172.0.0.30:80 -r 192.168.1.10:80 -m
 
]# ipvsadm -a -t 172.0.0.30:80 -r 192.168.1.20:80 -m

4.查看策略

复制代码
]# ipvsadm -Ln
 
IP Virtual Server version 1.2.1 (size=4096)
 
Prot LocalAddress:Port Scheduler Flags
 
    -> RemoteAddress:Port                       Forward Weight ActiveConn InActConn
 
TCP 172.0.0.30:80 rr
 
    -> 192.168.1.10:80                             Masq         1         0          0
 
    -> 192.168.1.20:80                             Masq         1         0          0

]# cat /proc/net/ip_vs
 
IP Virtual Server version 1.2.1 (size=4096)
 
Prot LocalAddress:Port Scheduler Flags
 
    -> RemoteAddress:Port Forward Weight ActiveConn InActConn
 
TCP AC19FE64:0050 rr
 
-> C0A80066:0050                                  Masq          1          0          0
 
-> C0A80065:0050                                  Masq          1          0          0

]# cat /proc/net/ip_vs
 
IP Virtual Server version 1.2.1 (size=4096)
 
Prot LocalAddress:Port Scheduler Flags
 
    -> RemoteAddress:Port Forward Weight ActiveConn InActConn
 
TCP AC19FE64:0050 rr
 
-> C0A80066:0050                                  Masq          1          0          0
 
-> C0A80065:0050                                  Masq          1          0          0

]# cat /proc/net/ip_vs_conn
 
Pro    FromIP      FPrt     ToIP            TPrt     DestIP          DPrt     State               Expires  PEName  PEData
 
TCP   AC19FE01 D82F    AC19FE64   0050   C0A80066    0050    TIME_WAIT     117
 
TCP   AC19FE01 D830    AC19FE64   0050   C0A80065    0050    TIME_WAIT     117
 
TCP   AC19FE01 D832    AC19FE64   0050   C0A80065    0050    TIME_WAIT     117
 
TCP   AC19FE01 D834    AC19FE64   0050   C0A80065    0050    TIME_WAIT     117
 
TCP   AC19FE01 D831    AC19FE64   0050   C0A80066    0050    TIME_WAIT     117
 
TCP   AC19FE01 D833    AC19FE64   0050   C0A80066    0050    TIME_WAIT     117

5.保存规则

复制代码
]# ipvsadm -Sn
 
-A -t 172.0.0.30:80 -s rr
 
-a -t 172.0.0.30:80 -r 192.168.1.10:80 -m -w 1
 
-a -t 172.0.0.30:80 -r 192.168.1.20:80 -m -w 1
 
]# ipvsadm -Sn > /etc/sysconfig/ipvsadm-config

6.删除所有规则

复制代码
]# ipvsadm -C
 
]# ipvsadm -Ln
 
IP Virtual Server version 1.2.1 (size=4096)
 
Prot LocalAddress:Port Scheduler Flags
 
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

7.重新加载规则

复制代码
]# ipvsadm -R < /etc/sysconfig/ipvsadm-config ]
 
# ipvsadm -Ln
 
IP Virtual Server version 1.2.1 (size=4096)
 
Prot LocalAddress:Port Scheduler Flags
 
    -> RemoteAddress:Port                       Forward Weight ActiveConn InActConn
 
TCP 172.0.0.30:80 rr
 
    -> 192.168.1.10:80                             Masq         1         0          0
 
    -> 192.168.1.20:80                             Masq         1         0          0

8.以上操作均为临时,如果想开机启动

9.测试:

复制代码
]# for N in {1..6};do curl 172.0.0.30;done
 
RS2 server - 192.168.1.20
 
RS1 server - 192.168.1.10
 
RS2 server - 192.168.1.20
 
RS1 server - 192.168.1.10
 
RS2 server - 192.168.1.20
 
RS1 server - 192.168.1.10

10.修改为权重调用算法

复制代码
]# ipvsadm -E -t 172.25.254.100:80 -s wrr
 
]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.101:80 -m -w 2
 
]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.102:80 -m -w 1

测试效果

复制代码
]# for N in {1..6};do curl 172.0.0.30;done
 
RS2 server - 192.168.1.20
 
RS1 server - 192.168.1.10
 
RS2 server - 192.168.1.10
 
RS1 server - 192.168.1.20
 
RS2 server - 192.168.1.10
 
RS1 server - 192.168.1.10

4.2 部署 DR 模式集群案例

4.2.1 实验环境
  • 客户端:IP 172.25.254.10/24,网关指向 VS 的 VIP(172.25.254.100)。
  • VS(调度器):VIP 192.168.0.100,DIP 192.168.0.200,网关 192.168.0.10。
  • RS1:RIP 192.168.0.101,VIP 192.168.0.100(lo 接口),网关 192.168.0.10。
  • RS2:RIP 192.168.0.102,VIP 192.168.0.100(lo 接口),网关 192.168.0.10。
4.2.2 解决 VIP 地址冲突

DR 模式中所有节点均配置 VIP,需限制 ARP 响应和通告避免冲突,通过修改 RS 内核参数实现:

复制代码
#在客户端主机中为nat模式网卡
 
[root@client ~]# vim/etc/NetworkManager/system-connections/eth0.nmconnection
 
[connection]
 
id=eth160
 
type=ethernet
 
interface-name=eth160
 
[ipv4]
 
method=manual
 
address1=172.25.254.10/24,172.25.254.100

[root@client ~]# route -n
 
Kernel IP routing table
 
Destination      Gateway                 Genmask        Flags     Metric     Ref     Use     Iface
 
0.0.0.0              172.25.254.100        0.0.0.0            UG        100          0         0        eth160
 
172.25.254.0     0.0.0.0                     255.255.255.0 U          100          0         0        eth160

#在路由主机中设定双网卡,eth0为nat网卡,eth1为仅主机网卡

#对于eth160的设定

复制代码
[root@DR-server ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
 
[connection]
 
id=eth160
 
type=ethernet
 
interface-name=eth160
 
 
 
[ipv4] method=manual
 
address1=172.25.254.100/24

#对于eth192的设定

复制代码
[root@DR-server ~]# vim /etc/NetworkManager/system-connections/eth1.nmconnection
 
[connection]
 
id=eth192
 
type=ethernet
 
interface-name=eth192
 
 
 
[ipv4]
 
method=manual
 
address1=192.168.0.10/24

#对于dr调度器设定网卡为仅主机模式

复制代码
[root@dr-server ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
 
[connection]
 
id=eth160
 
type=ethernet
 
interface-name=eth160
 
 
 
[ipv4]
 
method=manual
 
address1=192.168.0.200/24,192.168.0.10

root@dr-server \~\]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.10 0.0.0.0 UG 100 0 0 eth160 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth16 ![](https://i-blog.csdnimg.cn/direct/9777637b8c6640a18e262eb76706fb9d.png) [root@webserver1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.10 0.0.0.0 UG 100 0 0 eth160 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth160 ![](https://i-blog.csdnimg.cn/direct/2943dabaf23b4a13ba695e38bc9d0377.png) #对于RS2中的网络设定 [root@webserver2 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection [connection] id=eth0 type=ethernet interface-name=eth0 [ipv4] method=manual address1=192.168.0.102/24,192.168.0.10 \[root@webserver2 \~\]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.10 0.0.0.0 UG 100 0 0 eth160 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth160 ![](https://i-blog.csdnimg.cn/direct/e1168e4c6c1d4aa5af2dc5db1fad149a.png) 确保每台主机ping都可以互相通信 4.2.2解决vip响应问题 DR模型中各主机上均需要配置VIP,解决地址冲突的方式有三种: (1)在前端网关做静态绑定 (2)在各RS使用arptables (3)在各RS修改内核参数,来限制arp响应和通告的级别 限制响应级别:arp_ignore 0:默认值,表示可使用本地任意接口上配置的任意地址进行响应 1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应 限制通告级别:arp_announce 0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告 1:尽量避免将接口信息向非直接连接网络进行通告 2:必须避免将接口信息向非本网络进行通告 # RS1配置 [root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore [root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore [root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce [root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # RS2配置(同上) [root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore [root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore [root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce [root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 4.2.3.配置详情 配置要点 1.Director服务器采用双IP桥接网络,一个是VPP,一个DIP 2.Web服务器采用和DIP相同的网段和Director连接 3.每个Web服务器配置VIP 4.每个web服务器可以出外网 配置内容如下: 在RS1和RS2中解决响应问题 [root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore [root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore [root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce [root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce [root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore [root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore [root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce [root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce ![](https://i-blog.csdnimg.cn/direct/561b9261da524ff2a7b9103242e28a20.png) ![](https://i-blog.csdnimg.cn/direct/a5a71263a3d44fd28f8f611d5a6b153c.png) 在lvs中配置策略 [root@lvs ~]# ipvsadm -A -t 192.168.0.100:80 -s rr [root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -g [root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -g \[root@lvs \~\]# 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.0.100:80 rr -\> 192.168.0.101:80 Route 1 0 0 -\> 192.168.0.102:80 Route 1 0 0 ![](https://i-blog.csdnimg.cn/direct/eac7409eedb44e2883282a2cd9f5939e.png) ![](https://i-blog.csdnimg.cn/direct/89a84a286a9646f788b3fd578c5173e5.png) #### 4.3 防火墙标记解决多端口轮询错乱问题 ##### 4.3.1 问题描述 当 RS 同时提供 80(HTTP)和 443(HTTPS)服务时,默认 LVS 会对两个端口分别轮询,可能导致同一客户端的 HTTP 和 HTTPS 请求被分配到不同 RS(如 80→RS1,443→RS2),出现会话不一致。 ##### 4.3.2 解决方案(防火墙标记) 通过防火墙标记(FWM)将 80 和 443 端口归为同一集群服务,实现统一调度。 ]# dnf install mod_ssl -y ]# systemctl restart httpd ![](https://i-blog.csdnimg.cn/direct/0834a929e0304dabbe925604144b74bf.png) 在lvs中设置调度,因为我们要调度80和443两个端口所以我们需要设定两组策略 ]# ipvsadm -C [root@lvs ~]# ipvsadm -A -t 192.168.0.100:80 -s rr [root@lvs ~]# ipvsadm -A -t 192.168.0.100:443 -s rr [root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -g [root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -g [root@lvs ~]# ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.102:80 -g [root@lvs ~]# ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.101:80 -g \[root@lvs \~\]# 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.0.100:80 rr -\> 192.168.0.101:80 Route 1 0 0 -\> 192.168.0.102:80 Route 1 0 0 TCP 192.168.0.100:443 rr -\> 192.168.0.101:443 Route 1 0 0 -\> 192.168.0.102:443 Route 1 0 0 ![](https://i-blog.csdnimg.cn/direct/152ffadf49e84e6a96ea0356ac021bd4.png) 测试问题 ​ [root@node10 ~]# curl http://192.168.0.100;curl -k https://192.168.0.100 RS1 server - 192.168.0.101 RS1 server - 192.168.0.101 ​ 当访问vip时两次调度都到了101 ![](https://i-blog.csdnimg.cn/direct/ff8802070533425f84079dd8c50409bd.png)