一、集群和分布式简介
1.系统性能扩展方式
Scale Up(向上扩展):通过增强单台服务器的硬件性能(如提升 CPU、内存、存储等)来提高处理能力,适用于业务初期或对单点性能要求高的场景。这种方式简单易行,但受限于硬件上限,且成本较高。
Scale Out(向外扩展):通过增加服务器数量并组成集群,将任务分配到多台设备上协同处理,需解决调度分配问题,适用于高并发、高可用需求的场景。这种扩展方式具有良好的灵活性和成本优势,尤其适合分布式系统架构。
2.集群 Cluster
Cluster:集群是为了解决某个特定问题将多台计算机组合起来形成的单个系统
Cluster 常见的三种类型:
1)LB:LoadBalancing(负载均衡)
由多台主机组成,每台主机承担部分访问请求,通过负载均衡器分配任务,避免单点过载,提升系统吞吐量。
2)HA:High Availiablity(高可用)
核心是避免单点故障(SPOF,Single Point Of Failure),确保业务持续运行。
- MTBF(Mean Time Between Failure):平均无故障时间(系统正常运行的时长)。
- MTTR(Mean Time To Restoration):平均恢复时间(故障后恢复正常的时长)。
- 高可用率(A):计算公式为 A = MTBF / ( MBTF + MTTR ),取值范围 (0,1),常用 “N 个 9” 表示(如 99.9%、99.99%)。
- SLA(Service Level Agreement):服务等级协议,明确服务可用性标准及未达标时的惩罚措施,运维的核心目标是达成 SLA(重点关注计划外停机时间)。
3)HPC:High-performance computing(高性能计算)
用于复杂科学计算(如气象模拟、基因分析),属于国家战略资源,非通用运维重点。
3.分布式
常见分布式应用场景:
- 分布式存储:如 Ceph、GlusterFs、FastDFS(用于海量数据存储,如图片、文件)。
- 分布式计算:如 Hadoop、Spark(用于大数据处理,拆分计算任务到多节点并行执行)。
- 分布式应用:按功能拆分微服务(如电商的订单、支付、物流模块独立部署)。
- 分布式静态资源:静态资源(图片、JS、CSS)部署在不同存储集群,提升访问速度。
- 分布式缓存:使用 Key-Value 缓存系统(如 Redis 集群),减轻数据库压力。
4.集群和分布式的区别
特性 | 集群(Cluster) | 分布式(Distributed) |
结构 | 多机干同一件事 | 多机干不同的事 |
业务部署 | 同一业务系统,部署在多台服务器,功能、代码、数据一致 | 一个业务拆分为多个业务,部署在多台服务器,每台服务器功能、代码、数据不同,协同完成完整业务 |
核心目标 | 提高单位时间内执行的任务数量(提升吞吐量) | 缩短单个任务的执行时间(提升效率) |
故障影响 | 单台服务器故障,其他服务器可接管 | 单台服务器故障可能导致对应子业务失败 |
适用场景 | 高并发 Web 服务(负载均衡集群)、高可用数据库(主从集群) | 微服务架构、大数据处理(Hadoop)、分布式存储(Ceph) |
二、LVS(Linux Virtual Server)运行原理
1.LVS 简介
LVS(Linux Virtual Server,Linux 虚拟服务器)是 1998 年由章文嵩博士主导开发的一种基于 Linux 内核的负载均衡技术,它工作在 OSI 模型的传输层(TCP/UDP),通过将请求转发到后端多个真实服务器(Real Server),实现流量的负载均衡,同时隐藏后端服务器架构,对外呈现为一个统一的虚拟 IP(VIP)。
2.LVS 集群体系结构
3.LVS 的概念
- VS:Virtual Server ,虚拟服务,调度器(负责调度)
- RS:Real Server,真实服务器(负责真正提供服务,处理客户端请求)
- DS:Director Server:负载均衡器(客户端请求的接收者和分发者)
- CIP: Client IP ,客户端IP
- VIP:Virtual IP ,负载均衡器虚拟 IP,VS 外网的 IP(客户端通过该 IP 访问集群服务)
- DIP:Director IP ,负载均衡器 IP,VS 内网的 IP(Director Server 上用于与 Real Server 通信的内网 IP)
- RIP:Real Server IP ,后端请求处理的服务器 IP(仅用于集群内部通信,Director 与 Real Server 之间)
访问流程:CIP <--> VIP == DIP <--> RIP
三、LVS 的四种工作模式
LVS-NAT(网络地址转换):
通过修改请求报文的目标 IP(VIP→RIP)和响应报文的源 IP(RIP→VIP),实现多目标 IP 的 DNAT,所有流量必须经过 Director,适合小规模集群与私有网络部署。
LVS-DR(直接路由):
在二层网络通过操纵封装新的 MAC 地址(保持 IP 不变)将请求转发至 Real Server,响应直接返回客户端,性能最优但要求 Director 与 RS 在同一物理网段。
LVS-TUN(IP 隧道):
在原请求 IP 报文之外新加一个 IP 首部(外层 IP 为 RIP),通过 IP 隧道封装转发至跨网段的 Real Server,响应直接返回客户端,适合大规模分布式集群。
LVS-FULLNAT(全地址转换):
同时修改请求报文的源 IP(客户端 IP→DIP)和目标 IP(VIP→RIP),以及响应报文的源 / 目标 IP,突破 DR 模式的二层限制,支持 Director 与 RS 跨网段部署,但增加了 Director 负载。
1.LVS-NAT模式
1)NAT 模式简介
NAT模式全称为 Virtualserver via Network address translation(VS/NAT),是通过网络地址转换的方法来实现调度的,主要工作在 OSI 模型的第三层(网络层)和第四层(传输层),对 ip 进行操作,对端口进行转换。
首先调度器(Director)接收到客户的请求数据包时(请求的目的 IP 为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。
然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。
真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为DS服务器),把响应后的数据包发送给 DS。
DS 接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
2)NAT 模式特点
- 本质上是多目标 IP 的 DNAT,当调度器接收到客户端发送给虚拟 IP(VIP)的请求报文时,会根据调度算法,从多个后端 RS 中挑选出一台,将请求报文中的目标地址(VIP)和目标端口修改为该 RS 的 RIP 和相应端口,从而实现请求的转发。
- NAT 技术将请求的报文和响应的报文都需要通过调度器进行地址改写,因此网站访问量比较大的时候DS 负载均衡调度器有比较大的瓶颈,后端服务器的数量一般不超过10 台,否则 LVS 可能会出现问题。
- RIP 和 DIP 应在同一个IP网络,且应使用私网地址,RS的网关需要指向 DIP,确保 RS 响应报文能够正确返回给 Director。
- 请求报文和响应报文都必须经由 Director 转发,Director 易于成为系统瓶颈。
- 支持端口映射,可修改请求报文的目标 PORT。
- VS(Director)必须是 Linux 系统,RS 可以是任意 OS 系统。
3)NAT 模式数据逻辑
① 发出请求(Client --> VS)
客户端(Client,CIP)向虚拟服务(VS,VIP)的 80 端口发起服务请求。
② 调度并修改请求报文(VS --> RS)
VS 服务器接收到访问请求,通过调度算法选择 RS1,并执行 DNAT 将请求报文的目标地址由 VIP 改为 RS1 端口由 80 改为 9000。
③ 响应报文(RS --> VS)
RS1 监听 9000 端口,处理请求后生成响应报文,源 IP 为 RIP1,目标 IP 为 CIP,端口为 9000,因网关指向 VS,响应原路返回给 VS。
④ 修改响应报文(VS --> Client)
VS 服务器接收响应后执行 SNAT,将响应报文的源地址由 RIP1 --> VIP,响应端口 9000 --> 80
⑤ 接收响应(VS --> Client)
VS 服务器通过公网将报文返回客户端,客户端收到源 IP 为 VIP,端口为 80 的响应报文。
4)NAT 模式工作流程
① 当用户请求到达 Director Server,此时请求的数据报文会先到内核空间的 PREROUTING 链。 此时报文的源 IP 为 CIP,目标 IP 为 VIP。
② PREROUTING 检查发现数据包的目标 IP 是本机,将数据包送至 INPUT 链。
③ IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至 POSTROUTING 链。 此时报文的源 IP 为 CIP,目标 IP 为 RIP ,在这个过程完成了目标IP的转换(DNAT)。
④ POSTROUTING链通过选路,将数据包发送给 Real Server。
⑤ Real Server比对发现目标为自己的IP,开始构建响应报文发回给 Director Server。 此时报文的源 IP 为 RIP,目标 IP 为 CIP 。
⑥ Director Server 在响应客户端前,此时会将源IP地址修改为自己的 VIP 地址(SNAT),然后响应给客户端。 此时报文的源 IP 为 VIP,目标 IP 为 CIP。
2.LVS-DR模式
1)DR 模式简介
DR(Direct Routing,直接路由)模式是一种高性能的负载均衡模式。其核心工作原理是通过修改请求数据包的MAC地址,而不改变其源IP和目标IP地址,从而实现负载均衡。
主要工作在 OSI 七层模型中的第二层(数据链路层)和第三层(网络层)
在DR模式下,客户端的请求数据包首先到达LVS调度器(Director),调度器根据负载均衡算法选择一个后端真实服务器(Real Server),并将请求数据包的目的MAC地址修改为选中的真实服务器的MAC地址,然后将数据包发送到该真实服务器。
2)DR 模式的工作流程
① 当用户请求到达 Director Server,此时请求的数据报文会先到内核空间的 PREROUTING 链。 此时报文的源 IP 为 CIP,目标 IP 为 VIP。
② PREROUTING 检查发现数据包的目标 IP 是本机,将数据包送至 INPUT 链。
③ IPVS 比对数据包请求的服务是否为集群服务,若是,将请求报文中的源 MAC 地址修改为 DIP 的 MAC 地址,将目标 MAC 地址修改 RIP的 MAC 地址,然后将数据包发至 POSTROUTING 链。 此时的源 IP 和目的 IP 均未修改,仅修改了源 MAC 地址为 DIP 的 MAC 地址,目标 MAC 地址为 RIP 的 MAC 地址。
④ 由于 DS 和 RS 在同一个网络中,所以是通过二层,数据链路层来传输。POSTROUTING 链检查目标 MAC 地址为 RIP 的 MAC 地址,那么此时数据包将会发至 Real Server。
⑤ RS 发现请求报文的 MAC 地址是自己的 MAC 地址,就接收此报文。处理完成之后,将响应报文通过 lo 接口传送给 eth0 网卡然后向外发出。 此时的源 IP 地址为 VIP,目标 IP 为 CIP。
⑥ 响应报文最终送达至客户端。
3.LVS-TUN模式(了解)
1)TUN 模式简介
TUN(Tunneling)模式是一种 LVS(Linux Virtual Server)的工作模式,它通过 IP 隧道技术实现负载均衡。在该模式下,客户端请求由负载均衡器接收并封装,然后通过 IP 隧道转发到后端服务器(Real Server)。后端服务器处理请求后,直接将响应数据返回给客户端,无需经过负载均衡器。这种方式避免了负载均衡器成为网络瓶颈,适用于高并发和大规模服务场景。
2)TUN 模式特点
- DIP、VIP、RIP都应该是公网地址
- RS 的网关一般不能指向 DIP
- 请求报文要经由 Director,但响应不能经由 Director
- 不支持端口映射
- RS 的 OS 需支持隧道功能
3)TUN 模式的工作流程
① 客户端发送请求到负载均衡器的虚拟 IP(VIP),请求报文源地址是 CIP,目标地址为 VIP。
② 负载均衡器收到报文后,根据预设的调度算法选择一个后端服务器,并将客户端请求的数据包封装一层 IP 报文,将源地址改为 DIP,目标地址改为 RIP,并将此包发送给 RS。
③ RS 收到 VS 调度器发送过来的数据包做出响应,解封装并处理请求。
④ 处理完成后,后端服务器将响应数据直接发送给客户端,而不是通过负载均衡器。
4.LVS-FULLNAT模式(了解)
1)FULL NAT 模式的简介
FULL NAT 是 LVS(Linux Virtual Server)中的一种负载均衡工作模式,主要用于解决传统 NAT 模式在实际部署中的局限性,尤其是在网络拓扑复杂或跨 VLAN 通信的场景中。通过同时修改请求报文的源 IP 地址和目标 IP 地址,实现双向地址转换。
2)FULL NAT 模式的特点
- VIP 是公网地址,RIP 和 DIP 是私网地址,且通常不在同一 IP 网络;因此,RIP的网关一般不会指向DIP
- RS 收到的请求报文源地址是 DIP,因此,只需响应给 DIP,但 Director 还要将其发往 Client
- 请求和响应报文都经由 Director
- 支持端口映射
3)FULL NAT 模式的工作流程
① 客户端向 LVS 的虚拟 IP(VIP)发起请求,数据包的目的地址是 VIP,源地址是客户端的 IP(CIP)。
② LVS 接收到请求后,IPVS 模块根据调度算法选择一个后端服务器(RealServer),并对数据包进行 DNAT 和 SNAT 操作。DNAT 将目标地址从 VIP 转换为 RealServer 的 IP(RIP),SNAT 将源地址从 CIP 转换为 LVS 的内网地址(LIP)。
③ 转换后的数据包被发送到 RealServer,RealServer 接收到请求后,将响应数据包的源地址设置为自己的 RIP,目标地址设置为 LVS 的 LIP。
④ LVS 接收到响应数据包后,再次进行地址转换,将源地址从 RIP 转换为 VIP,目标地址从 LIP 转换为 CIP,然后将响应数据包返回给客户端。
5.LVS 工作模式总结
NAT 模式 | TUN 模式 | DR 模式 | |
RS 操作系统 | 不限 | 支持隧道 | 禁用 arp |
调度器和服务器网络 | 可跨网络 | 可跨网络 | 不可跨网络 |
调度服务器数量 | 少 | 多 | 多 |
RS 服务器网关 | 指向到调度器 DIP | 指向到路由 | 指向到路由 |
四、LVS 的调度算法
1.LVS 调度算法类型
ipvs scheduler:根据其调度时是否考虑各 RS 当前的负载状态被分为两种:静态方法和动态方法
- 静态调度算法:仅根据算法本身进行调度,不考虑RS的负载情况
- 动态调度算法:实时监控服务器负载(如连接数、CPU 利用率等),根据负载状态动态分配请求,主要根据每 RS 当前的负载状态及调度算法进行调度 Overhead = value 较小的 RS 将被调度
2.LVS 静态调度算法
1)RR:轮询(Round Robin)
按顺序依次将请求分配给后端服务器,循环往复。但不考虑服务器实际负载,若服务器性能差异较大,可能导致性能差的服务器过载。RS 分别被调度,当 RS 配置有差别时不推荐,适用于后端服务器性能相近的场景。
2)WRR:加权轮询(Weighted Round Robin)
为每个服务器分配权重,权重越高分配的请求越多,性能差的RS被调度的次数少,适用于后端服务器性能差异较大时的场景。
3)SH:源地址哈希(Source Hashing)
根据客户端 IP 计算哈希值,将同一客户端的请求始终分配到同一服务器,可能导致负载分布不均,适用于需要保持会话亲和性的场景。
4)DH:目标地址哈希(Destination Hashing)
根据目标 IP(如虚拟服务 VIP)计算哈希值,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商。
3.LVS 动态调度算法
1)LC:最少连接(Least Connections)
将请求分配给当前连接数最少的服务器, 适用于长连接应用 Overhead(负载值)= activeconns(活动链接数) x 256+inactiveconns(非活动链接数)
2)WLC:权重最少连接(Weighted Least Connections)
综合考虑服务器权重和当前连接数,值越小优先级越高,默认调度方法 Overhead = (activeconns x 256+inactiveconns) / weight
3)SED:最少队列调度(Shortest Expected Delay)
初始连接高权重优先 Overhead = (activeconns+1+inactiveconns) x 256 / weight,选择延迟最小的服务器。但是,当 node1 的权重为1,node2 的权重为 10,经过运算前几次的调度都会被 node2 承接
4)NQ:永不排队调度(Never Queue)
若有服务器处于空闲状态(连接数为 0),则直接分配,否则使用 SED 算法。第一轮均匀分配,后续 SED
5)LBLC:基于局部性的最小连接 / 动态的 DH 算法(Locality-Based Least Connections)
优先将请求分配给已缓存该资源的服务器(若存在);若所有服务器均无缓存,则分配给连接数最少的服务器。使用场景:根据负载状态实现正向代理
6)LBLCR:带复制的基于局部性的最小连接(Locality-Based Least Connections with Replication)
优先将请求分配给该列表中连接数最少的服务器。若列表中服务器负载过高,则动态调整列表。解决 LBLC 负载不均衡问题,从负载重的复制到负载轻的 RS
五、LVS 部署命令
1.LVS 软件相关信息
- 程序包: ipvsadm
- Unit File: ipvsadm.service
- 主程序: /usr/sbin/ipvsadm
- 规则保存工具: /usr/sbin/ipvsadm-save
- 规则重载工具: /usr/sbin/ipvsadm-restore
- 配置文件: /etc/sysconfig/ipvsadm-config
- ipvs 调度规则文件: /etc/sysconfig/ipvsadm
2.ipvsadm 命令
- ipvsadm -D -t|u|f service-address # 删除指定的虚拟服务
- ipvsadm –C # 清空所有负载均衡规则
- ipvsadm –R # 重载
- ipvsadm -S [-n] # 保存(将当前负载均衡规则导出为可执行的脚本)
- ipvsadm -Z [-t|u|f service-address] # 清除计数器(可指定)
3.LVS 集群服务的参数
1)管理集群服务中的增删改
命令格式:ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
- -A # 添加
- -E # 修改
- -D # 删除
- -L # 查看 lvs 策略
- -C # 清空 lvs 策略
- -n # 不做解析
- -t # tcp 服务
- -u # udp 服务
- -s # 指定调度算法,默认为 WLC
- -p # 设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一 Realserver
- -f # firewall mask 火墙标记,是一个数字
实验环境设定:
主机名 | ip | 角色 |
lvs | NAT-eth0:172.25.254.100 仅主机-eth1:192.168.96.100 | 调度器(VS) |
RS1 | 仅主机-eth0:192.168.96.10 | 真实服务器(RS1) |
RS2 | 仅主机-eth0:192.168.96.20 | 真实服务器(RS2) |
在 lvs 中安装 ipvsadm。
示例:
ipvsadm -A -t 172.25.254.100:80 -s rr:添加一个基于 TCP 的虚拟服务,监听地址为 172.25.254.100,端口为 80,并使用轮询(Round Robin)算法来调度请求,依次将请求分配给后端的真实服务器
ipvsadm -L:查看当前所有的虚拟服务及其相关的真实服务器规则(被 dns 解析过,显示主机名)
ipvsadm -Ln:与 -L 类似,不做解析,显示 ip 地址和端口
ipvsadm -E -t 172.25.254.100:80 -s wrr:将 ip 为 172.25.254.100 虚拟服务的调度算法更改为加权轮询(Weighted Round Robin)。
ipvsadm -E -t 172.25.254.100:80 -s wrr -p 360:设置持久化连接的时间为 360 秒(360 秒后再分配给另一台真实服务器)
ipvsadm -A -f 66 -s rr:添加一个基于防火墙标记(Firewall Mark)的虚拟服务,标记值为 66,并使用轮询算法进行调度
ipvsadm -D -f 66:删除基于防火墙标记的虚拟服务
ipvsadm -C:清除所有当前配置的虚拟服务和真实服务器规则
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 # 输出速率信息
ipvsadm -a -t 172.25.254.100:80 -r 192.168.96.10:80 -m:将真实服务器 192.168.96.10:80 添加到虚拟服务 172.25.254.100:80 中,并使用 NAT 模式(即 -m 参数)
ipvsadm -a -t 172.25.254.100:80 -r 192.168.96.20:80 -g:将另一个真实服务器 192.168.96.20:80 添加到虚拟服务 172.25.254.100:80 中,使用直接路由模式(即 -g 参数)
注:NAT 模式与直连路由不能混用,这里仅展示参数使用
ipvsadm -e -t 172.25.254.100:80 -r 192.168.96.10:80 -i:更改已有的真实服务器 192.168.96.10:80,将其转发方式更改为 IP 隧道模式(即 -i 参数)
ipvsadm -e -t 172.25.254.100:80 -r 192.168.96.10:80 -i -w 2:设置真实服务器 192.168.96.10:80 的权重为 2(即 -w 2)
ipvsadm -Z:重置所有虚拟服务的连接计数器,将统计值归零
ipvsadm -Ln --rate:列出当前所有的虚拟服务及其真实服务器,并显示速率信息(即 --rate)
3)IPVS 的备份及恢复
ipvsadm-save:将当前运行的 IPVS 规则以文本形式输出到标准输出
ipvsadm-save -n:以数字形式输出规则信息,即不进行 DNS 反向解析,直接显示 IP 地址和端口号
ipvsadm-save -n > /mnt/ipvsadm.rule:将数字格式的配置重定向到文件 /mnt/ipvsadm.rule,用于持久化保存当前的 IPVS 规则,便于后续恢复。
然后清除当前所有的 IPVS 规则和配置
ipvsadm-restore < /mnt/ipvsadm.rule:从文件 /mnt/ipvsadm.rule 恢复之前保存的 IPVS 规则
六、LVS 实战案例
1.部署 NAT 模式集群案例
1)NAT 模式实验环境设定
主机名 | ip | 角色 |
client | NAT-eth0:172.25.254.111 | 测试机(客户端) |
lvs | NAT-eth0:172.25.254.100 仅主机-eth1:192.168.96.100 | 调度器(VS) |
RS1 | 仅主机-eth0:192.168.96.10 | 真实服务器(RS1) |
RS2 | 仅主机-eth0:192.168.96.20 | 真实服务器(RS2) |
在 RS1 和 RS2 中都安装 httpd,禁用并立即停止防火墙服务,启用并立即启动 httpd 服务,然后分别创建一个简单的测试页面,用于验证 http 服务是否正常工作。
RS1:
RS2:
lvs:
访问 RS1 和 RS2 两个真实服务器的地址,检测是否能够成功访问。
2)配置命令
① 在 lvs 中启用内核路由功能
查看系统中所有与 ipv4 转发相关的内核参数,net.ipv4.ip_forward = 0 表示当前未启用 ipv4 转发。
将启用 IPv4 转发的配置写入系统内核参数配置文件 /etc/sysctl.conf,实现永久生效。
sysctl -p:从配置文件加载并立即应用内核参数,无需重启系统。
② 在 lvs 中安装 ipvsadm
③ 添加调度策略并查看策略
④ 保存规则
⑤ 删除所有规则
⑥ 重新加载规则
⑦ 以上操作均为临时,设定开机自启动
⑧ 测试
⑨ 修改为权重调用算法
测试:
2.部署 DR 模式集群案例
1)DR 模式实验环境设定
主机名 | ip | vip | 角色 |
client | NAT-eth0:172.25.254.111 | null | 测试机(客户端) |
router | NAT-eth0:172.25.254.100 仅主机-eth1:192.168.96.100 | null | 路由器 |
DR-lvs | 仅主机-eth0:192.168.96.200 网关:192.168.96.100 | lo:192.168.96.220 | 调度器(VS) |
RS1 | 仅主机-eth0:192.168.96.10 网关:192.168.96.100 | lo:192.168.96.220 | web 服务器(RS1) |
RS2 | 仅主机-eth0:192.168.96.20 网关:192.168.96.100 | lo:192.168.96.220 | web 服务器(RS2) |
client:在客户端主机(client)中设定为 nat 模式网卡,网关为 router 的 172.25.254.100
router:在路由主机(router)中设定双网卡,eth0 为 nat 网卡,eth1 为仅主机网卡
对 eth0 的设定:
对 eth1 的设定:
在持久化内核参数的配置文件中写入 net.ipv4.ip_forward = 1,并重新加载 /etc/sysctl.conf 中的内核参数配置,使修改立即生效,无需重启系统。
立即启用并设置开机自启动 firewalld 服务,并配置防火墙允许 NAT(网络地址转换),使内网设备能通过该服务器访问外网。
永久允许需要刷新才能实现。(若为 no,则缺少 firewall-cmd --reload 命令进行刷新)
lvs:对于dr调度器设定网卡为仅主机模式
DIP 为 192.168.96.200/24,VIP 为192.168.96.220/24,对外通信
对于 RS1 和 RS2 的设定网卡为仅主机模式,VIP 都为 192.268.96.200/32(对外不响应)
RS1:
RS2:
2)解决 vip 响应问题
限制响应级别:arp_ignore
- 0:默认值,表示可使用本地任意接口上配置的任意地址进行响应
- 1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应
限制通告级别:arp_announce
- 0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告
- 1:尽量避免将接口信息向非直接连接网络进行通告
- 2:必须避免将接口信息向非本网络进行通告
在 lvs 和两台 RS(RS1、RS2)中设定 vip
在 RS1 和 RS2 中的 /etc/sysctl.conf 文件中写入以下内容,并通过 sysctl -p 加载,设定 lo 不对外响应。
在 lvs 中配置策略,模式为直连路由。
测试结果:
3.防火墙标签解决轮询问题
1)轮询规则中可能回遇到的错误
在 RS1 和 RS2 中安装 mod_ssl,并重启 apache。
RS1:
RS2:
确保 lvs 的防火墙是关闭的。
在 lvs 中设置调度,设定两组策略,调度 80 和 443 两个端口。
测试问题:
2)防火墙标记解决轮询调度问题
在 VS 调度器中设定端口标签,人为 80 和 443 是一个整体。
设定调度规则
测试结果:
4.LVS 持久链接
在 lvs 调度器中设定,设置超时时间为 1 分钟
此时客户端访问 192.168.96.220 显示的是192.168.96.10 的主机
等时间超过了之后,再次访问 192.168.96.220,便轮询到 192.168.96.20。
此时时间会重新计时,在这个时间内访问的是 192.168.96.20 的主机