Отказоустойчивая инсталляция на несколько ВМ

Развертывание BI.ZONE PAM в отказоустойчивой конфигурации на нескольких ВМ используются Ansible-плейбуки из репозитория. Подробная структура — в разделе Структура дистрибутива.

Схема предполагает установку на несколько ВМ для изоляции компонентов основных компонентов PAM, Vault, воркеров, баз данных, NFS и внешнего балансировщика.

Этот способ инсталляции рекомендуется для промышленной эксплуатации. Для тестов используйте дистрибутив Docker Compose.

Если вы планируете использовать PostgreSQL или S3-хранилище как сервис (вместо NFS), сконфигурируйте ansible-плейбуки в соответствии с вашими потребностями.

Поддерживаемые ОС

  • ALT SP Server VERSION 10.2

  • Astra linux SE 1.8

Требование к инфраструктуре

Перед началом установки убедитесь, что:

  • Виртуальные машины в кластере соответствуют минимальным требованиях к отказоустойчивой инсталляции.

  • На виртуальных машинах подключены стандартные общедоступные или внутренние репозитории ПО для используемой версии операционной системы.

  • Docker-образы компонентов PAM можно разместить в Docker-репозитории с указанием адреса в ansible-переменных, либо доступны для загрузки на конечные ВМ вручную.

  • Для балансировки между активными ВМ используется внешний балансировщик или VIP-адрес в системе виртуализации (для настройки Кeepalived).

Docker, Nginx, HAProxy, PostgreSQL и другое необходимое программное обеспечение устанавливаются из репозиториев операционной системы.

Работа с PostgreSQL

Плейбуки развертывания PAM поддерживают два варианта работы с базой данных PostgreSQL:

  • Непосредственное подключение к PostgreSQL или через отдельный балансировщик.

    Для базы данных может быть настроено несколько реплик.

    В конфигурационном файле hosts/example/inventory/group_vars/all/00-all.yml закомментируйте или оставьте переменную пустой:

    postgres_ha_vip: ""
  • Подключение к отказоустойчивому кластеру PostgreSQL через VIP-адрес.

    Укажите VIP-адрес, по которому доступно подключение к базе данных:

    postgres_ha_vip: 10.8.176.202

Настройка потоковой репликации PostgreSQL и развертывание отказоустойчивого кластера PostgreSQL средствами плейбуков не предусмотрены. Кластер может быть построен, например, с использованием HAProxy, Keepalived, Patroni и etcd/Consul.

Развертывание окружения

Развертывание окружения PAM выполняется с помощью скрипта pam-deploy.sh.

Команда развертывания

Скрипт принимает три аргумента:

  • Плейбук — определяет компонент или набор компонентов для установки.

  • Окружение — имя окружения, описание которого находится в каталоге hosts.

  • Дополнительные параметры Ansible — позволяют передать дополнительные параметры плейбуку, например указать пользователя для SSH-подключения или файл с паролями.

Пример команды

./pam-deploy.sh --pam example '--user user --extra-vars "@.passwordds" --diff'

Доступны следующие плейбуки:

  • --certs — генерация самоподписных сертификатов для окружения PAM.

  • --postgres-db — установка PostgreSQL.

  • --postgres-db-init — инициализация базы данных PAM.

  • --nfs — установка NFS-сервера на отдельной ВМ и клиентов на основных нодах.

  • --external-lb — установка внешнего балансировщика HAProxy на отдельной ВМ.

  • --pam — установка PAM на нодах, указанных в inventory.

  • --events — установка компонентов для отправки событий аудита.

  • --all — плейбук установки всего окружения. Включает в себя последовательный запуск всех плейбуков.

Подготовка окружения

