1.2 负载均衡:Linux Virtual Server之TUN、ldirectord

LVS其他集群

    除了 NAT 和 DR 模式以外,还有两种模式的 LVS 集群:TUN 和 FULLNAT

    lvs-TUN

    不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP)

(1) DIP, VIP, RIP都应该是公网地址
(2) RS的网关一般不能指向DIP
(3) 请求报文要经由Director,但响应不能经由Director
(4) 不支持端口映射

(5) RS的OS须支持隧道功能

    lvs-FULLNAT不了解,日后接触到相关技术再补充。

FireWall Mark与持久连接

    FireWall Mark

    借助于防火墙标记来分类报文,而后基于标记定义集群服务;可将多个不同的应用使用同一个集群服务进行调度。

    在 LVS 上设置 iptables 为特定的报文标记标签

[root@CentOS74 ~]# iptables -t mangle -A PREROUTING -d 10.0.0.74 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 8000
[root@CentOS74 ~]# iptables -t mangle -vnL
Chain PREROUTING (policy ACCEPT 550 packets, 44502 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  172 10914 MARK       tcp  --  *      *       0.0.0.0/0            10.0.0.74            multiport dports 80,443 MARK set 0x1f40

将 iptables规则 记录在 mangle 表上,是因为 mangle 表为修改数据表记位规则表。

    语法:iptables -t mangle -A PREROUTING -d lvs地址 -p tcp -m multiport --dport 端口号 -j MARK --set-mark 标记数

其中,标记数可为 0xffff 格式,表示十六进制数字。

使用 -f 选项设置 ipvs 规则

[root@CentOS74 ~]# ipvsadm -A -f 8000 -s wlc
[root@CentOS74 ~]# ipvsadm -a -f 8000 -r 192.168.30.75 -g -w 3
[root@CentOS74 ~]# ipvsadm -a -f 8000 -r 192.168.30.174 -g -w 1
[root@CentOS74 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  8000 wlc
  -> 192.168.30.75:0              Route   3      0          0         
  -> 192.168.30.174:0             Route   1      0          0         

    持久连接

    持久连接( lvs persistence )模板:实现无论使用任何调度算法,在一段时间内(默认360s ),能够实现将来自同一个地址的请求始终发往同一个RS。

    使用 ipvsadm 的 -p 选项设置集群的超时时长

[root@CentOS74 ~]# ipvsadm -E -f 8000 -s rr -p 5
[root@CentOS74 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  8000 rr persistent 5
  -> 192.168.30.75:0              Route   3      0          0         
  -> 192.168.30.174:0             Route   1      0          0         

    持久连接实现方式:

每端口持久(PPC):每个端口对应定义为一个集群服务,每集群服务单独调度。
每防火墙标记持久(PFWMC):基于防火墙标记定义集群服务;可实现将多个端口上的应用统一调度,即所谓的port Affinity。

每客户端持久(PCC):基于0端口(表示所有服务)定义集群服务,即将客户端对所有应用的请求都调度至后端主机,必须定义为持久模式。(危险)

ldirectord

     ldirectord:监控和控制LVS守护进程,可管理LVS规则。
    可以在  点击打开链接 下载 ldirectord 的 rpm 包。
    ldirectord 的配置文件模板在  /usr/share/doc/ldirectord/ldirectord.cf 中,将模板复制到 /etc/ha.d/ 中作为配置文件。
[root@CentOS74 ~]# cp /usr/share/doc/ldirectord/ldirectord.cf /etc/ha.d/
    修改配置文件
[root@CentOS74 ~]# cat /etc/ha.d/ldirectord.cf 
# Global Directives
checktimeout=3      #超时时长
checkinterval=1     #查询间隔
#fallback=127.0.0.1:80
#fallback6=[::1]:80
autoreload=yes      #,当服务启动时,保存配置文件后自动加载
logfile="/var/log/ldirectord.log"    #日志文件路径
logfile="local0"                     #日志规则
#emailalert="[email protected]"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=no                         #当RS宕机,yes会将该RS的权值修改为0,no为删除RS记录

virtual=10.0.0.74:80                    #VIP地址
	servicename=Web Site
	comment=Test load balanced web site
	real=192.168.30.174:80 gate 1   #RS地址,模式,权值
	real=192.168.30.75:80  gate 3
	fallback=127.0.0.1:80 gate      #宕机备份主机地址
	service=http                    #服务名
	scheduler=wrr                   #调度算法
	#persistent=600
	#netmask=255.255.255.255
	protocol=tcp                    #传输协议
	checktype=negotiate            
	checkport=80                    #查询端口
	request="index.html"            #查询文件
	receive="RS"                    #判断关键字
    在启动 ldirectord 服务后,ldirectord 会 自动在 ipvs 规则中创建新的 ipvs 规则,无需再次使用 ipvsadm 命令创建 lvs 集群规则。



猜你喜欢

转载自blog.csdn.net/M30_Miriam/article/details/80928443