Batch-выполнение
Тема дорожной карты · SaltStack
Batch-выполнение позволяет ограничить число одновременно работающих миньонов с помощью флага -b (или --batch-size). Это полезно для предотвращения одновременного перезапуска сервисов или массового обновления пакетов, что может привести к перегрузке репозитория. Например, команда salt '*' -b 10% service.restart nginx перезапустит nginx волнами по десять процентов от общего числа миньонов, что обеспечит непрерывность работы сервиса.
Как это работает
Размер батча можно задать числом (-b 10 — по десять миньонов) или процентом (-b 10% — десятая часть от отвечающих). Механика скользящего окна поддерживает постоянное число активных миньонов: мастер публикует задание первой группе, и как только какой-то миньон вернул результат, его место занимает следующий из очереди. Перед стартом Salt проверяет доступность миньонов, чтобы процент считался от реально живых машин. Опция --batch-wait задаёт паузу между запусками, а параметр failhard останавливает раздачу задания при первой ошибке. Batch доступен не только из CLI: в orchestration-SLS у функции salt.state есть параметр batch, что позволяет декларативно описать rolling-стратегию в коде сценария.
Когда применять
Batch-выполнение полезно для rolling-операций над сервисами за балансировщиком, таких как рестарты, деплой и применение состояний, где одновременная недоступность всех узлов недопустима. Например, -b 25% даёт четыре волны, что является компромиссом между скоростью и запасом прочности. Batch также полезен для защиты разделяемых ресурсов, таких как репозитории и файловые серверы, и для осторожных изменений, когда можно сначала прогнать рискованную команду на небольшой группе миньонов. Если операция безопасна и лёгкая, например test.ping или чтение фактов, батчить незачем, так как параллельность является преимуществом Salt.
Типичные ошибки
Одна из типичных ошибок — перезапуск сервиса на всём парке без батча, что приводит к временной недоступности сервиса. Слишком мелкий батч на большом парке может растянуть операцию на часы, что может привести к истечению таймаута CLI. Также важно помнить, что -b 50% при половине упавших миньонов означает совсем не ту волну, на которую вы рассчитывали. Перед раскаткой следует проверять парк через salt-run manage.status. Batch не отменяет requisites: порядок операций внутри одной машины задаётся состояниями, а batch управляет только числом работающих миньонов одновременно.
Связанные понятия
Полезные ресурсы
🔤 Английские термины в этой теме
Слова из этой темы, которые русскоязычные часто произносят неверно. Кнопка 🔊 произносит голосом браузера.
- percent /pərˈsɛnt/ ударение на второй слог разбор: Версии и числа: two point oh, semver
- thousand /ˈθaʊzənd/ с «θ», не «таузенд» разбор: Версии и числа: two point oh, semver
- scenario /sɪˈnɑːrioʊ/ «синАриоу» разбор: Тестирование: flaky, coverage, mock, fixture, regression
- parameter /pəˈræmɪtər/ ударение на «рэ», не «парамЕтер» разбор: Как читать код вслух
- remote /rɪˈmoʊt/ ударение на второй слог разбор: Что носители скажут иначе: айтишник, сеньор, проект
- release /rɪˈliːs/ ударение на второй слог, «релис», а не «релиз» с русским «з» разбор: Версии и числа: two point oh, semver
- result /rɪˈzʌlt/ ударение на второй слог разбор: Behavioral questions и метод STAR