news 2026/7/31 4:55:18

lvs相关

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
lvs相关

一、什么是集群

集群Cluster

Cluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统

Cluster常见的三种类型:

  • LB:LoadBalancing(负载均衡)由多个主机组成,每个主机只承担一部分访问
  • HA:High Availiablity(高可用)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来进行表示,当没有达到这种水平的时候,就会有一

些列的惩罚措施,而运维,最主要的目标就是达成这种服务水平。

停机时间又分为两种,一种是计划内停机时间,一种是计划外停机时间,而运维则主要关注计划外

停机时间

HPC:High-performance computing

二、集群分类

云计算环境下集群按照业务目标,主要分为高可用集群、负载均衡集群、高性能计算集群、分布式存储集群、容器编排集群五大类。

1. HA 高可用集群(High‑Availability)

  • 核心作用:消除单点故障,实现业务故障自动转移,保证服务持续可用;主备 / 主主模式,故障时自动切换。

  • 典型技术:Keepalived、Pacemaker+Corosync、VRRP

  • 应用场景:

    数据库主备、VIP 虚拟 IP 漂移、网关、核心中间件;业务不允许中断,故障秒级切换。例如:Nginx 网关、MySQL 主备、企业内部核心业务。

2. LB 负载均衡集群(Load Balance)

  • 核心作用:把用户请求分发到多台后端节点,分摊压力,横向扩展并发能力,提升吞吐量。
  • 典型技术:LVS、HAProxy、Nginx、SLB 云负载均衡
  • 应用场景:Web 网站、接口服务、业务网关;访问量大,单台服务器扛不住流量。多台 web 服务器对外统一提供服务。

实际环境经常LB+HA 组合:负载均衡节点本身再做高可用(Keepalived+LVS/HAProxy)。

3. HPC 高性能计算集群(High Performance Computing)

  • 核心作用:把大量服务器算力合并,并行计算,完成海量运算任务,追求计算速度。
  • 典型技术:Slurm、MPI
  • 应用场景:科学计算、仿真建模、基因测序、渲染、气象预报;CPU 密集型大规模计算任务,对外不提供 Web 访问。

4. 分布式存储集群

  • 核心作用:多节点组成存储池,统一对外提供存储;容量横向扩展、数据多副本,保障数据可靠性。
  • 典型技术:Ceph、GlusterFS,云平台块 / 对象存储
  • 应用场景:云盘、对象存储、虚拟机镜像、大数据文件存储;需要大容量存储,防止磁盘损坏丢失数据,虚拟机、容器持久化数据。

5. 容器编排集群

  • 核心作用:管理大量容器应用,实现容器调度、自愈、滚动升级、扩缩容。
  • 典型技术:Kubernetes(K8s)
  • 应用场景:微服务业务、云原生应用;快速发布、弹性伸缩,互联网业务、企业微服务系统。

三、lvs的作用

lvs简介

LVS:Linux Virtual Server,负载调度器,内核集成,章文嵩,阿里的四层SLB(Server LoadBalance)是基

于LVS+keepalived实现

LVS 官网: http://www.linuxvirtualserver.org/

LVS 相关术语

  • VS: Virtual Server,负责调度
  • RS:RealServer,负责真正提供服务

lvs集群体系结构

工作原理:

VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS

四、lvs的4种模式及原理

4.1 nat模式

Ivs-nat:

  • 本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和
  • PORT实现转发
  • RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
  • 请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
  • 支持端口映射,可修改请求报文的目标PORT
  • VS必须是Linux系统,RS可以是任意OS系统

1.客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口

(9000port)

2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口

3.RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口

(9000port)

4.VS服务器接收到响应数据包,改变包中的数据来源(RIP1–>VIP),响应目标端口(9000–>80)

5.VS服务器把修改过报文的响应数据包回传给客户端

6.lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机,所以lvs的调度机容易阻塞

客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,当IPVS存在后访问请求在通

过PREROUTING后被ipvs结果并作nat转发

因为ipvs的作用点是在PREROUTING和INPUT链之间,所以如果在prerouting中设定规则会干扰ipvs的工

作。所以在做lvs时要把iptables的火墙策略全清理掉。

4.2 DR模式

DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行

转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源

IP/PORT,以及目标IP/PORT均保持不变

Temp%5C1785409206464.png&pos_id=img-FN695xzd-1785411290928)

