salt-stack - 如何实现等待其他小兵完成某些工作然后执行某些状态的状态?
问题描述
如何实现等待其他小兵完成某些工作然后执行某些状态的状态?
例如,我有一个名为 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 的状态,上述操作将失败。换句话说,如果开发人员幸运的话,它可能会成功运行一次,但我寻找的解决方案每次都会成功运行。
谢谢你。
解决方案
如果您想在不使用编排 SLS 的情况下解决此问题,可以查看以下方法之一:
- 使用Salt Mine将信息从 Minion 发布到 Master,然后可以由另一个人检索
- 使用Peer Communication允许一个 Minion 生成要在另一个 Minion 上执行的作业
推荐阅读
- javascript - 无法通过 javascript 在haml文件中添加全选按钮
- python - 用NLTK/Python生成一串N个随机英文单词
- timer - ASIO 计时器 `cancel()` 可以调用虚假的“成功”吗?
- r - + 登录 R 不会消失 - 没有括号等丢失?R 工作室 v
- java - 使用光标从 SQLITE 数据库读取数据时应用程序崩溃
- reactjs - 在 react.js 中,是在表单提交时调用外部 API 还是在后续组件的 componentDidMount() 中调用更好?
- java - 将面板放入面板 java GUI
- exception - 在 Raspberry Pi 上使用 w1thermsensor 处理错误
- terraform - Terraform:在 aws_autoscaling_schedule 资源中传递自动缩放组名称时出错
- bash - 计算哈希对象中的错误,内容为“1”字符?