Redis

Redis#

На этом шаге отредактируйте описание сервиса кеширования данных – Redis.

../../../../_images/general-green1.svg ../../../../_images/gateway-green1.svg ../../../../_images/autoexec-green1.svg ../../../../_images/content-green1.svg ../../../../_images/eda-green1.svg ../../../../_images/tls-green1.svg ../../../../_images/postgres-green1.svg ../../../../_images/redis-blue1.svg ../../../../_images/general-green1.svg ../../../../_images/gateway-green1.svg ../../../../_images/autoexec-green1.svg ../../../../_images/content-green1.svg ../../../../_images/eda-green1.svg ../../../../_images/tls-green1.svg ../../../../_images/postgres-green1.svg ../../../../_images/redis-blue1.svg

Компоненты 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

default

TCP, TLS, mTLS, пароль ACL

сокет Unix, без TLS и без пароля

hardened

TCP, TLS, mTLS, пароль ACL

TCP (порт 6380), TLS, mTLS, пароль ACL

hardened_nopass

TCP, TLS, mTLS, без пароля

TCP (порт 6380), TLS, mTLS, без пароля

Профиль задают один раз для всей установки:

[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.