[Перевод] Operon: ускоряет производительность Ansible

lo4si33bevrsrpbjkpg23lvxbye.jpeg

Я очень рад наконец представить Operon, высокопроизводительную замену Ansible Engine. Operon разработан для крупных установок и распространяется по подписке. Он запускает существующие плейбуки, модули, плагины и сторонние инструменты без модификации, использующей усовершенствованный движок, существенно увеличивает реальное число адресуемых в один прогон узлов, экономя часы при каждом вызове.

Operon устанавливается как отдельно, так и совместно с Ansible Engine: можно постепенно переводить на него свои проекты или использовать поразово.

Ниже приведен график прогона на 416 задач common.yml из DebOps 0.7.2, развернутого через SSH:

-hdjvfmecu117sb_puadvdg5w80.png

Operon сокращает время прогона на одном узле примерно на 60%. Но если взять крупный прогон, то станет горячо. Взгляните, как растет время работы (железо: 24 GB, 8-ядерный Xeon E5530; разворачивается в виртуальные машины Google Cloud по SSH 18 мс):

cz4ceg0tbpk1dzgekkbsaqxhtxs.png

За каждый прогон было исполнено по 416 задач на каждом узле, включая loop items. В прогоне на 1024 узла за 54 минуты было исполнено 490496 задач; средняя пропускная способность — 151 задача/секунду. Горизонтальное масштабирование налицо: почти 4-кратное, с 256 до 1024 узлов.

Прогон с Ansible на 256 узлов пришлось отменить: в течение длительного периода времени он не давал результатов, много раз приходилось перезапускать, сокращая количество процессов с 40 до 10, чтобы Ansible не исчерпал ресурсы оперативной памяти. С 13 процессами, может, и получилось бы, но от дальнейших попыток пришлось отказаться: мы и так потратили 2 дня машинного времени.

За финальный прогон, перед отменой Ansible завершил 89% задач за 6 часов и 13 минут:

qkmoybfrc5yp2tccliv-fls2npq.png

Operon при каждом прогоне в параллельном режиме развернулся на все узлы. Выполняя 1024 процессов на 8 ядрах, он дает едва заметный прирост нагрузки, а на 24 ядрах количество процессов вырастает аж до 6144. Если бы мы запустили то же количество задач, на том количестве узлов, только при 16 ядрах, прогон, думаем, получилось бы завершить не за 54 минуты, а за 27.

Потребление памяти очень предсказуемо и в значительной мере отвязано от процессов. С 256 процессами Operon потребляет вчетверо меньше, чем Ansible потребляет с 10; при этом процессорного времени контроллер потребляет минимум в 15 раз меньше.

wg6duc-smz_sklkgi23fewmde3i.png

Вот здесь кривая идет на спад: прогон Ansible на 64 узлах выполнен с 40 процессами, тогда как прогон на 256 узлах — с 10. Ansible для прогона на 256 узлах потребовалось 1,6 Gb/процесс; так, независимо от наличных ресурсов оперативной памяти, создалось жесткое ограничение по достижимому параллелизму.

Operon — это новый шаг в подходе к разработке, который дебютировал с Mitogen для Ansible. Он наследует объемные улучшения низкоуровневой производительности, необходимой уже тысячам пользователей:

ky1pw1vyu3_qczrhqnjpvg7iwti.png

ny9jsejzdbncitz0n92oywffsys.png


Не только ПО

Производительность — побочный эффект культурного сдвига в сторону большей ориентировки на пользователя, совместимости и интернализации издержек. Нам есть что показать, но чтобы вы в полном мере ощутили вкус новинки, я с удовольствием объявляю: будет гарантия синтаксиса плейбука с прямой совместимостью — в дополнение к восстановлению некоторых устаревших конструктов Ansible Engine.

include:

- include: "i-will-always-work.yml"

«with» loops

- debug: msg={{item}}
  with_items: ["i", "will", "always", "work"]

«squash actions»

- apt:
    name: "{{item}}"
  with_items: ["i", "will",
               "always", "work"]

дефисы в именах групп

$ cat hosts
  [i-will-always-work.us.mycorp.com]
  host1

хэш-слияние

# I will always work
  [defaults]
  hash_behaviour = merge

Поставки Operon с синтаксисом, совместимым с Ansible 2.9, получат постоянную поддержку, а отключения синтаксиса в Ansible Engine в будущем Operon не коснутся. Подобные изменения вредят рабочим установкам, никак не улучшая возможностей, и они же — главный источник работ по исправлению ошибок во время обновлений.

Со временем эта гарантия распространится на семантику движка и далее.


Как приобщиться?

Первоначально Operon будет распространяться с поддержкой от Network Genomics, а это — опыт и приверженность сервису, которых вы больше нигде не получите. Если ваша команда застряла в ловушке развертываний или устала годами чинить обновления, подумайте над тем, чтобы запросить оценку, и не откладывая, напишите мне по электронке — по любым вопросам и непонятным моментам.

Лучшее ПО — в открытом доступе, поэтому общедоступный релиз состоится, когда мы будем в состоянии обеспечить определенный уровень бесплатной поддержки. Подпишитесь на нашу рассылку, чтобы вовремя узнавать о будущих релизах.

Улучшит ли Operon производительность Windows?
Да. Если у вас проблемы с производительностью во время развертываний на Windows, пока просто следите за новостями.

Улучшит ли Operon производительность сетевого устройства?
Да. Operon представляет архитектурный редизайн, который распространяется далеко за пределы транспортного уровня и в равной мере применим для всех типов соединений.

Operon — это ответвление Ansible?
Нет. Operon — это инкрементная перезапись движка, небольшой компонент около 60к строчек кода, из которых заменили примерно четверть. Каждая установка Ansible включает порядка 715к строчек, из которых подавляющее большинство, как и Operon, независимо поддерживается крупным сообществом Ansible.

Улучшит ли Operon Ansible Engine?
Да. Operon уже продвигает улучшение внутри Ansible Engine, а поскольку он — доработка, есть стимул сделать сделать вклад, подправить код там, где надо.

Operon — это бесплатное ПО?
Да. Operon выпускается под той же GPL лицензией, что и Ansible, и можно свободно использовать код в рамках этой лицензии.

Ломает ли Operon совместимость?
Нет. Operon не нарушает совместимости со стандартным набором модулей, интерфейсами плагинов или окружающей экосистемой Ansible, и нарушать не планирует. Совместимость — прежде всего: нельзя отставать от будущих улучшений, как и забывать об обратной совместимости вроде улучшенной стабильности синтаксиса плейбука.

Нужен ли мне Operon, если у меня планы всего на один узел?
Operon обеспечит непрерывную конкурентоспособность навыков, в которые вы так много вложили. Он предлагает повышенную гибкость, которой прежде просто не существовало: свободу выбирать движок. С Operon вы выигрываете, даже если не используете его напрямую.

© Habrahabr.ru