在DR模式中,RS接收到访问请求后不需要回传给VS调度器,直接把回传数据发送给client,所以RS和vs

上都要有vip

1.客户端发送数据帧给vs调度主机帧中内容为客户端IP+客户端的MAC+VIP+VIP的MAC

2.VS调度主机接收到数据帧后把帧中的VIP的MAC该为RS1的MAC,此时帧中的数据为客户端IP+客户端

的MAC+VIP+RS1的MAC

3.RS1得到2中的数据包做出响应回传数据包,数据包中的内容为VIP+RS1的MAC+客户端IP+客户端IP的

MAC

DR模式特点:

1.Director和各RS都配置有VIP

2.确保前端路由器将目标IP为VIP的请求报文发往Director

3.在前端网关做静态绑定VIP和Director的MAC地址

4.RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;

5.RIP的网关不能指向DIP,以确保响应报文不会经由Director

6.RS和Director要在同一个物理网络

7.请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client

8.不支持端口映射(端口不能修败)

9.RS可使用大多数OS系统

4.3 TUN模式

转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部

(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP

是CIP)

1.客户端发送请求数据包,包内有源IP+vip+dport

2.到达vs调度器后对客户端发送过来的数据包重新封装添加IP报文头,新添加的IP报文头中包含

TUNSRCIP(DIP)+TUNDESTIP(RSIP1)并发送到RS1

3.RS收到VS调度器发送过来的数据包做出响应,生成的响应报文中包含SRCIP(VIP)+DSTIP(CIP)

+port,响应数据包通过网络直接回传给client

TUN特点:

1.DIP, VIP, RIP都应该是公网地址

2.RS的网关一般不能指向DIP

3.请求报文要经由Director,但响应不能经由Director

4.不支持端口映射

5.RS的OS须支持隧道功能

4.4 fullnet模式

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

CIP --> DIP

VIP --> RIP

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

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

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

4.支持端口映射

  • lvs-nat与lvs-fullnat:请求和响应报文都经由Director

  • lvs-nat:RIP的网关要指向DIP

  • lvs-fullnat:RIP和DIP未必在同一IP网络,但要能通信

  • lvs-dr与lvs-tun:请求报文要经由Director,但响应报文由RS直接发往Client

  • lvs-dr:通过封装新的MAC首部实现,通过MAC网络转发

  • lvs-tun:通过在原IP报文外封装新IP头实现转发,支持远距离通信

五、lvs的13种算法

LVS 分为静态算法(4 种)动态算法(9 种);静态不看后端服务器负载,只根据调度策略分发;动态会参考后端真实服务器负载状态。

一、静态调度算法(4 种,不感知 RS 负载)

1. RR 轮询(Round‑Robin)

  • 介绍:请求依次轮流分配给每台 RS,平均分配,不考虑服务器性能、负载。
  • 适用场景:后端服务器硬件性能完全一致,请求处理耗时差不多。
  • 示例:RS1、RS2、RS3;请求 1→RS1,请求 2→RS2,请求 3→RS3,请求 4→RS1 循环。

2. WRR 加权轮询(Weight Round‑Robin)

  • 介绍:给 RS 设置权重,权重越高分配请求越多;按权重比例轮流分发。
  • 适用场景:后端服务器硬件配置性能不一致。性能好机器权重调大。
  • 示例:RS1 权重 3,RS2 权重 1;分配序列:RS1,RS1,RS1,RS2,循环分配。

3. LC 目标地址散列(Destination Hashing)

  • 介绍:根据客户端访问的目标 IP做 hash 计算,算出固定 RS;同一个目标 IP 始终调度到同一台 RS。
  • 适用场景:缓存代理场景,访问同一个目标站点固定走同一台代理缓存服务器。
  • 示例:客户端都访问外网目标203.0.113.10,hash 后固定交给 RS2 处理。

###4. SH 源地址散列(Source Hashing)

  • 介绍:根据客户端源 IP做 hash,同一个客户端 IP,永远调度到同一台 RS。
  • 适用场景:会话保持;客户端会话需要固定落在一台后端。
  • 示例:客户端 IP192.168.1.100,hash 计算后永久分配给 RS1。

二、动态调度算法(9 种,会读取 RS 负载,负载包含:活跃连接数 + 非活跃连接数)

