我记得我们一直在使用 cron 来处理我们所有的作业调度需求。从存储克隆/快照到数据库报告,再到每日系统报告和监控检查,所有事情都是通过 cron 在几百台服务器上安排的。
缺点是相当明显的:难以管理作业,没有简单的方法来创建依赖关系(特别是跨不同的服务器),当然,不可避免地有人“暂时”跳过作业但后来忘记删除评论。
我们尝试了商业产品,但最终我们还是认为它作为 cron 的一个升级版本来说太贵了。
我看到其他选项,例如 SLURM、Oracle Grid Engine、Torque/Maui、Quartz、DIET、Condor,它们似乎更适合更大、更同质的集群环境,其中的作业可以在任意数量的类似节点上运行:网格计算等。我们的环境相当混杂(各种 Linux、AIX 和 FreeBSD),我们需要在不同类型的系统之间创建依赖关系(例如,Linux 机器上的作业可能需要确定 AIX 机器上的作业是否应该运行。)
有没有人有从 cron 迁移到更集中管理的产品的经验?有没有关于选择软件的提示,或者开源还是商业软件更好?
答案1
Condor、OGE 和 Torque 都可以帮你实现这个目标,但只有 Condor 有内置的依赖管理功能,DAGMan 工具. DAGMan 可让您设置有向无环图描述您的工作流程,管理器负责处理工作流程中的作业并评估流程中每一步的通过/失败结果。Condor 相对与平台无关,这意味着 DAGMan 也是如此,当父级在 Linux 或 Windows 上运行时,您当然可以在 AIX 上运行一个子步骤。DAGMan 不关心作业在哪里运行,只关心退出代码是通过还是失败。
对于选择软件有什么建议吗,或者开源软件还是商业软件更好?
除了一些警告之外,我认为这个领域的免费社区值得关注。
OGE 现在处于一个奇怪的境地。它不再免费运行 Oracle 生产的 GE 变体,Oracle 也不再向 GE SCC 贡献代码,但存在几个代码分支,试图以免费开源项目的身份继续前进。Univa 尤其引领潮流,聘请前 Sun GE 开发人员继续开发开源、免费提供的 GE 变体。Grid Engine 有两个优点:易于设置,可以处理短时间运行(<2 分钟)的作业,而不会给作业带来大量调度开销,从而降低吞吐量。它最大的缺点是对 Windows 的支持不是很好。我们中的一些人在多年前就花了一些精力将它移植到 Cygwin 上运行,但肯定不如原生的好。
现在,Condor 是我最喜欢的您提到的三种技术之一。Condor 周围有一个强大的社区,而且该软件非常成熟(已有 20 多年历史)。原生 Windows 和 POSIX OS 支持意味着它可以在任何地方很好地运行。前面提到的 DAGMan 只是 Condor 附带的众多优秀组件之一。设置起来可能有点复杂,但一旦启动并运行,它就坚如磐石。它具有一种非常灵活的语言,可以进行作业 <-> 机器匹配并为您的资源构建使用规则。它还支持机器上的动态配置,让作业选择它们需要多少机器资源,然后重新宣传差异仍然可用。它支持全局资源计数器,因此您可以限制软件许可证之类的东西。当然,它有 DAGMan,这是一个非常强大的工作流管理工具。Condor 的缺点是短期运行作业的调度开销可能很繁重。理想情况下,您希望作业运行时间超过 2 分钟,否则调度将开始成为作业在系统中时间的很大一部分。
Torque 有点小众。恐怕我对它了解得不多。它与 Grid Engine 的比较多于与 Condor 的比较。@warren 提到了付费附加组件,它们可以扩展基本的免费 Torque 的功能。
如果你想尝试这三种技术,并了解它们如何应对你的特定工作负载,循环云可以启动预先配置了 Condor、GridEngine 或 Torque 的安全虚拟化池——因此您无需花时间弄清楚这些东西。启动每种技术的小型池并用代表性工作负载进行尝试需要花费几美元。(免责声明:我在 Cycle Computing 工作,我们制作 CycleCloud)
答案2
柯罗诺斯看起来很有希望。
Chronos 是 Airbnb 的 cron 替代品。它是一个分布式容错调度程序,运行在 Apache Mesos 之上。您可以使用它来编排作业。它支持自定义 Mesos 执行器以及默认命令执行器。因此,默认情况下,Chronos 会执行 sh(在大多数系统上为 bash)脚本。Chronos 可用于与 Hadoop(包括 EMR)等系统进行交互,即使执行的 Mesos 从属服务器未安装 Hadoop。包含的包装器脚本允许在后台传输文件并在远程计算机上执行它们,并使用异步回调通知 Chronos 作业完成或失败。
我还发现使用 Jenkins 作为 cron 替代品取得了巨大的个人成功。它可以很好地处理远程服务器上的执行任务。以下是它的介绍:http://www.22ideastreet.com/blog/2014/05/02/replace-local-cron-with-jenkins/
答案3
在过去的 4.5 年里,我一直使用 HP(原名 Opsware)服务器自动化平台,以及其余的业务技术优化套件(网络自动化、操作流程编排等)。
对于足够大的环境,通过 SA 进行作业管理是一种非常可行(且理想)的工具。与 OO 结合,可以通过变更控制管理、票务等方式控制作业。
不太好玩的部分是:它很贵(非常贵)。你可以看看我之前问过的一个类似问题中的一些建议:FLOSS 服务器管理和审计工具。
我还想说 Torque/Maui/Moab(来自自适应计算) 是非常很酷:不确定定价,但它们也是高度灵活的工具。
免责声明 - 我为 HP BTO 和 Adaptive 的合作伙伴工作
答案4
我使用过 CA 的 Espresso (Cybermation)。不知道他们现在叫什么。我也使用过 UC4。它们都很好用,价格昂贵(据我所知),而且维护起来可能很麻烦,但它们确实名副其实。/编辑 - 没注意到你说商业应用程序太贵了。我完全同意,但对于一些公司来说,这是值得的,尤其是当它是赚钱的商业应用程序时。