全网最详解LVS(Linux virual server)

news2024/11/18 11:24:39

目录

一、LVS(Linux virual server)是什么?

二、集群和分布式简介 

2.1、集群Cluster

2.2、分布式

2.3、集群和分布式

三、LVS运行原理

3.1、LVS基本概念

3.2、LVS集群的类型

3.2.1 nat模式

3.2.2 DR模式

3.2.3、LVS工作模式总结

3.3 LVS的调度算法

3.3.1 静态调度算法

3.3.2、动态调度算法

四、LVS部署命令介绍

4.1 相关软件信息

4.2 ipvsadm命令

4.3 集群中增删改参数

五、LVS部署集群演示

5.1 部署NAT模式集群

5.1.1 实验环境:

5.1.2 lvs配置:

5.1.3 webserver1配置:

5.1.4 webserver2配置:

5.1.5 lvs上面测试:

5.2 部署DR模式集群

5.2.1 实验环境

5.2.1.1 配置要点: 

5.2.1.2 解决vip响应问题:

5.2.1.2 router 配置:

5.2.1.3 lvs配置: 

5.2.1.4 RS1和RS2配置:

5.2.1.5 client 测试效果: 

5.3 防火墙标签解决轮询错误

5.3.1 轮询规则中可能会遇到的错误

5.3.2 防火墙标记解决轮询调度问题

5.3.2.1 在lvs中设定端口标签

5.4 lvs持久链接

5.4.1 解决方法:


一、LVS(Linux virual server)是什么?

LVS(Linux virual server) :是 Linux 下的虚拟服务器集群系统。它主要用于实现服务器集群的负载均衡,可以将多台服务器组合成一个高性能、高可用的服务器集群,将外部请求均衡地分配到集群中的各个服务器上,从而提高系统的处理能力和可靠性。

 

二、集群和分布式简介 

2.1、集群Cluster

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

cluster常见的三种类型:

