Cron作业集群环境

时间:2014-04-18 11:40:08

标签: cron

我需要知道如何在集群环境中设置cron作业。 我有4 + 1集群环境,第一个服务器正在运行crontab脚本,如果它下来,cron应该转移到另一个。怎么可能?

1 个答案:

答案 0 :(得分:0)

一个常见资源是rcron。这个项目暂时没有更新,但仍然编译得很好。它通过使用状态文件来确定它是否是活动服务器。但是,Rcron并没有更新状态文件;它依赖于Heartbeat之类的服务来为您更新状态文件。它的工作原理是在你的常规cron中使用rcron预先添加每个cron命令,即:

0 * * * * /bin/bash /usr/local/scripts/myscript.sh 2>/dev/null

会变成

0 * * * * /usr/local/rcron /bin/bash /usr/local/scripts/myscript.sh 2>/dev/null

正如您所看到的,您也可以 实现自己的执行此类功能的脚本:

0 * * * * /usr/local/scripts/active_or_not.sh && /bin/bash /usr/local/scripts/myscript.sh 2>/dev/null

脚本的内容类似于:

#! /bin/bash
shouldIBeActive() {
    # See if this server is able to run all the crons correctly
    canRun || return 1
    # See if there is already another server set to active
    shouldRun || return 1 # Maybe even still using Hearbeat for a state file
}

if [ shouldIBeActive ]; then
    logger "Set to active server"
    exit 0
else
    logger "Not set to be active."
    exit 1
fi

如果你想避免在多个服务器上更新这个cron,你可以使用NFS或DRBD或其他东西来拥有一个共享的crontab,尽管它的可靠性会突然变得依赖于它。