LVS不可用时 :
Director不可用,整个系统将不可用;SPoF Single Point of Failure解决方案: 高可用,
keepalived、heartbeat/corosyncRS 不可用时 :
某
RS不可用时,Director依然会调度请求至RS。主要解决思路是 由Director对各RS健康状态进行检查, 失败时禁用, 成功时启用常用解决方案:
keepalived、heartbeat/corosync、ldirectord检测方式:
网络检测 ,
icmp传输层检测 , 端口探测
应用层检测 , 请求某关键资源
RS全不用时 :
backup server,sorry server
1. ldirectord软件
单独使用ipvsadm来实现的负载均衡 , 如果调度器和后端某台服务器不通 , 调度器不能及时发现 , 还去后端请求这台服务器 , 会导致请求不到而造成响应失败。ldirectord能够自动检测调度器和后端的网络状况 , 在后端某台服务器失效的情况下 , 自动把ipvsadm中记录这台服务器的权重变为0 ,如果恢复 , 又重新把权重变为设置的值。
ldirectord : 监控和控制LVS守护进程, 可管理LVS规则。
包名 : ldirectord-3.9.6-0rc1.1.1.x86_64.rpm
包下载地址 : http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/x86_64/
[root@Director ~]# rpm -ql ldirectord-3.9.6-0rc1.1.2.x86_64
/etc/ha.d #配置文件目录
/etc/ha.d/resource.d
/etc/ha.d/resource.d/ldirectord
/etc/logrotate.d/ldirectord
/usr/lib/ocf/resource.d/heartbeat/ldirectord
/usr/lib/systemd/system/ldirectord.service #服务配置文件
/usr/sbin/ldirectord #主程序
/usr/share/doc/ldirectord-3.9.6
/usr/share/doc/ldirectord-3.9.6/COPYING
/usr/share/doc/ldirectord-3.9.6/ldirectord.cf #配置模板
/usr/share/man/man8/ldirectord.8.gz
/var/log/ldirectord.log #日志
/var/run/ldirectord/ldirectord.pid #pid文件2. ldirectord配置文件
DR模型http配置[root@Director ~]# cat /etc/ha.d/ldirectord.cf # Global Directives checktimeout=3 #超时时长 checkinterval=1 #检测时间, 默认为10s检测一次。配置中表示每隔1s检查一次 #fallback=127.0.0.1:80 #全局指定sorry server #fallback6=[::1]:80 autoreload=yes #当配置文件改变之后, 会自动重新加载配置文件 logfile="/var/log/ldirectord.log" #指定日志文件位置 #logfile="local0" #指定日志设备类型 #emailalert="admin@x.y.z" #emailalertfreq=3600 #emailalertstatus=all quiescent=no #当RS down或者failback server down时,yes将修改权重为0,此配置有bug ; no为从调度列表中删除RS # Sample for an http virtual service virtual=192.168.194.200:80 #指定VIP的FWM或者IP:PORT real=192.168.194.131 gate 1 #DR模型的RIP,权重设置为1 real=192.168.194.141 gate 1 fallback=127.0.0.1:80 gate #局部设置fallback server service=http #指定需要监控的服务类型 scheduler=wrr #指定调度算法 #persistent=600 #指定ipvs的持久时间 #netmask=255.255.255.255 protocol=tcp #设置检查协议类型:tcp/udp/fwm checktype=negotiate #指定检查类型方式, 默认为negotiate。可以通过off关闭检查方式。如果后接数字 , 表示连接N次之后进行一次协商检测。 checkport=80 request="index.html" #设置http请求的页面 receive="192.168.194" #检查request获取的字段, 如果匹配则保持连接, 如果不匹配则通过quiescent, 修改rs的权重或者从调度列表中删除rs。 获取的页面字段中需要包含192.168.194这些字符 #virtualhost=www.x.y.z 当后端RS服务全部宕之后会直接通过
ipvs调度到fallback指定的服务器上。[root@Director ~]# 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.194.200:80 wrr -> 127.0.0.1:80 Route 1 0 0