2014-07-12 44 views
0

我有两台cpanel服务器(A-> B),在dnsmadeeasy中配置了故障转移。我现在设置了一个rsync,以便每隔4小时从A→B同步/ home/account文件夹。Rsync在故障转移时停止

因此,当出现故障,B接管以4小时的数据在服务器A的积压

我的问题是,当一个从失败回到正常,B中的rsync覆盖从A的数据因为rsync是A-> B。

我想知道什么是防止rsync在第一次故障转移后运行的最佳方法,以便我可以手动处理rsync。我正在考虑一个shell脚本,它将尝试访问服务器A中的文本文件,如果导致失败将导致cron停止运行。

这是处理这个问题的好方法,还是有更简单的方法?

回答

0

那么,我在办公室里的一组服务器上做了类似的事情。我发现运行良好的概述仅仅是运行一个cron脚本,可以将每个其他服务器的状态保存在一个临时状态文件中,并通过调用ping来更新状态。

具体来说,该例程的工作原理是维护包含在检查中的主机列表。每个主机(与运行cron作业的计算机名称匹配的名称除外)的状态文件都保存在名为hoststatus.$HOSTNAME的/ tmp目录中。每个状态文件包含updown。 (如果状态文件不存在,则在检查过程中创建并假定)。状态文件本身提供了一种本地方式,用于在运行任何脚本之前检查每个远程主机的状态。

检查状态的cron作业,读取每个远程主机的状态文件并将状态提供给case语句。对于状态为upcase,使用ping -c1 hostname拨打远程主机。如果ping成功,则脚本退出(远程主机已启动)。如果ping失败,则脚本等待20秒(以确保远程不重新启动等),然后再次检查;如果第二次调用成功,则状态为up,脚本退出;如果第二次ping命令失败,如果第三次测试失败,则状态文件被写入down,并且远程主机被视为关闭。

继续在case语句中,如果初始状态为down,则简单如果成功,则状态变为up,如果失败,则保持down

还保留了一个日志文件,它反映了每次状态变化以提供s的运行历史记录erver可用性。

类似的东西会适用于你的情况。如果服务器A出现故障,则服务器B可能会以类似的方式写入简单日志,如在A->BB->A之间运行rsync之前检查的rsynchold.hostA。这将允许您在发生故障后使用第一台rsync进行手动干预 - 此时您可以重置rsynchold.hostA文件。

这并不高雅,但在过去几年已被证明是十分简单的。

+0

谢谢你,案例的想法,我认为是我正在寻找,因为我一直在思考,如果A只是重新启动或由于某种原因ping回来消极,我不希望rsync停止,你的20秒的想法是好的,我会尝试并让你知道。 –