案例三:
上个案例中,两台director中时刻保持有一台处于活动状态,其中维护一个ipvsadm转发表,表中的条目一直不会发生变化,若下游的某台realserver忽然失效,但是director上的ipvsadm转发表将依旧把请求发送至失效的服务器来处理数据,将会出现网页访问失败的情况。所以,应该有一种机制,用来探测下游的服务器是否处于活动状态,若某台服务器失效,则自动修改ipvsadm转发表,将该发送给失效服务器的请求发送至活动的服务器来处理。动态转发规则表。
拓扑图:
1.将realserver1 的httpd访问停掉,访问并刷新192.168.10.101将会出现网页访问不到的情况(只能访问web test2)
2.发送至realserver1的转发条目依旧存在
[root@node1 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.10.101:http rr
-> 192.168.10.203:http Route 1 0 3
-> 192.168.10.204:http Route 1 0 4
3.要想实现一种动态的ipvsadm转发规则表,需要安装heartbeat-ldirectord ,它能够将heartbeat与LVS紧密结合,而且能够探测后方的服务器状态,当服务器失效时,自动删除该条转发条目,即对后方的web群集进行探测
[root@node1 ~]# rpm -ivh heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
4.拷贝heartbeat-ldirectord的配置文件/usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf 到/etc/ha.d下,编辑该文件
[root@node1 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/
checkinterval=1 每一秒检查一次后方服务器
checktimeout=3 三秒检测不到服务器就删除到该服务器的转发条目
autoreload=yes 修改该文件后,不用重启服务就进行加载该文件内容
fallback=127.0.0.1:80 如果后方的服务器全都无法探测到的话,就将本机作为服务器提供服务,不过本机的服务要处于停止状态,有heartbeat进行控制
logfile="local0" 将ldirectord的日志和/var/log/messages混合
quiescent=yes 静默模式 当无法探测到后方的服务器时就调整到该服务器的条目的权重为0,而不删除该条目,则该服务器将不能访问