Настройка режима мульти-мастер с автоматическим переключением (failover)
Режим мульти-мастер с автоматическим переключением (failover) используется для бесперебойного обслуживания большого количества устройств в инфраструктуре.
При стандартном подключении агент (minion) получает открытый ключ проверки от сервера управления (master) и, в случае сбоя сети или оборудования, выдает ошибку и завершает работу. В режиме мульти-мастер с автоматическим переключением (failover) при неисправности одного сервера управления (master) агент (minion) переключается на следующий и продолжает работу.
Чтобы настроить режим мульти-мастер с автоматическим переключением (failover), выполните действия:
| Подробную информацию о режиме мульти-мастер с автоматическим переключением (failover) см. в официальной документации. |
Настройка подписи открытого ключа на серверах управления (masters)
-
Создайте файл конфигурации сервера управления (master)
/etc/salt/master.d/master_sign_pubkey.conf. -
В конфигурационном файле сервера управления (master) включите настройку подписи всех открытых ключей, установив значение параметра:
master_sign_pubkey: True -
Перезапустите службу
salt-master. После перезапуска сервер управления (master) автоматически создаст новую пару ключей.Если используются несколько серверов управления (masters), и они должны подписывать свои ответы аутентификации, необходимо скопировать пару ключей master_sign.*на каждый сервер управления (master). В противном случае агент (minion) не сможет проверить открытые ключи сервера управления (master) при подключении к другому серверу управления (master), так как подпись открытых ключей была создана с другой парой ключей.master_sign.pem master_sign.pub
В зависимости от требуемого уровня безопасности и процедур работы с сертификатами для конкретного развертывания права доступа к файлам могут различаться.
Пример:
-r-------- 1 root root 1675 янв 16 13:33 master_sign.pem -rw-r--r-- 1 root root 451 янв 16 13:33 master_sign.pub
Где:
-
-r--------— права доступа к файлу:-
-— указывает, что это обычный файл (не каталог); -
r— (чтение) для владельца (root); -
-— (нет прав) для группы (root); -
-— (нет прав) для остальных пользователей;
-
-
-rw-r—r--— права доступа к файлу:-
-— указывает, что это обычный файл (не каталог); -
rw-— чтение и запись для владельца (root); -
r--— чтение для группы (root); -
r--— чтение для остальных пользователей.
-
-
-
(Опционально) в файле
master_sign_pubkey.confзадайте имя для пары ключей подписи, установив значение параметра:master_sign_key_name: <name_without_suffix>
Сервер управления (master) создаст эту пару ключей при перезапуске и будет использовать ее для создания подписи открытых ключей, прикрепленной к ответу аутентификации.
Вычисления выполняются для каждого запроса аутентификации агента (minion). Если большое количество агентов (minions) часто
аутентифицируются, рекомендуется использовать настройки conf_master:master_pubkey_signature и
conf_master:master_use_pubkey_signature, описанные ниже.
Настройка параметров оптимизации производительности работы сервера управления (master)
В подразделе рассматриваются дополнительные опции, с помощью которых можно упростить настройку параметров для повышения производительности сервера управления (master). Основная цель — уменьшить нагрузку на процессор, связанную с аутентификацией.
При каждом запросе аутентификации сервер управления (master) создает подпись, что требует значительных вычислительных ресурсов. Чтобы снизить эту нагрузку, можно использовать заранее созданную подпись публичного ключа.
Подпись можно создать на другом сервере, что может быть полезно в системах с ограничениями доступа или строгими правилами брандмауэра.
Настройка
-
Создание подписи:
Чтобы создать подпись, выполните команду:
salt-key --gen-signature
Это создаст файл подписи по умолчанию:
etc/salt/pki/master/master_pubkey_signature
Файл будет содержать текстовую строку с подписью в формате Base64.
-
Автоматическое создание пары ключей:
Если пара ключей ещё не существует, вы можете создать её автоматически с помощью одной команды:
salt-key --gen-signature --auto-create
-
Настройка конфигурации.
Чтобы сервер управления использовал созданную подпись, откройте его конфигурационный файл и установите следующее значение:
master_use_pubkey_signature: TrueУбедитесь, что файл
master_pubkey_signatureнаходится в каталоге/etc/salt/pki/master. -
Использование пользовательского имени файла.
Если вы хотите использовать файл с другим именем, укажите его в конфигурации:
master_pub_key_signature: <filename> -
Рекомендации по именованию.
При наличии нескольких серверов управления (masters) рекомендуется использовать имя хоста (например,
salt-masters) для файлов подписей, чтобы избежать путаницы.
|
Любое изменение конфигурационных параметров сервера управления (master) требует его перезапуска. Для этого используйте команды:
|
Настройка проверки подписи открытых ключей на агентах (minions)
-
Скопируйте открытый ключ (по умолчанию
master_sign.pub) с сервера управления (master) в каталог агента (minion)pki:/etc/salt/pki/minion/master_sign.pub
Для проверки подписи агент (minion) должен иметь доступ только к открытому ключу. Нельзя копировать файл master_sign.pem. Он должен храниться только на сервере управления (master). -
Включите проверку подписи открытого ключа на агенте (minions) — в конфигурационном файле агента (minion) задайте значение параметра:
verify_master_pubkey_sign: True
-
Перезапустите агента (minion).
При необходимости вы можете запускать проверку для каждой попытки аутентификации, которые могут выполняться довольно часто. Например, только запуск агента (minion) инициирует 6 проверок подписи: для аутентификации, майнинга, highstate и т. д. Для этого включите настройку:
always_verify_signature: True
Включение режима мульти-мастер с автоматическим переключением (failover) на агенте (minion)
-
В файле конфигурации
/etc/salt/minion.d/master.confзадайте список адресов серверов управления (masters).Пример:
master: - 172.16.0.10 - 172.16.0.11 - 172.16.0.12В случае сбоев агент (minion) будет выполнять подключение к серверам управления (masters) по очереди в указанном порядке.
-
(Опционально) чтобы подключение выполнялось в случайном порядке, а не в порядке, указанном в параметре
master, установите значение параметра:random_master: True -
Задайте тип сервера управления (masters):
master_type: failoverПервый сервер управления (master), принявший агента (minion), будет использоваться агентом (minion).
-
(Опционально) укажите временной интервал в секундах, через который будет выполняться проверка подключения агента (minion) к серверу управления (master), установив значение параметра:
master_alive_interval: <seconds>
Если будет установлена потеря связи, агент (minion) временно удалит сервер управления (master) из списка и попробует подключиться к другому серверу управления (master), выбрав следующий в порядке очереди или случайным образом, в зависимости от заданных настроек.