###5. LC 最小连接(Least‑Connection)

  • 介绍:把新请求分配给当前连接数最少的 RS。
  • 适用场景:请求处理时间长短差异大的业务,比如长连接业务。
  • 示例:RS1 连接 10,RS2 连接 5;新请求分给 RS2。

###6. WLC 加权最小连接(Weight Least‑Connection)⭐最常用默认算法

  • 介绍:综合权重与连接数。(活跃连接数*2+非活跃连接数)/权重,计算值最小接收请求。
  • 适用场景:后端服务器性能不一样,长短请求混合业务;企业最常用。
  • 示例:RS1 权重 5,RS2 权重 2;同样 10 连接,RS1 负载值更小优先分配。

###7. LBLC 基于局部性的最少连接(Locality‑Based Least‑Connection)

  • 介绍:目标 IP 哈希 + 最小连接。先按目标 IP 哈希找 RS;RS 未超载就分配给它;超载则选连接数最小 RS。
  • 适用场景:代理缓存集群。尽量保证相同访问目标落在同一缓存,缓存命中率优先。
  • 示例:访问目标 A 优先给 RS1,RS1 连接爆满,则转发给连接少的 RS3。

###8. LBLCR 带复制的基于局部性最少连接 (Locality‑Based Least‑Connection with Replication)

  • 介绍:LBLC 改进版;支持目标 IP 缓存复制;同一个目标 IP 流量可分发至多台 RS,分担热点压力。
  • 适用场景:代理缓存,热点访问量极高,单台缓存扛不住。
  • 示例:热点网站目标 IP,同时分发到 RS1、RS2 两台缓存节点。

###9. DH 目的地址哈希 (Destination Hash)

注意:和静态 DH 名字一样,动态版 DH 会感知后端服务器是否可用,RS 宕机会自动重 hash,静态 DH 不检测后端存活。

  • 介绍:对目标 IP 哈希映射 RS;后端故障自动重新 hash 映射其他节点。
  • 场景:缓存集群,需要故障自动容错。

###10. SH 源地址哈希 (Source Hash)

动态 SH 对比静态 SH:后端 RS 宕机,会自动重新 hash,不会一直把请求发给故障节点。静态 SH 后端宕机依旧 hash 到故障机器。

  • 介绍:源 IP 哈希绑定 RS,后端故障自动重算 hash 切换其他 RS。
  • 场景:需要源 IP 会话保持,同时要容忍后端节点故障。

###11. SED 最短期望延迟 (Shortest Expected Delay)

  • 介绍:公式(active*2+inactive +1)/weight,取数值最小服务器。在 WLC 基础上,空连接服务器也参与排序,优先分配给空闲机器。
  • 适用场景:希望优先调度空闲服务器,减少请求等待延迟。
  • 示例:RS1 无连接权重 2,RS2 有连接权重 5,SED 优先给到 RS1。

###12. NQ 永不排队 (Never Queue)

  • 介绍:如果有 RS 空闲 (连接数 = 0),直接分配给空闲节点;没有空闲节点使用 SED 算法。
  • 适用场景:尽可能利用空闲机器,避免请求排队堆积。
  • 示例:只要有一台 RS 完全空闲,请求直接丢给空闲机器;全部忙再用 SED。

###13. FO 加权故障轮询 (Fault‑Over)

  • 介绍:按权重设置主备优先级;高权重节点活着全部流量给它;只有它故障,才把流量切到次权重节点。类似主备模式。
  • 适用场景:主备集群,优先使用主服务器,故障才启用备用服务器。
  • 示例:RS1 权重 10,RS2 权重 5;RS1 正常所有请求走 RS1;RS1 故障全部切 RS2。

六、lvs的多端口轮询问题解决方案

6.1 NAT模式实现方法

VS主机中

[root@vsnode ~]# vmset.sh eth0 172.25.254.100 vsnode [root@vsnode ~]# vmset.sh eth1 192.168.0.100 vsnode noroute

RS1

#设定网络 [root@RS1 ~]# vmset.sh eth0 192.168.0.10 RS1 noroute [root@RS1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100 [root@RS1 ~]# nmcli connection reload [root@RS1 ~]# nmcli connection up eth0 [root@RS1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.100 0.0.0.0 UG 100 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 #设定访问业务真实数据 [root@RS1 ~]# dnf install httpd -y [root@RS1 ~]# systemctl enable --now httpd [root@RS1 ~]# echo RS1 - 192.168.0.10 > /var/www/html/index.html

