首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用主厨进行多节点操作

使用主厨进行多节点操作
EN

DevOps用户
提问于 2017-10-20 09:00:50
回答 3查看 221关注 0票数 7

我有一个应用程序,我想使用Chef来配置,它跨越多个节点。比方说,这个过程包括

  1. 在节点A上执行一项捕获输出的操作
  2. 在节点B上使用该输出执行另一项操作
  3. 现在返回节点A进行一些操作
  4. 现在又回到节点B上
  5. ..。

要做到这一点,一种方法是编写一个菜谱,将其存储在每个节点上,然后在两个节点上反复运行,直到最终它有机会在所有节点上执行所有操作。但是这很笨拙,如果有节点C、D等,就不会扩展。我知道通知可以在单个节点中对依赖项进行排序,但这不能在多个节点上运行。我不可能是唯一需要这样做的人,所以对于这种类型的活动是否有一种机制或设计模式/最佳实践/TTP?

EN

回答 3

DevOps用户

发布于 2017-10-20 09:05:36

简而言之,厨师可能不是这里使用的工具。

厨师是一个收敛的模型,所以你必须以幂等的方式编写你的食谱,比如在一些运行之后,它将根据周围的其他节点处于期望的状态。

关于存储状态的方法听起来是可行的,您必须使用外部调度器来安排主厨-客户端在A和B上的交替运行。

如果您有一个厨师服务器,推送作业可能是坚持在厨师生态系统中的方法,我认为与其他调度器相比,它的主要优势是不需要传入的管理端口,也不需要目标节点上的ssh。

票数 6
EN

DevOps用户

发布于 2017-10-20 16:29:47

这是服务器编配的一个教科书样例,是厨师本质上不打算做的事情。正如Tensibai所指出的,运行Chef的服务器是一个收敛的系统,它根据食谱、属性、数据包等设定的配置设置实现自己想要的状态。如果不了解有关基础设施的具体细节,您可能可以采取以下几种方法:

创建独立幂等运算

正如您在问题中所述,创建一个操作状态,使您的节点可以重复运行,直到所有任务都完成为止,并不能很好地扩展。不过,可以重新设计节点,这样就不重要了。如果节点a和b并行运行任务以输出其日志,而b在a之前完成,则可以运行节点a通常运行的任务,反之亦然。

为委托

使用外部协调器

如果您打算安排许多节点,那么使用委托节点肯定会更好地扩展。但是,这可能会与主厨客户端在委托方管理的节点上运行冲突。很难验证您的节点配置和委托节点任务之间没有冲突。管理这一点的一种聪明方法可能是将任务合并到每个节点的配置中,并让委托方在数据包或服务器的属性中设置一个值,以指示它应该如何配置自己(即它需要执行哪些任务)。

结合您的基础设施

如果每个节点根据其他节点依次运行任务,并且对在不同节点上运行任务没有成本/技术依赖性,则可能需要考虑将节点配置组合到一个节点中。这将消除任何节点之间的任何配置冲突。我认为在不同的节点上运行任务的意图是明确的,但这绝对是一个需要考虑的选项(甚至以为不同节点重写任务的时间为代价)。

票数 3
EN

DevOps用户

发布于 2017-10-26 02:49:59

使用SaltStack来编排您的厨师运行。

您的跨节点编排逻辑如下所示:https://docs.saltstack.com/en/latest/topics/orchestrate/orchestrate_Runner.html#more-复杂-编排

并且您可以声明性地https://docs.saltstack.com/en/latest/ref/states/all/salt.states.chef.html

或者是必要的https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.chef.html

驱动主厨节点到它们想要的状态。

票数 1
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/2374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档