Mcollective/Choria 顺序运行

Mcollective/Choria 顺序运行

我们的设置:1 个应用程序,数十个实例。每个实例都是 Baremetal/KVM 或 vmware VM/LXC 容器之一(取决于所需大小)。

我们通过 puppet (masterless) 更新所有实例,它由 mcollective 执行。效果很好。

问题是硬盘负载过高,当 Puppet 在所有实例上同时执行时,

当我们执行时mco rpc puppetrun run,puppet会立即在集群中的所有机器上执行,从而导致由于解压deb包而导致硬盘过载。

我们希望同时在有限数量的服务器上顺序运行 mcollective。

我们已将 mcollective 执行更新为: mco rpc puppetrun run --batch XXX --batch-sleep YYY 这很有帮助,但并不理想,因为有时我们部署小的更改,这些更改会在一秒钟内处理,有时我们会部署伴随数据库迁移的较大更改,这需要几十秒才能完成。

我们很高兴能得到关于如何处理这个问题的提示。

此外,我们希望跳过所有需要外部库存的解决方案,因为实例数量是动态变化的。Mcollective 在这方面做得很棒。

答案1

目前正在考虑其中一种解决方案(我个人不喜欢):

for i in $(mco ping); do
  mco rpc puppetrun run --with-identity $i
done

这将按顺序逐个运行 mcollective。

但我正在寻找更好的解决方案。

相关内容