LVS 原理详解及部署(包含实验案例)

一、集群和分布式简介

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角色
clientNAT-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 模式实验环境设定

主机名ipvip角色
clientNAT-eth0:172.25.254.111null测试机(客户端)
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.220web 服务器(RS1)
RS2

仅主机-eth0:192.168.96.20

网关:192.168.96.100

lo:192.168.96.220web 服务器(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 的主机

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/89743.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/89743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

两个路由器通过不同的网段互联

一&#xff0c;实验拓扑图&#xff1a;二、实验说明 &#xff1a;在两个接口配置好两个不同网段的的ip地址后是不能相互通信的。经过测试用ospf把两个网段宣告进area 0 是行不通的。最后我们通过静态路由来配置&#xff0c;遇到一个最大的问题是&#xff0c;我们的下一跳地址应…

Python趣味算法:冒泡排序——从理论到极致优化

排序算法是程序员的必修课,而冒泡排序是理解算法思维的绝佳起点。本文将深入解析冒泡排序的7种优化技巧,通过可视化演示+多维度性能分析,带你彻底掌握这一经典算法! 看在每天坚持分享有趣知识的份上,点个关注吧(づ ̄ 3 ̄)づ 关注是我更新的动力 ̄︶ ̄∗ ̄︶ ̄∗) 作者会…

[simdjson] document_stream | iterate_many() | batch_size | 线程加速 | 轻量handle

第七章&#xff1a;文档流 欢迎回来 在前面的章节中&#xff0c;我们学习了如何使用解析器结合填充字符串获取表示JSON根节点的文档&#xff0c;并通过按需API&#xff08;On-Demand API&#xff09;遍历值、对象和数组&#xff0c;同时使用simdjson_result进行错误处理。 到…

【机器学习】向量数据库选型指南:企业内网部署场景

向量数据库选型指南&#xff1a;企业内网部署场景一、选型背景与关键需求 在企业级机器学习应用中&#xff0c;特别是涉及图片、视频等非结构化数据的场景&#xff0c;向量数据库已成为核心基础设施。传统数据库难以高效处理高维向量的相似度检索需求&#xff08;如图片相似性搜…

Django母婴商城项目实践(八)- 数据渲染与显示之首页

