linux – 高可用性Cron Jobs

前端之家收集整理的这篇文章主要介绍了linux – 高可用性Cron Jobs前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
信息

我们目前正在为运行PHPNginx(在Centos 7上)创建高可用性集群.大多数配置已经映射,它应该在群集环境中很好地工作.

不幸的是,我们唯一不能解决的问题是cron jobs(cron作业将执行PHP代码).据我所知,cron作业分别在每个主机上执行.这意味着我们要么:

>没有一个完整的高可用性环境,在单个服务器发生故障时,另一个服务器接管并且一切仍然像以前一样工作(尽管速度较慢).
>我们运行每个cron作业并将结果保存在数据库中以确定它是否已经运行.这不是一个可行的解决方案,因为我们的一些cron作业可能需要数小时才能运行 – 这些需要在下一个工作日之前执行.
>我们找到了某种解决方案,可以执行高可用性的cron作业.

研究

看到解决方案3如何帮助我们维护高可用性环境,这是首选方法.不幸的是,我们对这些解决方案并不十分熟悉,因此我寻求您的专业知识,帮助我们找到适合我们需求的解决方案.我们对Linux机器不是很熟悉(除了Nginx服务器之外整个环境都是Windows)并且对使用这些机器知之甚少(尽管到目前为止我们已经能够解决这个问题).

选项

> Dkron

>此解决方案似乎提供简单的设置,似乎是一个不错的产品

> Chronos

>这使用多个其他实用程序来操作,包括一个实际的数据库(不理想,但可以工作)

> Rundeck

>似乎提供了许多功能,可能是此列表中最好的产品

> Rcron

>除了基于Golang之外,我对此并不太了解.

>自定义脚本:How to make cronjobs high available?

>如果没有别的办法,这是一个“如果一切都失败”的方法……

>其他选择??? – 如果您找到一些,请提供其他选项,我会在此处提供

问题

>您对不同选项的专家意见或建议是什么?
>您使用不同选项(优点/缺点)的经历是什么?
>您认为我们在基础设施中使用哪些选项? (如果需要有关我们基础设施的其他信息,请告知我们)

笔记

对此有任何帮助非常感谢.

我意识到这个问题已被问到before,虽然它看起来已经过时(2011年),并且已经创建了许多新的解决方案.

解决方法

为什么不是你的选项(2),但它在执行时会创建一个标志. cron作业将在所有机器上启动,轻微的本地时序变化意味着其中一个首先创建标志;其他人然后看到旗帜设置和纾困,而第一次运行完成.

您需要注意标志设置/检查的原子性(此处NFS也是一个选项,带有锁定文件),但为了将其保持在最低限度,可能还有一些值

>在每个cron作业开始时进行一次小的随机睡眠,以便稍微展开它们,或者>在服务器之间将任何给定作业的开始时间改变至少1分钟,即服务器1在7:02开始作业,服务器2在7:03开始;通常服务器1将执行整个作业,但如果它已关闭,服务器2将在7:03开始时看不到标志.

猜你在找的Linux相关文章