Турбокомпрессор Ansible playbooks - PullRequest
1 голос
/ 13 марта 2019

Я использую Ansible для запуска кукольных и других сценариев на большом количестве виртуальных машин (5000). Я пытался использовать эти параметры:

  • Стратегия: бесплатно
  • асинхронный: 1000 опрос: 0
  • серийный номер: 20 или 50 или 100
  • вил: 20

Я перепробовал много комбинаций, но на некоторых виртуальных машинах происходит сбой плейбуков, единственно верным вариантом является использование вилок: 10 и серийных: 2 Есть идеи почему? Мне нужно сократить время исполнения. Спасибо

1 Ответ

1 голос
/ 14 марта 2019

Митоген может помочь: https://mitogen.readthedocs.io/en/latest/ansible.html

Ожидается ускорение в 1,25–7 раз и снижение загрузки ЦП как минимум в 2 раза, в зависимости от условий сети, выполненных модулей и времени, уже потраченного целевыми объектами на полезную работу. Mitogen не может улучшить модуль после его выполнения, он может только обеспечить выполнение модуля максимально быстро.

Для каждой цели используется одно соединение, в дополнение к одному вызову sudo для учетной записи пользователя. Это намного лучше, чем мультиплексирование SSH в сочетании с конвейерной передачей, поскольку в оперативной памяти между этапами может поддерживаться значительное состояние, а системные журналы не рассылаются спамом с повторными событиями аутентификации.

Для выполнения шага, один код которого уже существует в ОЗУ на целевом устройстве, используется один сетевой обход. Исключение создания мультиплексированного канала SSH экономит 4 мс времени выполнения на 1 мс задержки сети для каждого шага playbook.

Процессы активно используются повторно, что позволяет избежать затрат на вызов Python и перекомпилировать импорт, экономя 300-800 мс на каждый шаг playbook.

Код эфемерно кешируется в ОЗУ, что на порядок уменьшает использование полосы пропускания по сравнению с конвейерной передачей по SSH, при этом примерно в 5 раз меньше кадров пересекает сеть в обычном режиме.

Происходит меньше записей в целевую файловую систему. В типичных конфигурациях Ansible многократно переписывает и извлекает ZIP-файлы в несколько временных каталогов на цели. Проблемы безопасности, связанные с временными файлами в сценариях с несколькими учетными записями, полностью исключаются.

Эффект наиболее эффективен в книгах воспроизведения, которые выполняют много кратковременных действий, где накладные расходы Ansible преобладают в стоимости операции, например, при выполнении больших циклов with_items для запуска простых команд или записи файлов.

...