Архитектура master–minion
Тема дорожной карты · SaltStack
Архитектура master–minion — базовая топология Salt, где центральный демон salt-master управляет агентами salt-minion, установленными на каждой машине парка. Ключевая особенность — миньоны сами подключаются к мастеру и поддерживают соединение постоянно. Мастеру не требуется SSH-доступ или открытые порты на хостах, так как миньоны инициируют соединение. Это обеспечивает скорость (команда отправляется по уже установленному каналу), проходимость через NAT и firewall'ы (миньоны используют только два порта мастера) и возможность мгновенного сообщения миньонов о событиях.
Как это работает
Мастер слушает два порта. 4505 — publish-канал, по которому мастер публикует задания, и все подключённые миньоны их получают. Каждый миньон сверяет свой id и grains с таргетом и выполняет работу локально. 4506 — request/return-канал, по которому миньоны возвращают результаты и запрашивают у мастера файлы и pillar-данные. Транспорт по умолчанию — ZeroMQ, но есть альтернативы (TCP, websocket).
Безопасность двухслойная: при первом подключении миньон отправляет мастеру свой публичный RSA-ключ, и администратор принимает его командой salt-key -a <id> (или -A для всех ожидающих). После установления доверия рабочий трафик шифруется AES-ключом, который мастер раздаёт по защищённому RSA-каналу. Миньоны выполняют работу, а мастер только публикует задания и собирает результаты, что распределяет нагрузку по парку.
Когда применять
Классический master–minion — режим по умолчанию для парка от десятков машин: полный контроль, максимальная скорость, работает событийная модель. Для больших парков архитектура расширяется: multi-master обеспечивает отказоустойчивость (миньоны знают несколько мастеров), syndic строит иерархию «мастер мастеров» для георазнесённых площадок. Для машин, где установка миньона невозможна или нежелательна, есть salt-ssh, который выполняет команды по SSH без миньона (список хостов — в roster-файле), и proxy minions, управляющие сетевым оборудованием и другими устройствами через их API. salt-call --local на миньоне позволяет применять состояния без мастера (masterless) — удобно для отладки и иммутабельных образов.
Типичные ошибки
Самая опасная практика — автоматический salt-key -A: принятие ключа чужого миньона может привести к компрометации данных. В продакшн-среде проверяйте отпечатки ключей (salt-key -f). Вторая ошибка — считать мастер безобидным сервисом: компрометация мастера равна компрометации всех миньонов, поэтому доступ к нему ограничивают строго. Третья ошибка — забыть открыть исходящие порты 4505/4506 от миньонов к мастеру, что приводит к проблемам с соединением. Учитывайте единую точку отказа: пока мастер лежит, push-команды не работают — для критичных сред закладывайте multi-master заранее.
Связанные понятия
Полезные ресурсы
🔤 Английские термины в этой теме
Слова из этой темы, которые русскоязычные часто произносят неверно. Кнопка 🔊 произносит голосом браузера.
- walkthrough /ˈwɔːkθruː/ l немая, с «θ» разбор: Пишем README и документацию на английском
- minutes /ˈmɪnɪts/ протокол встречи, произносится как «минуты» разбор: Митинги и инциденты
- event /ɪˈvɛnt/ ударение на второй слог разбор: Немые буквы и ударение: cache, queue, suite, height
- architecture /ˈɑːrkɪtɛktʃər/ ударение на первый слог, «Аркитекчер» разбор: Письменная коммуникация
- practice /ˈpræktɪs/ существительное и глагол произносятся одинаково в американском варианте; в британском глагол пишется *practise* разбор: Учить через работу, а не по учебнику