Redis#
На этом шаге отредактируйте описание сервиса кеширования данных – Redis.
Компоненты Astra Automation используют для кеширования данных сервис Redis, который можно настроить на один из двух режимов работы в зависимости от выбранной топологии:
Кластер Redis (режим по умолчанию) – используется в топологии уровня предприятия. Для развертывания кластера Redis с высокой доступностью (HA) требуется минимум шесть узлов: три узла с ролью мастера и три реплики (по одной на каждый мастер). Это минимально необходимая конфигурация для обеспечения кворума и корректного выбора узла для роли мастера.
Redis можно размещать только на узлах Private Automation Hub, Event-Driven Automation и Platform Gateway, где этот сервис совместим с другими сервисами (collocation). Размещение Redis недопустимо на узлах Automation Controller и PostgreSQL.
Если инфраструктура не может предоставить шесть узлов, кластер Redis высокой доступности создать невозможно и, следовательно, невозможно обеспечить нормальное функционирование узлов Platform Gateway и контроллера EDA в топологии уровня предприятия.
В файле описания инвентаря требуется перечислить все узлы кластера Redis:
# Redis cluster [redis] gw1.example.com gw2.example.com hub1.example.com hub2.example.com eda1.example.com eda2.example.com
Кластер Redis используется только узлами Platform Gateway и Event-Driven Automation. Остальные узлы используют собственный локальный экземпляр Redis.
Standalone – используется в базовой топологии, когда каждый компонент устанавливается на отдельном узле и использует самостоятельный локальный экземпляр Redis. Этот режим выбирают в случаях, когда невозможно обеспечить полный набор узлов для высокодоступного кластера.
Режим необходимо указать явно:
[all:vars] redis_mode=standalone
Профиль безопасности#
Независимо от режима работы для Redis задают профиль безопасности с помощью переменной redis_security.
Профиль определяет для каждого семейства компонентов способ подключения к Redis: по сети или через сокет Unix, с шифрованием TLS или без него, с паролем ACL или по клиентскому сертификату.
Доступны три значения:
default– значение по умолчанию.Platform Gateway и контроллер Event-Driven Automation подключаются к общему сервису Redis по TCP с шифрованием TLS, взаимной аутентификацией (mTLS) и паролем ACL. Узлы Automation Controller и Private Automation Hub используют собственный локальный экземпляр Redis через сокет Unix
/var/run/redis/redis.sock– без TLS и без пароля.hardened– усиленная защита.Все четыре компонента подключаются к Redis по TCP с TLS, mTLS и паролем ACL. Локальный экземпляр Redis на узлах Automation Controller и Private Automation Hub переходит с сокета Unix на TCP-порт
6380.hardened_nopass– усиленная защита без паролей.Все компоненты подключаются по TCP с TLS и mTLS, пароли ACL не используются. Единственным способом аутентификации остается клиентский сертификат, поэтому mTLS в этом профиле обязателен и не может быть отключен. В отличие от профиля
hardened, вместе с паролями общий экземпляр Redis для Platform Gateway и Event-Driven Automation лишается и разделения пространств ключей: любой клиент, прошедший проверку mTLS, получает доступ ко всем ключам этого экземпляра.
Профиль |
Platform Gateway и Event-Driven Automation |
Automation Controller и Private Automation Hub |
|---|---|---|
|
TCP, TLS, mTLS, пароль ACL |
сокет Unix, без TLS и без пароля |
|
TCP, TLS, mTLS, пароль ACL |
TCP (порт |
|
TCP, TLS, mTLS, без пароля |
TCP (порт |
Профиль задают один раз для всей установки:
[all:vars]
redis_security=hardened
Важно
Значение должно быть одинаковым для всех узлов платформы.
В начале развертывания, до настройки компонентов, утилита развертывания сравнивает настройки Redis, полученные каждым узлом.
Если разные группы описания инвентаря задают разные значения переменным redis_security, redis_disable_tls, redis_disable_mtls, redis_mode или переменным портов Redis, то развертывание прерывается с выводом перечня узлов и полученных ими настроек.
Синтаксически такое описание инвентаря допустимо, но сервер Redis и его клиенты получили бы несовместимые параметры, и ошибка проявилась бы только во время работы платформы.
Профиль безопасности и режим работы – независимые параметры: любой профиль сочетается и с кластером, и с режимом standalone.
В профилях, где применяются пароли ACL, последние создаются при установке автоматически, как случайные строки, и в журнал установки не выводятся.
Утилита развертывания сохраняет пароли на узлах в каталоге /etc/astra-automation/redis/ – по одному файлу на компонент: gateway.pass, eda.pass, hub.pass и controller.pass.
Они не меняются при повторной установке и при восстановлении из резервной копии.
Файлы доступны только пользователю root, поэтому сгенерированный пароль читают на узле:
sudo cat /etc/astra-automation/redis/gateway.pass
Для явного задания пароля используйте переменные automationgateway_redis_password, automationedacontroller_redis_password, automationhub_redis_password и automationcontroller_redis_password.
При обновлении ранее развернутой платформы утилита развертывания определяет существующий профиль автоматически:
Если исходная версия платформы поддерживает профили безопасности, то утилита сохраняет профиль, записанный на узлах при установке, – любой из трех, включая
hardened_nopass.Для более ранних версий исходной платформы утилита задает профиль исходя из фактической настройки Redis на узлах Automation Controller и Private Automation Hub: подключение по TCP с TLS дает профиль
hardened, сокет Unix – профильdefault. Профильhardened_nopassв этом случае не задается, так как в таких версиях его не существовало.
Для смены профиля при обновлении необходимо явно указать его переменной redis_security.