LVS技术详解与实战

发布于:2025-07-22 ⋅ 阅读:(19) ⋅ 点赞:(0)

1.LVS简介

LVS:Linux Virtual Server,负载调度器,内核集成,阿里的四层SLB(Server LoadBalance)是基于LVS+keepalived实现。

LVS 相关术语

  • VS:Virtual Server,负责调度

  • RS:RealServer,负责真正提供服务

1.1.LVS概念集群体系结构

1.2.LVS概念

VS:Virtual Server RS:Real Server CIP:Client IP VIP: Virtual serve IP #VS外网的IP DIP: Director IP #VS内网的IP RIP: Real server IP

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

2.LVS集群的类型

lvs-nat: 修改请求报文的目标IP,多目标IP的DNAT

lvs-dr: 操纵封装新的MAC地址

lvs-tun: 在原请求IP报文之外新加一个IP首部

lvs-fullnat: 修改请求报文的源和目标IP

2.1.nat模式

Ivs-nat:

  • 本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发。

  • RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP

  • 请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈

  • 支持端口映射,可修改请求报文的目标PORT

  • VS必须是Linux系统,RS可以是任意OS系统

2.2.nat模式数据逻辑

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的调度机容易阻塞

2.3.DR模式

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

2.4.DR模式数据逻辑

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

2.5.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

2.6.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通告及应答级别

/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce

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

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

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

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

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

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

2.7.LVS工作模式总结

NAT模式 TUN模式 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.lvs的调度算法

3.1.lvs调度算法类型

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

静态方法:仅根据算法本身进行调度,不考虑RS的负载情况

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

3.2.lvs静态调度算法

1、RR:roundrobin 轮询 RS分别被调度,当RS配置有差别时不推荐

2、WRR:Weighted RR,加权轮询根据RS的配置进行加权调度,性能差的RS被调度的次数少

3、SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往

第一次挑中的RS,从而实现会话绑定

4、DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商

3.3.lvs动态调度算法

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

1、LC:least connections(最少链接发)

适用于长连接应用Overhead(负载值)=activeconns(活动链接数) x 256+inactiveconns(非活动链接数)

2、WLC:Weighted LC(权重最少链接)

默认调度方法Overhead=(activeconns x 256+inactiveconns)/weight

3、SED:Shortest Expection Delay,

初始连接高权重优先Overhead=(activeconns+1+inactiveconns) x 256/weight

    但是,当node1的权重为1,node2的权重为10,经过运算前几次的调度都会被node2承接

4、NQ:Never Queue,第一轮均匀分配,后续SED

5、LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理

6、LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS

3.4.在4.15版本内核以后新增调度算法

1.FO(Weighted Fai Over)调度算法:常用作灰度发布

在此FO算法中,遍历虚拟服务所关联的真实服务器链表,找到还未过载(未设置IP_VS_DEST_FOVERLOAD标志)的且权重最高的真实服务器,进行调度

当服务器承接大量链接,我们可以对此服务器进行过载标记(IP_VS_DEST_F OVERLOAD),那么vs调度器就不会把链接调度到有过载标记的主机中。

2.OVF(Overflow-connection)调度算法

基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动连接数量超过权重值,之后调度到下一个权重值最高的真实服务器,在此OVF算法中,遍历虚拟服务相关联的真实服务器链表,找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条件:

  • 未过载(未设置IP_VS_DEST_F OVERLOAD标志)

  • 真实服务器当前的活动连接数量小于其权重值

  • 其权重值不为零

4.LVS部署

4.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

4.2.ipvsadm命令

核心功能:

  • 集群服务管理:增、删、改

  • 集群服务的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] 保存
​
管理集群中的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] 清楚计数器
管理集群服务中的增删改
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
管理集群中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
[root@DR-server ~]# ipvsadm -Ln
[root@DR-server ~]# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
-> RemoteAddress:Port
TCP 172.25.254.100:80 0 0 0 0 0
-> 192.168.0.30:80 0 0 0 0 0
-> 192.168.0.40:80 0 0 0 0 0

[root@DR-server ~]# ipvsadm -C

[root@DR-server ~]# ipvsadm -Z -t 172.25.254.20:80
[root@DR-server ~]# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
-> RemoteAddress:Port
TCP 172.25.254.20:80 0 0 0 0 0
-> 192.168.0.30:80 0 0 0 0 0
-> 192.168.0.40:80 0 0 0 0 0
保存策略,备份及恢复
[root@lvs ~]# ipvsadm-save -n
[root@lvs ~]# ipvsadm-save -n > /mnt/ipvsadm.rule
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm-restore < /mnt/ipvsadm.rule

#永久保存,开机自启动
[root@lvs ~]# ipvsadm-save -n >/etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl enable --now ipvsadm.service 

5.LVS实战案例

5.1.部署NAT模式集群案例

1.Director 服务器采用双网卡,一个是桥接网卡连接外网,一个是仅主机网卡与后端Web服务器相连 2.Web服务器采用仅主机网卡与director相连 3.Web服务器网关指向192.168.0.100 4.后端web服务器不需要连接外网

实验环境
主机名 ip vip 角色
LVS 192.168.0.100 172.25.254.100 调度器(VS)
RS1 192.168.0.10,GW 192.168.0.100 null 真实服务器(RS)
RS2 192.168.0.20,GW 192.168.0.100 null 真实服务器(RS)
client 172.25.254.10 客户端
配置命令

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

# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf
# sysctl --system

2.在LVS中安装ipvsadm

#yum install ipvsadm -y

3.LVS中添加调度策略

# ipvsadm -A -t 172.25.254.100:80 -s rr
# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.101:80
# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.101:80 -m
# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.102:80 -m

4.查看策略

