如何实现等待其他 minions 完成某些工作然后执行某个状态的状态?
How to implement a state that wait for other minions finishing certain jobs then execute certain state?
如何实现等待其他minions完成某些工作然后执行某个状态的状态?
比如我有一个叫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 in grain,只是好奇上面的过程怎么缩成单行的,即
salt 'minion-aha*' state.apply hadoop.hbase_to_ha
甚至 salt.orch 状态都可以接受。由于 minion-aha1 永远不知道其余 minions 的状态,因此上述操作会失败。换句话说,如果开发人员幸运的话,它可能 运行 成功一次,但我寻找的解决方案每次都会 运行 成功。
谢谢。
如果您想在不使用 Orchestration SLS 的情况下解决这个问题,您可以查看以下方法之一:
- 使用 Salt Mine 将信息从 Minion 发布到 Master,然后可以由另一个 Minion 检索
- 使用 Peer Communication 允许一个 Minion 生成要在另一个 Minion 上执行的作业
基本上我从这个答案中受益并做了一些修改:
对于发送到 salt master 的自定义事件,例如mycompany/hbase/status/*/start,我要发送事件-> saltutil.sync_all,然后是wait_for_event.
如何实现等待其他minions完成某些工作然后执行某个状态的状态?
比如我有一个叫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 in grain,只是好奇上面的过程怎么缩成单行的,即
salt 'minion-aha*' state.apply hadoop.hbase_to_ha
甚至 salt.orch 状态都可以接受。由于 minion-aha1 永远不知道其余 minions 的状态,因此上述操作会失败。换句话说,如果开发人员幸运的话,它可能 运行 成功一次,但我寻找的解决方案每次都会 运行 成功。
谢谢。
如果您想在不使用 Orchestration SLS 的情况下解决这个问题,您可以查看以下方法之一:
- 使用 Salt Mine 将信息从 Minion 发布到 Master,然后可以由另一个 Minion 检索
- 使用 Peer Communication 允许一个 Minion 生成要在另一个 Minion 上执行的作业
基本上我从这个答案中受益并做了一些修改:
对于发送到 salt master 的自定义事件,例如mycompany/hbase/status/*/start,我要发送事件-> saltutil.sync_all,然后是wait_for_event.