我有两台网络服务器。服务器'A'和服务器'B'。两者都是另一个的完全重复,并且连接到负载平衡器以供服务客户端。
我有一个每天每小时执行的任务(cronjob)。此任务当前仅在服务器“A”上运行。问题是这个任务非常重要,如果服务器'A'由于某种原因崩溃,任务将不再运行。
我希望服务器'B'执行任务,但前提是服务器'A'没有。 这两个任务都是与MySQL数据库交互的PHP脚本。
我正在考虑在表中使用某些行(使用MySQL锁?)作为服务器'B'的标志,如果服务器'A'没有这样做,则开始他的任务,反之亦然。
请注意,两台服务器上的任务文件必须完全相同。
谢谢。
答案 0 :(得分:2)
您提出的解决方案是我经常用于简单任务的解决方案,通常用于:
UPDATE jobs SET process = '$token' WHERE process IS NULL
的表格中声明一份工作(+其他一些条款目前还没有达到目的)。SELECT * FROM jobs WHERE process = '$token'
要注意的是,只要MySQL实例启动,这只适用于作业:没有它就不能进行处理。然后,可以在两台服务器上执行检查MySQL服务器是否处于活动状态的cronjob,我不介意为这样一场重大灾难获得2条警报:)