|
FWM:FireWall Mark
MARK target 可用于给特定的报文打标记
--set-mark value 其中:value 为十六进制数字
借助于防火墙标记来分类报文,而后基于标记定义集群服务;可将多个不同的应用使用同一个集群服务进行调度
实现方法:
在VS主机打标记:
iptables -t mangle -A PREROUTING -d $vip -p $proto –m multiport --dports $port1,$port2,… -j MARK --set-mark NUMBER
在VS主机基于标记定义集群服务:
ipvsadm -A -f 标记符 [options]
# iptables -t mangle -A PREROUTING -d 172.18.50.100 -p tcp –m multiport --dports 80,443 -j MARK --set-mark 10
# ipvsadm -A -f 10 -s wrr
# ipvsadm -a -f 10 -r 192.168.1.100 -g
# ipvsadm -a -f 10 -r 192.168.1.101 -g
持久连接
实现无论使用任何调度算法,在一段时间内(默认360s),能够实现将来自同一个地址的请求始终发往同一个RS,从面实现session绑定
持久连接实现方式:
PPC: 每端口持久。每个端口对应定义为一个集群服务,每集群服务单独调度
# ipvsadm -E -t 192.168.7.250:80 -s rr -p 60
PFWMC: 每防火墙标记持久。基于防火墙标记定义集群服务;可实现将多个端口上的应用统一调度,即所谓的port Affinity
# ipvsadm -A -f 10 -s wrr -p
PCC: 每客户端持久。基于0端口(表示所有服务)定义集群服务,即将客户端对所有应用的请求都调度至后端主机,必须定义为持久模式
# ipvsadm -E -t 192.168.7.250:0 -s rr -p 60
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
# ipvsadm -E -t 192.168.7.250:80 -s rr -p 60
# 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.7.250:80 rr persistent 60
-> 192.168.7.201:80 Route 1 0 0
-> 192.168.7.203:80 Route 1 1 0
在客户端上60秒之内都会调度到同一RS上
# for ((i=1;i VIP地址
real=192.168.7.201:80 gate 1 > RealServer,gate表示DR模型,后面为权重
real=192.168.7.203:80 gate 1
service=http > 集群类型
scheduler=wrr > 调度算法
#persistent=600 > 持久连接
#netmask=255.255.255.255
protocol=tcp > 协议,fwm(防火墙标记),udp,
checktype=negotiate > 健康度检查方法,ping,
checkport=80
request="index.html" > 检测的页面文件
receive="RS" > 检查的页面字符
启动ldirectord
会自动创建集群规则,先把之前的规则清空
# ipvsadm -C
# systemctl start ldirectord.service
# 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.7.250:80 wrr
-> 192.168.7.201:80 Route 1 0 0
-> 192.168.7.203:80 Route 1 0 0
模拟RealServer故障
# vim /var/www/html/index.html
R2
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.7.250:80 wrr
-> 192.168.7.201:80 Route 1 0 2
修复后会自动加入集群
# 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.7.250:80 wrr
-> 192.168.7.201:80 Route 1 0 26
-> 192.168.7.203:80 Route 1 0 4
检测Mysql的范例
#Sample configuration for a MySQL virtual service.
#virtual = 192.168.10.74:3306
# real=sql01->sql03:3306 gate 10
# fallback=127.0.0.1:3306
# service=mysql
# scheduler=wrr
# #persistent=600
# #netmask=255.255.255.255
# protocol=tcp
# checktype=negotiate
# login="readuser"
# passwd="genericpassword"
# database="portal"
# request="SELECT * FROM link"
|
|
|