制作具有多个cronjobs运行的故障转移对避免运行两次进程的好方法是什么?
在故障转移中,或通过在它们之间划分作业,当然也可以在其中一个节点发生故障时接管所有作业.
我可以为此编写一个脚本,但有人必须已经修复了这个,或者这是一个不常见的请求?
解决方法
如果您有某种集群解决方案来提供高可用性,那么执行此操作非常简单.
我们在集群中的两个(或所有)节点上设置所有cron作业.每个作业首先执行一个小脚本,如果这是集群中的主节点(通过检查集群浮动IP地址),则可以解决该问题.如果这不是主节点,则check_for_master脚本将退出并显示错误,导致整个cron作业失败.如果此节点是主节点,则check_for_master脚本将正常运行该作业.
check_for_master脚本的内容实际上取决于您使用的是哪个群集软件以及您正在运行的操作系统.
例如,这是一个示例crontab条目:
00 04 * * * /usr/local/bin/check_for_master /usr/local/bin/program-you-want-to-run >/tmp/logfile.out 2>&1