标签:客户端 serve 机制 linu 故障 vip important font 三次
基于防火墙标记定义集群服务功能:将同属于同一组应用的多个不同端口的服务定义成一个集群服务,统一调度;例如http和https结合netfilter来实现一种集群服务定义机制;
lvs-dr模型是不支持端口映射,很多时候我们存在着http和https同时启用,访问某一网站可能刚开始访问采用的是http协议,当进行一些风险操作比如登录,付款等,这时候就需要跳转到https协议的443端口进行访问,但是我们进行跳转时面临一个问题,我们之前访问80端口时lvs会给我们指定一台RS主机,我们的一些操作得信息保存在这台主机上,跳转时lvs会给我们重新指定一台RS主机,这是我们会丢失之前的操作信息,这显然时很不合理得,我们需要把80和443 端口当作同一集群服务,这个时候我们就需要防火墙标记了,用iptables 给80和443端口打上同一标记,然后根据标记进行集群
在mangle表的PREROUTING链定义规则,实现指定防火墙标记;
iptables -t mangle -A PREROUTING -d VIP -p {tcp|udp} --dport PORT -j MARK --set-mark $num
这里vip时要访问得IP地址,port是要访问的端口,$num是我们标记得一个数值,如
iptables -t mangle -A PREROUTING -d 192.168.2.29 -p tcp --dport 80 -j MARM --set-mark 20
iptables -t mangle -A PREROUTING -d 192.168.2.29 -p tcp --dport 443 -j MARM --set-mark 20
这时我们已经将80和443端口打上同一标记
基于此前的标记定义集群服务;
ipvsadm -A -f # [-s METHOD]
ipvsadm -a -f # -r RS [options]
ipvsadm -A -f 20 -s wrr
ipvsadm -a -f 20 -r 192.168.2.30 -g -w 2
ipvsadm -a -f 20 -r 192.168.2.106 -g -w 5
我们在这利用防火墙标记定义了一个集群服务,凡是标记为20的都加权轮询转发个两台RS主机
lvs持久连接功能
无论使用什么调度方法,持久连接功能都能保证在指定的一段时间内,来自同一个客户端的请求始终被定向至同一个RS。当使用LVS持久连接时,调度器使用连接跟踪(持久连接模板)来记录每一个客户端和给其分配的real server的映射关系
lvs的持久连接就是通过ipvsadm的一个选项来实现,其主要目的就是可以通过持久化的机制,来保证用户的每次访问都跳转到同一个服务器上面,而忽略调度算法的影响。这样就可以让用户后续的操作都负载均衡到同一台服务器上,这样就可以避免服务器之间共享session造成的影响。
-p, --persistent [timeout]:使用持久连接,默认时长为300秒
持久连接类型:
①PCC(persistent client connections):持久客户端连接,又称零端口连接
在基于tcp或udp定义集群服务时,将来自于同一个客户端对所有端口的请求,始终定向至此前选定的RS;以0作为端口号(表示所有端口)
例:ipvsadm -A -t 192.168.2.29:0 -s rr -p
②PPC(persistent port connections):持久端口连接,将对同一端口的请求,始终定向至此前选定的RS;单服务调度;各集群服务分开调度
例:ipvsadm -A -t 192.168.2.30 -s rr -p
③PFMC(persistent firewall mark connections):持久防火墙标记连接
iptables -t mangle -A PREROUTING -d 192.168.2.29 -p tcp --dports 80,443 -j MARK --set-mark 2
ipvsadm -A -f 2 -s wlc -p 600
-M, --netmask [NETMASK] 选项:
配合persistence_timeout使用,表示持久连接的粒度,默认是255.255.255.255,即单独的客户端IP。如果改成255.255.255.0,则表示只要是一个网段的client都会被分配到同一台后端服务器上
Session持久机制
①session绑定:始终将来自同一个源IP的请求定向至同一个RS;没有容错能力;有损均衡效果;
②session复制:在RS之间同步session,每个RS拥有集群中的所有的session;对大规模集群不适用;
③session服务器:利用单独部署的服务器来统一管理集群中的session;
real server的健康状态检测
lvs自身不具备后端RS健康状态检测功能,需要借助keepalived,keepalived不仅能为lvs提供高可用,还可以给lvs生成规则。
1、如何检测RS的健康状态:
应用层:利用集群服务依赖的协议进行检测
传输层:利用端口扫描或探测类工具对指定协议的端口进行探测
网络层:如ping
2、处理措施:
①自动上下线各RS;
online --> fail,探测三次及以上;
offline --> ok,一次即可;
②所有RS均故障时,应该提供一个back server;
ipvsadm -a -t 192.168.30.13:80 -r 127.0.0.1 -m -w 0
标签:客户端 serve 机制 linu 故障 vip important font 三次
原文地址:http://blog.51cto.com/12052401/2137400