8、数据渲染与显示 1 概述 Django作为Web框架,需要一种很便利的方法动态地生成HTML网页,因此有了模板这个概念。模板包含所需HTML的部分代码以及一些特殊语法,特殊语法用于描述如何将视图传递的数据动态插入HTML网页中。 Django可以配置一个或多个模板引擎(甚至是0个,如前…

Redis常见线上问题

文章目录 Redis常见线上问题 引言 报告背景与目的 Redis版本与环境说明 性能瓶颈问题 慢查询分析与优化 高CPU与网络延迟 内存管理问题 内存碎片成因与优化 BigKey与内存溢出 数据一致性与高可用问题 主从同步延迟 脑裂问题与解决方案 持久化机制问题 RDB与AOF对比 核心特性对比…

Typecho博客集成阿里云CDN+OSS实现全站加速方案

文章目录 Typecho博客系统集成阿里云CDN和OSS实现静态资源加速 引言 一、技术选型与准备工作 1.1 为什么选择阿里云CDN+OSS组合 1.2 准备工作 二、OSS存储桶创建与配置 2.1 创建OSS存储桶 2.2 配置Bucket权限 2.3 配置跨域访问(CORS) 三、CDN加速配置 3.1 添加CDN域名 3.2 配置…

计算机毕业设计Java网咖管理系统 Java技术实现的网咖综合管理系统开发 基于Spring Boot框架的网咖运营管理系统设计

计算机毕业设计Java网咖管理系统e0btvq7l &#xff08;配套有源码 程序 mysql数据库 论文&#xff09;本套源码可以先看具体功能演示视频领取&#xff0c;文末有联xi 可分享随着互联网技术的飞速发展和电子竞技的全球兴起&#xff0c;网咖作为一种新兴的休闲娱乐场所&#xff0…

Kotlin main函数

main() 函数 来仔细看看 main() 函数。实际上&#xff0c;它就是一个很常见的函数&#xff1a;你可以对它做任何你能对普通函数做的事。唯一的不同是&#xff1a;它是程序的入口点&#xff08;entry point&#xff09;。这意味着程序的执行从调用这个函数开始。 我们来拆解一下…

深入理解 Spring:事务管理与事件机制全解析

文章目录前言一、Spring 事务管理&#xff08;Transaction Management&#xff09;1. 使用 Transactional 管理事务2. 核心属性说明3. 事务传播行为详解&#xff08;Propagation&#xff09;4. 异常回滚策略分析5. 底层原理剖析&#xff08;源码级&#xff09;二、Spring 事件机…

AWD练习的平台搭建

ubuntu虚拟机搭建 前提资源准备 进行AWD我们需要在一个独立的虚拟机 现在就来搭建一个ubuntu的 这里我们使用的VMware是17的 然后下载镜像的地址&#xff1a;Ubuntu最全的国内镜像下载地址 - 哔哩哔哩 我下载的是中科大的 这里需要准备的前提资源就有了。 创建Ubuntu虚…

C++ 详谈继承体系下的构造函数和析构函数

前言 前面呢, 我们说了C中实现多态的原理, 其中也说了, 虚函数表和虚函数指针的创建时机, C 详谈多态实现原理-CSDN博客 , 这一节呢, 我们会说说在C中继承体系下的另一个知识点, 那就是: 继承体系下的构造函数和析构函数~~, 主要围绕两个问题: 执行顺序? 虚析构函数的作用? …

PostgreSQL 字段类型速查与 Java 枚举映射

1. 查询 SQLSELECTc.table_schema,c.table_name,c.column_name,c.data_type,c.udt_name,CASE-- 数值WHEN c.udt_name IN (int2,int4,int8,float4,float8,numeric,money)THEN NUMERIC-- 布尔WHEN c.udt_name boolTHEN BOOLEAN-- 日期/时间WHEN c.udt_name IN (date,time,timetz…

数据分析综合应用 30分钟精通计划

🔬 数据分析综合应用 30分钟精通计划(完整版含输出) ⏰ 时间分配 5分钟:数据加载与清洗基础 10分钟:探索性数据分析(EDA) 10分钟:数据分析实战案例 5分钟:分析报告生成 📚 第一部分:数据加载与清洗基础 (5分钟) 1. 模拟真实数据集 import pandas as pd import nu…

Python爬虫实战:研究psd-tools库相关技术

一、引言 1.1 研究背景 Adobe Photoshop 是目前最流行的图像处理软件之一,其原生文件格式 PSD(Photoshop Document)包含了丰富的图像信息和编辑历史。PSD 文件不仅在设计领域广泛使用,还在数字营销、版权保护和安全分析等领域具有重要价值。然而,手动分析大量 PSD 文件是…

基于卷积傅里叶分析网络 (CFAN)的心电图分类的统一时频方法

一、研究背景与核心问题​​ECG分类的挑战​&#xff1a;心电图&#xff08;ECG&#xff09;信号分类在心律失常检测、身份识别等领域至关重要&#xff0c;但传统方法难以同时有效整合时域和频域信息。现有方法包括&#xff1a;​时域分类&#xff08;CNN1D&#xff09;​​&am…

Linux——LinuxOS

cd,pwd,mkdir,rm,ls,touch,cat,echo,

深度学习篇---矩阵

在机械臂解算、深度学习网络等硬件和软件领域中&#xff0c;矩阵运算作为核心数学工具&#xff0c;承担着数据表示、变换、映射和优化的关键作用。以下从具体领域出发&#xff0c;详细总结涉及的矩阵运算及对应的核心知识&#xff1a;一、机械臂解算领域机械臂解算&#xff08;…

元宇宙:技术乌托邦与数字化未来——基于技术哲学的分析

一、技术哲学视域下的元宇宙本质哲学源流与技术基因的双重映射理想世界的千年回响&#xff1a;从柏拉图洞穴隐喻中的影子世界&#xff0c;到普特南“钵中之脑”对虚拟与现实界限的消弭&#xff0c;元宇宙的构想深植于人类对平行世界的永恒追问。中国传统神话中“天人二元结构”…

如何构建一个基于大模型的实时对话3D数字人?

近年来&#xff0c;随着元宇宙和AIGC技术的爆发&#xff0c;3D数字人从影视特效走向日常应用。无论是虚拟主播、AI客服&#xff0c;还是数字教师&#xff0c;其核心诉求都是**“能听、会说、有表情”**的实时交互能力。本文就带大家了解如何构建一个基于大模型的实时对话的3D数…