Последовательный запуск Mcollective / Choria

Наша установка: 1 приложение, десятки экземпляров. Каждый экземпляр является одним из контейнеров Baremetal / KVM или vmware VM / LXC (в зависимости от требуемого размера).

Мы обновляем все экземпляры через марионетку (без мастера), которая выполняется mcollective. Это прекрасно работает.

Проблема заключается в высокой загрузке жесткого диска, когда марионетка выполняется на всех экземплярах одновременно,

Когда мы выполняем mco rpc puppetrun run , марионетка немедленно выполняется на всех машинах в кластере, что приводит к перегрузке жесткого диска из-за распаковки пакетов deb.

Мы хотели бы запускать mcollective последовательно на ограниченном количестве серверов одновременно.

Мы обновили выполнение mcollective, чтобы: mco rpc puppetrun run --batch XXX --batch-sleep YYY что помогает, но не идеально, поскольку иногда мы развертываем небольшие изменения, которые обрабатываются в течение секунды, а иногда и большие изменения с миграциями базы данных, выполнение которых занимает десятки секунд.

Мы будем рады подсказке о том, как подойти к этому вопросу.

А также мы хотели бы пропустить все решения, требующие внешней инвентаризации, так как количество экземпляров изменяется динамически. В этом плане Mcollective великолепен.

0
задан 19 October 2020 в 19:16
1 ответ

В настоящее время рассматривается одно из решений (которое лично мне не нравится):

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

Это будет запускать mcollective последовательно один за другим.

Но я ищу лучшее решение.

0
ответ дан 19 October 2020 в 16:15