RS2

#设定网络 [root@RS1 ~]# vmset.sh eth0 192.168.0.20 RS1 noroute [root@RS1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100 [root@RS1 ~]# nmcli connection reload [root@RS1 ~]# nmcli connection up eth0 [root@RS1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.100 0.0.0.0 UG 100 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 #设定访问业务真实数据 [root@RS1 ~]# dnf install httpd -y [root@RS1 ~]# systemctl enable --now httpd [root@RS1 ~]# echo RS2 - 192.168.0.20 > /var/www/html/index.html

在vs主机中测试环境

[root@vsnode ~]# curl 192.168.0.10 RS1 - 192.168.0.10 [root@vsnode ~]# curl 192.168.0.20 RS2 - 192.168.0.20

1.vs

#1,开启内核路由功能 [root@vsnode ~]# echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf [root@vsnode ~]# sysctl -p net.ipv4.ip_forward = 1 #2.编写策略 [root@vsnode ~]# ipvsadm -C [root@vsnode ~]# ipvsadm -A -t 172.25.254.100:80 -s wrr [root@vsnode ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 1 [root@vsnode ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m -w 1 [root@vsnode ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.100:80 wrr -> 192.168.0.10:80 Masq 1 0 0 -> 192.168.0.20:80 Masq 1 0 0 #测试 [root@vsnode ~]# for i in {1..10};do curl 172.25.254.100;done RS2 - 192.168.0.20 RS1 - 192.168.0.10 RS2 - 192.168.0.20 RS1 - 192.168.0.10 RS2 - 192.168.0.20 RS1 - 192.168.0.10 RS2 - 192.168.0.20 RS1 - 192.168.0.10 RS2 - 192.168.0.20 RS1 - 192.168.0.10 #更改权重 [root@vsnode ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 2 [root@vsnode ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.100:80 wrr -> 192.168.0.10:80 Masq 2 0 5 -> 192.168.0.20:80 Masq 1 0 5 #测试 [root@vsnode ~]# for i in {1..10};do curl 172.25.254.100;done RS2 - 192.168.0.20 RS1 - 192.168.0.10 RS1 - 192.168.0.10 RS2 - 192.168.0.20 RS1 - 192.168.0.10 RS1 - 192.168.0.10 RS2 - 192.168.0.20 RS1 - 192.168.0.10 RS1 - 192.168.0.10 RS2 - 192.168.0.20

规则持久化

实验过程可以用过打开另外一个shell的并执行监控命令的方式进行观察

[root@vsnode ~]# watch -n 1 ipvsadm -Ln
#利用自定义文件进行持久化 [root@vsnode ~]# ipvsadm-save -n -A -t 172.25.254.100:80 -s wrr -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 2 -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m -w 1 [root@vsnode ~]# ipvsadm-save -n > /mnt/ipvs.rule [root@vsnode ~]# ipvsadm -C [root@vsnode ~]# ipvsadm-restore < /mnt/ipvs.rule #利用守护进程进行规则持久化 [root@vsnode ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm [root@vsnode ~]# ipvsadm -C [root@vsnode ~]# systemctl enable --now ipvsadm.service Created symlink /etc/systemd/system/multi-user.target.wants/ipvsadm.service → /usr/lib/systemd/system/ipvsadm.service.

6.2 DR实现方法

二 环境设定方式