类型说明
LB(LoadBalancing)(负载均衡)由多个主机组成,每个主机只承担一部分访问。
HA(High Aviliablity)(高可用)SLA(Service level agreement)(服务等级协议)是在一定开销下为保障服务的性能和可用性,服务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。在常规的领域中,总是设定所谓的三个9,四个9来进行表示,当没有达到这种水平的时候,就会有一些列的惩罚措施,而运维,最主要的目标就是达成这种服务水平。停机时间又分为两种,一种是计划内停机时间,一种是计划外停机时间,而运维则主要关注计划外停机时间
HPC (High-performance computing)(高性能计算,国家战略资源,HPC 集群主要用于需要进行大规模计算和数据处理的领域,如科学研究、工程模拟、气象预测等。

2.2、分布式

分为分布式存储分布式计算 

分布式存储:Ceph,GlusterFs,FastDFS,MogileFs

 分布式计算:hadoop,Spark

2.3、集群和分布式

介绍:

集群:同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据

和代码都是一样的。

分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务。

区别:

分布式:是以缩短单个任务的执行时间来提升效率的。

集群:则是通过提高单位时间内执行的任务数来提升效率,

 

三、LVS运行原理

3.1、LVS基本概念

 VS:Virtual Server(虚拟服务器):这是整个集群对外提供服务的统一入口,客户端通过访问虚拟服务器的 IP 地址来获取服务。

RS:Real Server(真实服务器):实际处理业务请求的服务器,它们组成了服务器集群,共同承担负载。

CIP:Client IP(客户端 IP):发起请求的客户端的 IP 地址。

VIP:Virtual Server IP(虚拟服务器 IP 地址):通常是一个对外公开的、可被客户端访问到的 IP 地址,代表了整个集群。

DIP:Director IP(调度器 IP 地址):即负载均衡器的 IP 地址,用于接收客户端请求并进行分配调度。

RIP:Real Server IP(真实服务器 IP 地址):集群中各真实服务器的 IP 地址。

例如,在一个网络架构中,客户端通过 VIP 访问服务,负载均衡器(VS)使用 DIP 接收请求,并将其分配到各个 RS 上,RS 使用 RIP 进行实际的业务处理。

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

3.2、LVS集群的类型

类型:

类型说明
lvs-net修改请求报文的目标IP,多目标IP的DNAT

lvs-dr

操纵封装新的MAC地址
lvs-tun(不介绍)在原请求IP报文之外新加一个IP首部
lvs-fullnat(不介绍)修改请求报文的源和目标IP
3.2.1 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的火墙策略全清理掉。

3.2.2 DR模式

 DR(Direct Routing):直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变

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

DR模式数据传输过程:

 

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地址

在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP

在RS上修改内核参数以限制arp通告及应答级别
echo 1 > /proc/sys/net/ipv4/conf/all or (lo)/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all or (lo)/arp_announce

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


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


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


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


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


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

3.2.3、LVS工作模式总结
NAT模式DR模式
RS操作系统不限禁用arp
调度器和服务器网络可跨网络不可跨网络
调度服务器数量服务器数量
RS服务器网关指向到调度器DIP指向到路由

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头实现转发,支持远距离通信 

3.3 LVS的调度算法

 根据其调度时是否考虑各RS当前的负载状态被分为两种:静态方法和动态方法。

算法说明
静态方法仅根据算法本身进行调度,不考虑RS的负载情况
动态方法主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度
3.3.1 静态调度算法
算法说明
RR(roundrobin)轮询 RS分别被调度,当RS配置有差别时不推荐
WRR(Weighted RR)加权轮询根据RS的配置进行加权调度,性能差的RS被调度的次数少
SH(Source Hashing)实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定
DH(Destination Hashing)目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商
3.3.2、动态调度算法

 主要根据RS当前的负载状态及调度算法进行调度Overhead=value较小的RS会被调度

算法说明
LC(least connections)(最少链接发)适用于长连接应用Overhead(负载值)=activeconns(活动链接数) x 256+inactiveconns(非活动链接数)
WLC(Weighted LC)(权重最少链接)默认调度方法Overhead=(activeconns x 256+inactiveconns)/weight
SED(Shortest Expection Delay)初始连接高权重优先Overhead=(activeconns+1+inactiveconns) x 256/weight但是,当node1的权重为1,node2的权重为10,经过运算前几次的调度都会被node2承接
NQ(Never Queue)第一轮均匀分配,后续SED
LBLC(Locality-Based LC)动态的DH算法,使用场景:根据负载状态实现正向代理
LBLCR(LBLC with Replication)带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制

四、LVS部署命令介绍

4.1 相关软件信息

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

4.2 ipvsadm命令

命令参数 :

管理集群服务
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] 保存
管理集群中的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] 清楚计数器

4.3 集群中增删改参数

管理集群服务中的增删改:  

参数说明
-A添加
-E修改
-ttcp服务
-uudp服务
-s指定调度算法,默认为WLC
-p设置持久链接超时,持久链接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver
-ffirewall mask 火墙标记,是一个数字
增加:
[root@haproxy ~]# ipvsadm -A -t 192.168.0.50:80 -s rr
[root@haproxy ~]# 
[root@haproxy ~]# 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.50:80 rr
[root@haproxy ~]# 

修改:
[root@haproxy ~]# ipvsadm -E -t 192.168.0.50:80 -s wrr
[root@haproxy ~]# 
[root@haproxy ~]# 
[root@haproxy ~]# 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.50:80 wrr
[root@haproxy ~]# 

删除:
[root@haproxy ~]# ipvsadm -D -t 192.168.0.50:80
[root@haproxy ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@haproxy ~]# 

 管理集群中RealServer的增删改:

参数说明
-a添加realserver
-e更改realserver
-ttcp协议
-uudp协议
-f火墙标签
-rrealserver地址
-g直连路由模式
-iip隧道模式
-mnat模式
-w设定权重
-Z清空计数器
-C清空lvs策略
-L查看lvs策略
-n不做解析
--rate输出速率信息
增加:
[root@haproxy ~]# ipvsadm -a -t 192.168.0.50:80 -r 192.168.0.10:80 -m
[root@haproxy ~]# ipvsadm -a -t 192.168.0.50:80 -r 192.168.0.20:80 -m -w 2
[root@haproxy ~]# 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.50:80 rr
  -> 192.168.0.10:80              Masq    1      0          0         
  -> 192.168.0.20:80              Masq    2      0          0         

更改:
[root@haproxy ~]# ipvsadm -e -t 192.168.0.50:80 -r 192.168.0.10 -m -w 2
[root@haproxy ~]# 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.50:80 rr
  -> 192.168.0.10:80              Masq    2      0          0         
  -> 192.168.0.20:80              Masq    2      0          0         
[root@haproxy ~]# 

删除:
[root@haproxy ~]# ipvsadm -d -t 192.168.0.50:80 -r 192.168.0.10
[root@haproxy ~]# ipvsadm -d -t 192.168.0.50:80 -r 192.168.0.20
[root@haproxy ~]# 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.50:80 rr

五、LVS部署集群演示

5.1 部署NAT模式集群