Перед установкой подготовьте Docker-образы, учетные данные для подключения и описание окружения.

  1. Подготовьте Docker-образы. Скопируйте Docker-образы из директории images на виртуальные машины кластера PAM или разместите их в Docker-репозитории.

    Если образы размещены локально, загрузите их на каждую виртуальную машину:

    for i in $(ls); do docker load < $i; done

    Команду необходимо выполнить в директории с файлами образов.

  2. Также загрузите Docker-образ, используемый для развертывания PAM, на машину, с которой будет выполняться установка:

    docker load < images/deploer_$VERSION.tar.gz

    $VERSION соответствует версии дистрибутива и зависит от поставляемого комплекта.

  3. Подготовьте файл с паролями. В корне директории с Ansible-скриптами создайте файл с учетными данными, например .passwordds:

    ansible_user: user # имя пользователя для ssh подключения на ВМ кластера PAM. ansible_ssh_pass: P@ssw0rd # ssh пароль пользователя для подключения на ВМ кластера PAM (если аутентификация осуществляется по паролю). ansible_become_password: P@ssw0rd # пароль для перехода в режим sudo на ВМ кластера PAM.

    Параметры используются для подключения к виртуальным машинам и получения прав суперпользователя.

    Если для SSH-подключения используется аутентификация по ключу, ansible_ssh_pass не требуется.

  4. Подготовьте описание окружения. Скопируйте пример описания окружения:

    cp -rp hosts/example hosts/$ORGANIZATION_NAME

    Вместо $ORGANIZATION_NAME укажите имя окружения.

  5. Заполните параметры в следующих файлах:

    hosts/$ORGANIZATION_NAME/inventory/inventory.yml hosts/$ORGANIZATION_NAME/inventory/group_vars/all/00-all.yml hosts/$ORGANIZATION_NAME/inventory/group_vars/all/01_sensetive.yml

    В inventory.yml укажите IP-адреса виртуальных машин.

    В 00-all.yml укажите параметры развертывания. Обязательно задайте:

    • pam_domain_name — DNS-имя, по которому доступен PAM;

    • lb_extarnal_pam — адрес внешнего балансировщика или VIP-адрес при использовании Keepalived. Адрес должен соответствовать адресу в inventory.yml.

    В 01_sensetive.yml укажите пароли сервисов.

    Для каждого окружения необходимо задать собственные значения всех переменных с чувствительными данными.

Установка

Окружение можно установить полностью или запускать плейбуки последовательно.

Полная установка

Для последовательного запуска всех плейбуков выполните:

./pam-deploy.sh --all example '--user user --extra-vars "@.passwordds" --diff'

Пошаговая установка

Если необходимо запускать плейбуки отдельно, выполните их в следующем порядке.

1. Генерация сертификатов

./pam-deploy.sh --certs example '--user user --extra-vars "@.passwordds" --diff'

Сертификаты будут сформированы и сохранены в hosts/example/files/certs.

Для принудительного перевыпуска сертификатов добавьте параметр -e "{force_renew: true}". Например:

./pam-deploy.sh --certs example '--user user --extra-vars "@.passwordds" --diff -e "{force_renew: true}"

2. Установка PostgreSQL

./pam-deploy.sh --postgres-db example '--user user --extra-vars "@.passwordds" --diff'

3. Инициализация базы данных PAM

./pam-deploy.sh --postgres-db-init example '--user user --extra-vars "@.passwordds" --diff'

4. Установка NFS-сервера и клиентов

./pam-deploy.sh --nfs example '--user user --extra-vars "@.passwordds" --diff'

5. Установка внешнего балансировщика

./pam-deploy.sh --external-lb example '--user user --extra-vars "@.passwordds" --diff'

6. Установка PAM

./pam-deploy.sh --pam example '--user user --extra-vars "@.passwordds" --diff'

7. Установка компонентов отправки событий аудита PAM

./pam-deploy.sh --events example '--user user --extra-vars "@.passwordds" --diff'

Для управления отдельными компонентами аудита можно использовать следующие теги:

  • -t docker — установка или реконфигурация Docker.

  • -t kafka — установка Kafka.

  • -t kafka-topics — развертывание или реконфигурация топиков Kafka.

  • -t debezium — установка Kafka-коннектора Debezium.

  • -t debezium-connector-deploy — развертывание или реконфигурация коннекторов Kafka Debezium.

  • -t event-sender — установка сервиса Event Sender.

  • -t vault-audit-enable — включение аудита на нодах Vault.

  • -t vault-audit-disable — выключение аудита на нодах Vault.

  • -t logrotate — настройка ротации файлов с событиями аудита на нодах Vault.

Результат

По окончанию установки будет настроен полный кластер ВМ. Портал PAM будет доступен по доменному имени, которое указано в переменной pam_domain_name файла 00-all.yml.

Войдите в PAM под учетной записью администратора, добавьте балансировщик и воркеры, создайте объекты для работы подключения.