首页 > 解决方案 > 如何实现等待其他小兵完成某些工作然后执行某些状态的状态?

问题描述

如何实现等待其他小兵完成某些工作然后执行某些状态的状态?

例如,我有一个名为 minion-aha1 到 minion-aha3 的 minions 集群,我在这 3 个 minions 上安装了 hadoop 和 hbase。现在,我想将它们转换为 HA 模式。假设 minion-aha1 是领导者。所以逻辑流程是:

Start hadoop and hbase on all 3 minions
-> minion-aha1 wait till rest of minions are hadoop and hbase are on and healthy
-> minion-aha1 call join (e.g. stop namenode, hdfs namenode -initializeSharedEdits, start namenode)
-> rest minions call nn2 (e.g. hdfs namenode -bootstrapStandby, start namenode)

我已经知道如何将 hbase 转换为 HA 模式,并且我可以将 leader 设置为 grain,只是想知道如何将上述过程缩小为单行,即

salt 'minion-aha*' state.apply hadoop.hbase_to_ha 

甚至 salt.orch 状态也是可以接受的。由于 minion-aha1 永远不知道其余 minions 的状态,上述操作将失败。换句话说,如果开发人员幸运的话,它可能会成功运行一次,但我寻找的解决方案每次都会成功运行。

谢谢你。

标签: salt-stack

解决方案


如果您想在不使用编排 SLS 的情况下解决此问题,可以查看以下方法之一:

  • 使用Salt Mine将信息从 Minion 发布到 Master,然后可以由另一个人检索
  • 使用Peer Communication允许一个 Minion 生成要在另一个 Minion 上执行的作业

推荐阅读