5.1.1 实验环境:
主机IPvip角色
lvs192.168.0.100172.25.254.100调度器
webserver1192.168.0.10null真实服务器
webserver2192.168.0.20null真实服务器
5.1.2 lvs配置:
yum install ipvsadm -y  --- 安装软件ipvsadm
echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf/  --- 启用内核路由,并写入配置文件
添加调度策略并查看
[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m
[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  172.25.254.100:80 rr
  -> 192.168.0.10:80              Masq    1      0          0         
  -> 192.168.0.20:80              Masq    1      0          0         
[root@lvs ~]# 

systemclt stop firewalld


查看策略另外的方式:
cat /proc/net/ip_vs
cat /proc/net/ip_vs_conn
5.1.3 webserver1配置:
yum install httpd -y

echo webserver1 - 192.168.0.10 > /var/www/html/index.html

systemctl restart httpd
systemctl stop firewalld
5.1.4 webserver2配置:
yum install httpd -y

echo webserver2 - 192.168.0.20 > /var/www/html/index.html

systemctl restart httpd
systemctl stop firewalld
5.1.5 lvs上面测试:
[root@lvs ~]# for i in {1..10}
> do
> curl 172.25.254.100
> done

上面的配置都是临时的,重启之后需要重新做。

这里web服务写的不一样是因为便于查看测试结果,企业中内容应该是一样的。

5.2 部署DR模式集群

5.2.1 实验环境
主机IPVIP角色
clientNAT-ens160:172.25.254.200/24null测试主机
router

NAT-ens160:172.25.254.100/24

仅主机-ens224:192.168.0.100/24

null路由器
lvs仅主机-ens224:192.168.0.50/24lo:192.168.0.200调度器
webserver1仅主机-ens224:192.168.0.10/24lo:192.168.0.200web1服务器
webserver2仅主机-ens224:192.168.0.20/24lo:192.168.0.200web2服务器
5.2.1.1 配置要点: 

1.Director服务器采用双IP桥接网络,一个是VIP,一个DIP

2.Web服务器采用和DIP相同的网段和Director连接

3.每个Web服务器配置VIP

4.每个web服务器可以出外网

5.所有主机都要关掉防火墙和selinux

5.2.1.2 解决vip响应问题:

DR模型中各主机上均需要配置VIP,解决地址冲突的方式有三种:

(1)在前端网关做静态绑定

(2)在各RS使用arptables

(3)在各RS修改内核参数,来限制arp响应和通告的级别

限制响应级别:arp_ignore

0:默认值,表示可使用本地任意接口上配置的任意地址进行响应

1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应

限制通告级别:arp_announce

0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告

1:尽量避免将接口信息向非直接连接网络进行通告

2:必须避免将接口信息向非本网络进行通告

5.2.1.2 router 配置:
sysctl -a | grep ip_forwrd   ------ 查看内核路由是否启用
echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf/  --- 启用内核路由,并写入配置文件
5.2.1.3 lvs配置: 
设定vip
[root@lvs ~]# ip a a dev lo 192.168.0.200/32

配置策略:
[root@lvs ~]# ipvsadm -A -t 192.168.0.200:80 -s wrr 
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2
[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.200:80 wrr
  -> 192.168.0.10:80              Route   1      0          0         
  -> 192.168.0.20:80              Route   2      0          0         
[root@lvs ~]# 
5.2.1.4 RS1和RS2配置:
在RS1和RS2中解决响应问题并设定VIP
[root@webserver1 ~]# ip a a dev lo 192.168.0.200/32
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@webserver1 ~]# 

[root@webserver2 ~]# ip a a dev lo 192.168.0.200/32
[root@webserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@webserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@webserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@webserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
5.2.1.5 client 测试效果: 
[root@client ~]# for i in {1..10}
> do
> curl 192.168.0.200
> done

webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
[root@client ~]#

5.3 防火墙标签解决轮询错误

5.3.1 轮询规则中可能会遇到的错误

        以http和https为例,当我们在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出现了一个轮询错乱的问题。

当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1上。

 问题展示:

在两台服务器中安装mod_ssl
[root@webserver1 ~]# dnf install mod_ssl -y
[root@webserver2 ~]# dnf install mod_ssl -y


设置调度策略,因为我们要调度80和443两个端口所以我们需要设定两组策略
[root@lvs ~]# ipvsadm -A -t 192.168.0.200:80 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g
[root@lvs ~]# ipvsadm -A -t 192.168.0.200:443 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.10:443 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.20:443 -g
[root@lvs ~]# 
[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.200:80 rr
  -> 192.168.0.10:80              Route   1      0          0         
  -> 192.168.0.20:80              Route   1      0          0         
TCP  192.168.0.200:443 rr
  -> 192.168.0.10:443             Route   1      0          0         
  -> 192.168.0.20:443             Route   1      0          0         
[root@lvs ~]# 

测试问题:
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver2 - 192.168.0.20
webserver2 - 192.168.0.20
[root@client ~]# 
访问vip时都到了相同的服务器
5.3.2 防火墙标记解决轮询调度问题

FWM:FireWall Mark

MARK target 可用于给特定的报文打标记,

--set-mark value
其中:value 可为0xffff格式,表示十六进制数字借助于防火墙标记来分类报文,而后基于标记定义集群服
务:可将多个不同的应用使用同一个集群服务进行调度

5.3.2.1 在lvs中设定端口标签:
 
为端口做标记:
[root@lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66

查看是否做上标记:
[root@lvs ~]# iptables -t mangle -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
MARK       6    --  0.0.0.0/0            192.168.0.200        multiport dports 80,443 MARK set 0x42

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
[root@lvs ~]# 

设置调度策略:
[root@lvs ~]# ipvsadm -A -f 66 -s rr
[root@lvs ~]# ipvsadm -a -f 66 -r 192.168.0.10 -g
[root@lvs ~]# ipvsadm -a -f 66 -r 192.168.0.20 -g
[root@lvs ~]# 
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  66 rr
  -> 192.168.0.10:0               Route   1      0          0         
  -> 192.168.0.20:0               Route   1      0          0         
[root@lvs ~]# 


测试[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
[root@client ~]# 

此时就解决了轮询错误问题。
5.4 lvs持久链接

       在我们客户上网过程中有很多情况下需要和服务器进行交互,客户需要提交响应信息给服务器,如果单纯的进行调度会导致客户填写的表单丢失,为了解决这个问题我们可以用sh算法,但是sh算法比较简单粗暴,可能会导致调度失衡

5.4.1 解决方法:

       在进行调度时,不管用什么算法,只要相同源过来的数据包我们就把他的访问记录在内存中,也就是把这个源的主机调度到了那个RS上如果在短期(默认360S)内同源再来访问我仍然按照内存中记录的调度信息,把这个源的访问还调度到同一台RS上。如果过了比较长的时间(默认最长时间360s)同源访问再次来访,那么就会被调度到其他的RS上 。

ipvsadm -AlE -tlulf service-address [-s scheduler] [-p [timeout]]默认360秒
在lvs调度器中设定
[root@lvs ~]# ipvsadm -E -f 6666 -s rr -p [3000]
[root@lvs ~]# ipvsadm -LnC

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

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

相关文章

RSYSLOG收到华为防火墙日志差8小时的解决方法

RSYSLOG收到华为防火墙日志差8小时 这个问题其实不关Rsyslog配置的事,只要修改华为墙的配置就好 处理方法: info-center loghost 172.18.6.91 language Chinese local-time 在华为web界面添加ip是不会添加local-time这个参数的, 需要在命令…

sqli-labs第二关详解

首先让id1,正常显示,接着尝试and 11和and 12 and 11正常,and 12不正常 所以可以判断是数字型注入,使用order by 判断列数,发现有三个字段 使用union语句,找出能显示信息的地方 接下来就是找出数据库名称和版…

Leetcode75-7 除自身以外数组的乘积

没做出来 本来的思路是遍历一遍得到所有乘积和然后除就行 但是题目不能用除法 答案的思路 for(int i0;i<n;i) //最终每个元素其左右乘积进行相乘得出结果{res[i]*left; //乘以其左边的乘积left*nums[i];res[n-1-i]*right; //乘以其右边的乘积right*nums[n-1-i]…

搭建 Web 群集Haproxy

案例概述 Haproxy 是目前比较流行的一种群集调度工具&#xff0c;同类群集调度工具有很多&#xff0c;如 LVS 和Nginx。相比较而言&#xff0c;LVS 性能最好&#xff0c;但是搭建相对复杂;Nginx 的upstream模块支持群集功能&#xff0c;但是对群集节点健康检查功能不强&#xf…

海量数据处理商用短链接生成器平台 - 10

第二十一章 短链服务冗余双写-链路测试和异常消息处理实战 第1集 冗余双写MQ架构-消费者配置自动创建队列和集群测试 简介&#xff1a; 冗余双写MQ架构-MQ消费者配置自动创建队列 controller-service层开发配置文件配置MQ ##----------rabbit配置-------------- spring.rab…

古彝文——唯一存活的世界六大古文字

关注我们 - 数字罗塞塔计划 - 早在五千年前&#xff0c;彝族的先祖就发明了十月太阳历&#xff0c;成为中华文明的重要创造者之一&#xff1b;同时&#xff0c;彝族的先祖也创制了古彝文&#xff0c;开创了独具特色的彝族文化。古彝文也被称为古夷文、传统彝文&#xff0c;是相…

Unity补完计划 之 动态控制TileMap

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正 1.TileMap &TileBase Unity - Scripting API: Tilemap &#xff0c;看手册内容太多了故介绍几个常用的公共方法 首…

一个IT能拖垮整个公司?你若不信,看完此文再来评论

看到文章的标题&#xff0c;你也许会心生疑惑&#xff1a;一个IT真的能拖垮整个公司吗&#xff1f;也可能会觉得我根本就是在哗众取宠、博人眼球。 而我要说&#xff0c;在特定的条件下&#xff0c;这真的不夸张&#xff0c;你若不信&#xff0c;且听我娓娓道来&#xff0c;看完…

java maven项目如何分析循环依赖并使用maven helper插件排查排除依赖

文章目录 java maven项目如何分析循环依赖并使用maven helper插件排查排除依赖分析项目依赖插件Maven Helper找到并排除循环的依赖 java maven项目如何分析循环依赖并使用maven helper插件排查排除依赖 分析项目依赖 选择检测整个项目 查看红色的模块&#xff0c;都是有循环依…

问卷星无法选择复制

删除<link rel"stylesheet" href"//image.wjx.cn/joinnew/css/jqmobo.css?v5187">

【信创】Linux如何增加与删除交换分区 _ 统信 _ 麒麟 _ 中科方德

原文链接&#xff1a;信创】Linux如何增加与删除交换分区 | 统信 | 麒麟 | 中科方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在信创终端操作系统上如何增加与删除交换分区的文章。交换分区&#xff08;Swap&#xff09;在Linux系统中扮演着重要角色&…

思特威正式发布子品牌飞凌微,首发产品定位智驾视觉处理

2024年8月8日&#xff0c;中国上海 — 思特威&#xff08;上海&#xff09;电子科技股份有限公司&#xff08;股票简称&#xff1a;思特威&#xff0c;股票代码&#xff1a;688213&#xff09;正式发布全资子公司品牌——飞凌微电子&#xff08;Flyingchip™&#xff0c;以下简…

工具学习_CAPA a ATTCK

随着网络威胁的日益复杂和多样化&#xff0c;恶意软件的分析与识别成为安全领域的重要挑战。在这个背景下&#xff0c;静态分析技术成为了对抗恶意软件的有效手段。CAPA 作为一款强大的静态分析工具&#xff0c;能够帮助分析师快速提取恶意软件的静态特征&#xff0c;而 ATT&am…

无线领夹麦克风和有线哪个好?求知无线领夹麦哪个牌子好?

如今&#xff0c;自媒体行业蓬勃发展&#xff0c;音频设备作为创作过程中不可或缺的一部分&#xff0c;越来越受到重视。无线领夹麦克风因其出色的性能和便携性&#xff0c;逐渐成为市场上的热门产品。购买无线领夹麦克风已经成为许多创作者的共识。然而&#xff0c;面对市面上…

自动驾驶系列—图像到IPM:深入解析IMP投影变换技术

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

第十九天(2024.8.7)Vue Element-plus

1.Vue 1.创建vue文件 1.创建一个文件夹来存储vue文件 我在D盘下创建了一个EasyVue文件夹来存储vue文件 2.在控制台中输入 如果在控制台中按下面步骤成功不了的话&#xff0c;尝试&#xff1a;1.用管理员身份运行控制台 2.关闭防火墙 3.打开编码工具&#xff08;Visual St…

易基因:干旱胁迫下的作物DNA甲基化动态变化 | 植物抗逆

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 干旱&#xff08;Drought&#xff09;会对植物的生长、发育和生产力造成严重损害&#xff0c;是最具危害性的环境因素之一。植物已经进化出复杂的调控网络和干旱胁迫的抗性策略。作为一种…

终于有人把客户成功讲明白了

作者&#xff1a;沈建明 对ToB企业来说&#xff0c;只有客户成功才能带来持久增长&#xff0c;在SaaS企业下行大背景下&#xff0c;客户成功是唯一的救命稻草。大家是不是都听过这样的说法&#xff1f; ToB和SaaS企业的老客户贡献对于企业至关重要。因为获取新客户的成本是留…

Pycharm中重命名项目之后切换虚拟环境

Pycharm中重命名项目之后切换虚拟环境 场景 在Pycharm里面Rename Project/Directory之后&#xff0c;通常需要切换虚拟环境。 步骤 # 退出当前虚拟环境 deactivate # 删除旧的虚拟环境 .venv # 新建新的虚拟环境 python -m venv .venv # 切换到新的工程目录 cd E:\Bigdata\…

HexView 刷写文件脚本处理工具-基本功能介绍(六)-导出MIME/BIN/FIAT/FORD

导出MIME编码数据 这个选项将数据文件导出为MIME编码格式,并使用BASE64编码。 导出二进制数据 此选项会将所有数据内容按照它们出现的顺序写入一个二进制文件。 导出二进制块数据 这个选项将数据导出到一个二进制文件中。但是,如果内部数据文件包含多个块,数据将被写…