#在路由器中 [root@router ~]# systemctl disable --now ipvsadm.service Removed "/etc/systemd/system/multi-user.target.wants/ipvsadm.service". [root@router ~]# ipvsadm -C #在路由器中 [root@router ~]# vmset.sh eth0 172.25.254.100 vsnode [root@router ~]# vmset.sh eth1 192.168.0.100 vsnode noroute、 #设定内核路由功能 [root@router ~]# echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf [root@router ~]# sysctl -p net.ipv4.ip_forward = 1 #数据转发策略 [root@router ~]# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.100 [root@vsnode ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.100
vsnode 调度器 [root@vsnode ~]# vmset.sh eth0 192.168.0.50 vsnode norouter [root@vsnode ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection [connection] id=eth0 type=ethernet interface-name=eth0 [ipv4] method=manual address1==192.168.0.50/24,192.168.0.100 [root@vsnode ~]# cd /etc/NetworkManager/system-connections/ [root@vsnode system-connections]# cp -p eth0.nmconnection lo.nmconnection [root@vsnode system-connections]# vim lo.nmconnection [connection] id=lo type=loopback interface-name=lo [ipv4] method=manual address1==127.0.0.1/8 address2=192.168.0.200/32 [root@RS1 system-connections]# nmcli connection reload [root@RS1 system-connections]# nmcli connection up eth0 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/7) [root@RS1 system-connections]# nmcli connection up lo 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/8) #检测 root@vsnode system-connections]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.100 0.0.0.0 UG 100 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 [root@vsnode system-connections]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 192.168.0.200/32 brd 192.168.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:41:e5:8b brd ff:ff:ff:ff:ff:ff altname enp3s0 altname ens160 inet 192.168.0.50/24 brd 192.168.0.255 scope global secondary noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::e40:8975:6b9:fea8/64 scope link noprefixroute valid_lft forever preferred_lft forever
#客户端 [root@client ~]# vmset.sh eth0 172.25.254.99 client norouter 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4) 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:e5:75:af brd ff:ff:ff:ff:ff:ff altname enp3s0 altname ens160 inet 172.25.254.99/24 brd 172.25.254.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fee5:75af/64 scope link tentative noprefixroute valid_lft forever preferred_lft forever client [root@client ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection [connection] id=eth0 type=ethernet interface-name=eth0 [ipv4] method=manual address1=172.25.254.99/24,172.25.254.100 dns=8.8.8.8; [root@client ~]# nmcli connection reload [root@client ~]# nmcli connection up eth0 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5) [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 eth0 172.25.254.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 #检测 [root@client ~]# ping 192.168.0.200 PING 192.168.0.200 (192.168.0.200) 56(84) 比特的数据。 64 比特,来自 192.168.0.200: icmp_seq=1 ttl=128 时间=1.08 毫秒
#RS1 [root@RS1 ~]# vmset.sh eth0 192.168.0.10 RS1 noroute [root@RS1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100 [root@RS1 ~]# nmcli connection reload [root@RS1 ~]# nmcli connection up eth0 [root@RS1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.100 0.0.0.0 UG 100 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 #在lo上设定vip [root@RS1 ~]# cd /etc/NetworkManager/system-connections/ [root@RS1 system-connections]# cp -p eth0.nmconnection lo.nmconnection [root@RS1 system-connections]# vim lo.nmconnection [connection] id=lo type=loopback interface-name=lo [ethernet] [ipv4] address1=127.0.0.1/8 address2=192.168.0.200/32 method=manual [root@RS1 system-connections]# nmcli connection reload [root@RS1 system-connections]# nmcli connection up lo 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/6) [root@RS1 system-connections]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 192.168.0.200/32 scope global lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever #arp禁止响应 [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
#RS1 [root@RS2 ~]# vmset.sh eth0 192.168.0.20 RS2 noroute [root@RS2 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100 [root@RS2 ~]# nmcli connection reload [root@RS2 ~]# nmcli connection up eth0 [root@RS2 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.100 0.0.0.0 UG 100 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 #在lo上设定vip [root@RS2 ~]# cd /etc/NetworkManager/system-connections/ [root@RS2 system-connections]# cp -p eth0.nmconnection lo.nmconnection [root@RS2 system-connections]# vim lo.nmconnection [connection] id=lo type=loopback interface-name=lo [ethernet] [ipv4] address1=127.0.0.1/8 address2=192.168.0.200/32 method=manual [root@RS2 system-connections]# nmcli connection reload [root@RS2 system-connections]# nmcli connection up lo 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/6) [root@RS2 system-connections]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 192.168.0.200/32 scope global lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever #arp禁止响应 [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

七、lvs的会话粘滞解决方案

1.设定ipvs调度策略

[root@vsnode ~]# ipvsadm -A -f 6666 -s rr -p 1 [root@vsnode ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn FWM 6666 rr persistent 1 -> 192.168.0.10:0 Route 1 0 0 -> 192.168.0.20:0

2,测试:

[root@client ~]# curl 192.168.0.200 RS1 - 192.168.0.10 [root@client ~]# curl 192.168.0.200 RS1 - 192.168.0.10

3.观察

