分类: 系统运维
2010-04-23 12:44:15
正如我们前面看到的,当主Director崩溃时,ldirectord需要在备用Director上重建IPVS表哦,因为你已经将所有的ipvsadm配置规则放入了ldirectord配置文件中,因此它可以完成这个任务,但在故障转移时,活动客户端连接(连接跟踪记录)没有被备用Director上的ldirectord重建,所有到集群节点的客户端连接都将丢失。
这些连接(在连接跟踪表中的项目)在高负载集群上改变迅速,如同客户端连接建立和关闭,因此我们需要一个方法从主Director发送连接跟踪记录到备用Director(在它们有所改动时发送),LVS开发者使用多播数据包来实现这个功能需求(复制连接跟踪表到备用Director),这个技术最初叫做服务器同步状态守护进程,它在内核中的实现叫做stuck(服务器同步状态守护进程不能运行在用户空间),要开启服务器同步状态守护进程,在主Director上运行下面的命令:
/sbin/ipvsadm --start-daemon master
然后在备用Director上运行下面的命令:
/sbin/ipvsadm --start-daemon backup
主/备Director必须要能够在多播地址224.0.0.81上使用多播数据包相互通讯,主服务器同步状态守护进程宣告连接跟踪记录的改变,备用服务器同步状态守护进程监听这些改变宣告,然后将它们插入它的空闲连接跟踪表中,要查看你的集群节点是否支持多播,只需要看ifconfig命令的输出即可,看输出内容中是否有关键字MULTICAST,在使用多播的每个接口上都应该出现这个关键字,如果没有发现这个关键字,你需要重新编译你的内核以提供多播支持(参考第3章)[23]。
注意:要停止同步状态守护进程(在主或备服务器上),你可以使用命令ipvsadm --stop-daemon。
当你在主/备Director上执行了这些命令后(你需要将这些命令添加到init脚本以便系统启动时它们也可以启动 -- 具体请参考第1章),你的主Director可以崩溃,然后ldirectord在备用Director上重建IPVS表的期间,所有到集群节点的活动连接[24]将继续失效。
注意:刚刚描述的方法将故障转移主Director上的活动连接到备用Director,但当主Director恢复正常后这些活动连接不会恢复,要实现故障转移和恢复活动IPVS连接,你需要应用一个内核补丁(在写本文时是这样)。请参考LVS HOWTO