一个或两个成功的仆从在盐湖兽人状态下如何返回?



我试图编写一些将HBase转换为高可用模式的编排状态。要做到这一点,有两个检查要求:

  1. Datanode进程必须在ALL节点上启动并运行。
  2. HRegion进程必须在ALL节点上启动并运行。
  3. 转换后,namenode进程必须仅在two节点上启动和运行。

所以我免费得到了ALL,例如

{# If all minions passed, then this will pass #}
2_1_example_pod_is_dn_running:
salt.function:
- name: cmd.run
- tgt: 'G@stype:hbase and G@pod_name:example_pod'
- tgt_type: compound
- arg:
- ps aux | grep datanode
- failhard: True

但是如何检查any或两个?

{# Pseduo code. This won't work. #}
2_3_example_pod_is_nn_running:
- name: cmd.run
- tgt: 'G@stype:hbase and G@pod_name:example_pod'
- tgt_type: compound
- arg:
- ps aux | grep namenode
- successful_count: 2   {# <== namenode process has to be running on two minions #}
- failhard: True

所以,你想要的是知道哪个随从应该"失败"检查。如果你知道,你可以使用fail_minions来标记没有namenode的minions。

对于这样的事情,它几乎总是要么是具体的。在设置它时,您知道哪些随从将具有namenode。或者,为了跳过检查,使用子集只在2台服务器上启动namenode。子集将随机选择目标随从子集的服务器数量,并仅在该子集上运行命令。

相关内容

  • 没有找到相关文章

最新更新