[root@vsnode ~]# watch -n 1 ipvsadm -Lnc IPVS connection entries pro expire state source virtual destination TCP 01:56 FIN_WAIT 172.25.254.99:42420 192.168.0.200:80 192.168.0.20:80 IP 00:57 ASSURED 172.25.254.99:0 0.0.26.10:0 192.168.0.20:0 TCP 01:54 FIN_WAIT 172.25.254.99:46216 192.168.0.200:80 192.168.0.20:80 TCP 01:55 FIN_WAIT 172.25.254.99:46222 192.168.0.200:80 192.168.0.20:80

Forward Weight ActiveConn InActConn
FWM 6666 rr persistent 1
-> 192.168.0.10:0 Route 1 0 0
-> 192.168.0.20:0

2,测试:

[root@client ~]# curl 192.168.0.200
RS1 - 192.168.0.10
[root@client ~]# curl 192.168.0.200
RS1 - 192.168.0.10

3.观察

[root@vsnode ~]# watch -n 1 ipvsadm -Lnc
IPVS connection entries
pro expire state source virtual destination
TCP 01:56 FIN_WAIT 172.25.254.99:42420 192.168.0.200:80 192.168.0.20:80
IP 00:57 ASSURED 172.25.254.99:0 0.0.26.10:0 192.168.0.20:0
TCP 01:54 FIN_WAIT 172.25.254.99:46216 192.168.0.200:80 192.168.0.20:80
TCP 01:55 FIN_WAIT 172.25.254.99:46222 192.168.0.200:80 192.168.0.20:80

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/31 4:54:56

告别试用期烦恼:IDM激活脚本让你的下载体验永不停歇

告别试用期烦恼&#xff1a;IDM激活脚本让你的下载体验永不停歇 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager&#xff08;ID…

作者头像 李华
网站建设 2026/7/31 4:51:48

Coze 零代码实战|基于RAG知识库+双数据库联动搭建AI学习智能客服

传统AI客服大多仅支持简单的闲聊对话&#xff0c;功能单一、扩展性极差&#xff0c;不仅无法读取私有专属学习资料&#xff0c;容易出现大模型幻觉问题&#xff0c;还不具备自动化资料整理、在线答题测评、报告生成等实用能力&#xff0c;很难满足专业化AI学习服务场景需求。本…

作者头像 李华
网站建设 2026/7/31 4:49:54

看懂代码,却不会写:AI时代真正该补的,是逻辑、研究与长期资产|长期招收编程一对一学员,Python一对一辅导,AI辅导,VibeCoding一对一辅导

形式&#xff1a;单人叙事播客 建议时长&#xff1a;约 25&#xff5e;30 分钟 内容范围&#xff1a;根据 meeting-viral-highlights-final.mp4 的完整字幕整理&#xff0c;覆盖成片全部核心内容&#xff0c;而非单一片段 播客音频&#xff1a;看懂代码&#xff0c;却不会写&am…

作者头像 李华
网站建设 2026/7/31 4:49:23

安卓模拟器横评:MuMu、雷电、夜神三款主流怎么选?实测聊聊我的结论

安卓模拟器横评&#xff1a;MuMu、雷电、夜神三款主流怎么选&#xff1f;实测聊聊我的结论 写在前面 PC 上玩手游这件事&#xff0c;这几年越来越主流。手机发烫、续航尿崩、内存不够、想多开挂机、想用键鼠搓玻璃……随便哪一条都够劝人装一个安卓模拟器。但市面上的选择挑花眼…

作者头像 李华
网站建设 2026/7/31 4:46:58

J-Link V9变砖修复实战:STM32F205RCT6固件刷写与SWD接口编程指南

1. 项目概述&#xff1a;从“砖头”到利器的重生之路手头有一个J-Link V9调试器突然“变砖”&#xff0c;相信是很多嵌入式开发者在某个深夜调试时最不想遇到的噩梦。屏幕上弹出一个冰冷的“J-Link: The connected emulator is a clone”或者直接无法识别&#xff0c;那一刻的感…

作者头像 李华
网站建设 2026/7/31 4:44:43

RAG系统构建指南:检索增强生成技术实践

1. RAGOps&#xff1a;检索增强生成系统的工程化实践检索增强生成&#xff08;Retrieval-Augmented Generation&#xff09;技术正在重塑AI应用开发范式。作为从业者&#xff0c;我亲历了从早期POC到生产级系统的完整演进过程。RAGOps不是简单的技术堆砌&#xff0c;而是融合信…

作者头像 李华