[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          5         
  -> 192.168.0.20:80              Masq    1      0          5   
[root@lvs ~]# 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  
  -> C0A80014:0050      Masq    1      0          5         
  -> C0A8000A:0050      Masq    1      0          5        
[root@lvs ~]# cat /proc/net/ip_vs_conn
Pro FromIP   FPrt ToIP     TPrt DestIP   DPrt State       Expires PEName PEData
TCP AC19FE0A C58A AC19FE64 0050 C0A80014 0050 TIME_WAIT        90
TCP AC19FE0A C5C0 AC19FE64 0050 C0A80014 0050 TIME_WAIT        90
TCP AC19FE0A C5A0 AC19FE64 0050 C0A8000A 0050 TIME_WAIT        90
TCP AC19FE0A C5E2 AC19FE64 0050 C0A8000A 0050 TIME_WAIT        90
TCP AC19FE0A C5AC AC19FE64 0050 C0A80014 0050 TIME_WAIT        90

5.保存规则

[root@lvs ~]# ipvsadm -Sn
-A -t 172.25.254.100:80 -s rr
-a -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 1
-a -t 172.25.254.100:80 -r 192.168.0.20:80 -m -w 1
[root@lvs ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm-config

6.删除所有规则

[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

7.重新加载规则

[root@lvs ~]# ipvsadm -R < /etc/sysconfig/ipvsadm-config
[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 

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

[root@lvs ~]# systemctl enable --now ipvsadm.service

9.测试

[root@client ~]# for i in {1..6};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

10.修改为权重调用算法

[root@lvs ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr
[root@lvs ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 2
[root@lvs ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.20:80 -m -w 2
[root@lvs ~]# systemctl restart ipvsadm.service

测试效果
[root@client ~]# for i in {1..6};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

5.2.部署DR模式集群案例

实验环境
主机名 ip vip 角色
LVS 192.168.0.200 GW 192.168.0.10 仅主机 lo:192.168.0.100 调度器(VS)
router eth0:172.25.254.100,仅主机 eth1:192.168.0.10 null 路由器
RS1 192.168.0.101 GW 192.168.0.10 仅主机 lo:192.168.0.100 web服务器1
RS2 192.168.0.102 GW 192.168.0.10 仅主机 lo:192.168.0.100 web服务器2
client 172.25.254.10 null 测试主机

配置实验环境

#在客户端主机中为nat模式网卡
[root@client ~]# vim/etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0
[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 eth0
172.25.254.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
#################################################################################

#################################################################################
#在路由主机中设定双网卡,eth0为nat网卡,eth1为仅主机网卡
#对于eth0的设定
[root@DR-server ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
method=manual
address1=172.25.254.100/24

#对于eth1的设定
[root@DR-server ~]# vim /etc/NetworkManager/system-connections/eth1.nmconnection
[connection]
id=eth1
type=ethernet
interface-name=eth1

[ipv4]
method=manual
address1=192.168.0.10/24
#################################################################################

#################################################################################
#对于dr调度器设定网卡为仅主机模式
[root@dr-server ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0

[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 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
#################################################################################

#################################################################################
#对于RS1的设定网卡为仅主机模式
[root@webserver1 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
method=manual
address1=192.168.0.101/24,192.168.0.10
[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 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
#进入用apr相应
#################################################################################

#################################################################################
#对于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 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
#################################################################################
解决vip响应问题

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

  1. 在前端网关做静态绑定

  2. 在各RS使用arptables

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

限制响应级别:arp_ignore

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

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

限制通告级别:arp_announce

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

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

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

配置详情
  1. Director服务器采用双IP桥接网络,一个是VPP,一个DIP

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

  3. 每个Web服务器配置VIP

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

在lvs 和 rs 中设定vip
[root@lvs ~]# ip addr add dev lo 192.168.0.100/32
[root@rs1 ~]# ip addr add dev lo 192.168.0.100/32
[root@rs2 ~]# ip addr add dev lo 192.168.0.100/32

在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

在lvs中配置策略
[root@lvs ~]# ipvsadm -A -t 192.168.0.100:80 -s wrr
[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 wrr  
  -> 192.168.0.101:80   Route    1      0          0        
  -> 192.168.0.102:80   Route    1      0          0

测试效果:

[root@node10 ~]# for i in {1..6};do curl 192.168.0.100;done
RS2 server - 192.168.0.102
RS1 server - 192.168.0.101
RS2 server - 192.168.0.102
RS1 server - 192.168.0.101
RS2 server - 192.168.0.102
RS1 server - 192.168.0.101
防火墙标记解决轮询调度问题

FWM:FireWall Mark

MARK target 可用于给特定的报文打标记, --set-mark value

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

实现方法:

在Director主机打标记:
iptables -t mangle -A PREROUTING -d $vip -p $proto -m multiport --dports $portl,$port2,..-i MARK --set-mark NUMBER

在Director主机基于标记定义集群服务:
ipvsadm -A -f NUMBER [options]

示例如下:

在vs调度器中设定端口标签,人为80和443是一个整体
]# iptables -t mangle -A PREROUTING -d 192.168.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 666

设定调度规则
[root@lvs ~]# ipvsadm -A -f 666 -s rr
[root@lvs ~]# ipvsadm -a -f 666 -r 192.168.0.101 -g
[root@lvs ~]# ipvsadm -a -f 666 -r 192.168.0.102 -g

测试结果
[root@node10 ~]# curl -k https://192.168.0.100
RS2 server - 192.168.0.102
[root@node10 ~]# curl -k https://192.168.0.100;curl 192.168.0.100
RS1 server - 192.168.0.101
RS2 server - 192.168.0.102

网站公告

今日签到

点亮在社区的每一天
去签到