问题描述
我需要知道如何在集群环境中设置cron作业。
我有4 + 1集群环境,第一个服务器运行crontab脚本,如果它下来cron应该移动到另一个。
I need to know how we can setup cron jobs in cluster environment.I have 4+1 cluster environment , first server is running crontab scripts and in case it gets down cron should be shifted to another. How is it possible?
推荐答案
一个常见的资源是。这个项目有一段时间没有更新,但仍然编译良好。它通过使用状态文件来确定它是否是活动服务器。然而,Rcron不更新状态文件本身;它依赖于像这样的服务来为您更新状态文件。它的工作原理是你在你的常规cron中用rcron预处理每个cron命令,即:
One common resource is rcron. This project hasn't been updated in a while, but still compiles fine. It works by using a state file to determine if it is the active server. Rcron doesn't update the state file itself, however; it relies on a service like Heartbeat to update the state file for you. It works by having you prepend each cron command in your regular cron with rcron, i.e.:
0 * * * * /bin/bash /usr/local/scripts/myscript.sh 2>/dev/null
p>
Would become
0 * * * * /usr/local/rcron /bin/bash /usr/local/scripts/myscript.sh 2>/dev/null
如您所见,您也可以自己的脚本执行这种功能:
As you can see, you could also just implement your own script that performs this kind of function:
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,但其可靠性将突然变得依赖于此。
If you want to avoid having to updated this cron on multiple servers, you could use NFS or DRBD or something to have a shared crontab, although its reliability will suddenly become dependent on that.
这篇关于Cron作业群集环境的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!