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

Развертывание кластера приводится на примере следующей инфраструктуры:

  1. Windows AD (ОС Windows server 2019)
  2. PostgreSQL 14 (ОС Astra 1.6)
  3. JMS Server (ОС Astra7 или более поздняя версия)
  4. Два сервера с ОС Astra 1.7, на которых будут развернуты узлы кластера JAS Server.

Подразумевается, что JMS Server установлен и настроен согласно Части 1 Руководства администратора [2].

В примере приводится развертывание кластера JAS в виртуальной среде.

Подготовка к установке кластера

  1. Разверните виртуальную машину (ВМ) с ОС Астра 1.7 (создание ВМ первого узла.)
  2. Выполните клонирование ВМ Астра 1.7 (создание ВМ для второго узла.)
  3. Измените адрес склонированной ВМ. (Режим работы с подсетью 172.16.13.0/24.)
  4. Выполните переименование обеих ВМ и внесите изменения в файлы /etc/hosts на них (в частности, удалив из них строку, содержащую localhost), руководствуясь разделами «Настройки на первом узле», с. 104 и «Настройки на втором узле», с. 104.

Настройки на первом узле

Предполагается, что у ВМ при создании было установлено имя astra17, если нет, выполните команду:

hostnamectl set-hostname astra17

Выполните последовательность команд для настройки окончательного имени и файла hosts:

hostnamectl set-hostname $(hostname)-1
sudo sed -i '$a 172.16.13.55 \t astra17-1' /etc/hosts
sudo sed -i '$a 172.16.13.56 \t astra17-2' /etc/hosts
sudo sed -i '/^127\.0\.1\.1/d' /etc/hosts

Настройки на втором узле

Предполагается, что у ВМ при создании было установлено имя astra17, если нет, выполните команду:

hostnamectl set-hostname astra17

Выполните последовательность команд для настройки окончательного имени и файла hosts:

hostnamectl set-hostname $(hostname)-2
sudo sed -i '$a 172.16.13.55 \t astra17-1' /etc/hosts
sudo sed -i '$a 172.16.13.56 \t astra17-2' /etc/hosts
sudo sed -i '/^127\.0\.1\.1/d' /etc/hosts

Настройки на обоих узлах

  1. На обоих узлах выполните следующие команды:
sudo apt install pacemaker pcs astra-resource-agents
sudo passwd hacluster
sudo pcs cluster destroy

  2. Выполните установку сервера JAS без инициализации (т.е. до выполнения команды JAS.Agent.Terminal server initialize), руководствуясь разделом «Установка и первоначальная настройка сервера JAS», c. 19 на обоих узлах.

  3. Выполните инициализацию сервера JAS (см. раздел «Начальное конфигурирование сервера JAS», с. 20) на первом узле.

  4. Cкопируйте конфигурационный файл /etc/aladdin/jas-engine/AppSettings.json с первого узла на второй узел.

  5. На втором узле в этом файле замените зашифрованные пароли на действительные пароли в открытом виде. После запуска службы они зашифруются.

  6. Проверьте, что на каждой ВМ процесс JAS запускается и переходит в состояние «работает».

  7. Перезагрузите оба узла.

Настройки кластера

Команды, описанные ниже, выполняются на одном из узлов кластера (любом).

  1. Выполните аутентификацию всех узлов кластера:
sudo pcs host auth astra17-1 astra17-2 -u hacluster -p 123456qweRTY

  2. Задайте название кластера и список его участников:

sudo pcs cluster setup astracluster astra17-1 astra17-2 –force

         где astracluaster -- имя кластера.

  3. Запустите экземпляры кластера и добавьте их в автостарт:

sudo pcs cluster enable --all
sudo pcs cluster start --all

  4. Отключите механизм stonith:

sudo pcs property set stonith-enabled=false

  5. Отключите механизм кворума:

pcs property set no-quorum-policy=ignore

  6. Проверьте статус сервиса и кластера:

sudo pcs status
sudo pcs cluster status

В консольной выдаче команды не должно быть ошибок.

Настройка ресурсов кластера

  1. Создайте «мигрирующий» IP-адрес для доступа к ресурсам:
sudo pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=172.16.13.220 cidr_netmask=32 op monitor interval=15s

Примечание. Выполненная настройка действует следующим образом. Если узел отключается, то IP-адрес мигрирует на рабочий узел кластера вместе с сервисом. Сохраняется доступность по одному и тому же IP-адресу вне зависимости от узла, на котором работает ресурс.

  2. Создайте ресурс JAS сервиса:

sudo pcs resource create JAS service:jas-engine op monitor interval=20

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

  3. Задайте связь между ресурсами:

pcs constraint colocation add ClusterIP with JAS score=INFINITY

 Примечание. Выполненная настройка действует следующим образом. Кластер ищет узел, на котором расположить сервис JAS, а затем подтягивает сервис виртуального IP-адреса ClusterIP. Параметр score=INFINITY устанавливает условие, что они должны быть всегда вместе на одном узле.

  4. Задайте последовательность запуска сервисов (сначала установка ресурса IP-адреса, затем – ресурса JAS):

pcs constraint order ClusterIP then JAS

  5. Добавьте свойство resource-stickiness («липкости») ресурса к узлу, чтобы ресурс не перемещался стохастически между узлами:

pcs resource defaults resource-stickiness=100

 Примечание. Поясним необходимость установки resource-stickiness. Без такой установки возможен, в частности, такой сценарий: произошел отказ 1-го узла, ресурс мигрирует на узел 2. Узел 1 восстановился, ресурс мигрировал обратно. После установки же «липкости» ресурс останется там, куда мигрировал после исходного отказа.

  6. Добавьте количество сбоев перед миграцией на другой узел. По умолчанию сервис будет перезапускаться постоянно на одном и том же узле:

pcs resource defaults migration-threshold=10

Базовая настройка завершена. Результат настройки можно описать следующими положениями:

  • обеспечена единая точка доступа к ресурсу (ClusterIP);
  • гарантирован запуск одного экземпляра сервиса, работающего на одном из узлов;
  • обеспечена автоматическая миграция сервиса при возникновении неполадок с сервисом (например, сервис JAS не может запуститься) или в случае физической недоступности узла (по причине программного или аппаратного отказа сервера).

Дополнительные команды по работе с кластером

pcs resource refresh – сбросить ошибки сервисов на узле кластера. Если использовать с параметром –full то сбросит ошибки на всех узлах.

pcs status – возвратить информацию о состоянии узлов кластера и его ресурсов.

pcs constraint – вывести список зависимостей между ресурсами, между узлами, между ресурсами и узлами.

Настройка SSL на интерфейсах JAS в кластерной конфигурации

Для настройки на API-интерфейсах JAS работы по защищённым протоколам выполните следующие действия.

  1. Для «мигрирующего» IP-адреса кластера (см. раздел «Настройка ресурсов кластера», с. 105) добавьте в DNS имя так называемой «кластерной роли» (например например jas-cluster.jmslocal).

 Примечание. При работе в домене AD данную операцию (создание DNS-имени для IP-адреса) можно выполнить из оснастки Диспетчер DNS.

  2. На DNS-имя кластерной роли выпустите SSL-сертификат со следующими параметрами:

  • Subject Name – DNS-имя кластерной роли (в нашем примере jas-cluster.jmslocal)
  • Сертификат должен предоставлять возможность экспорта закрытого ключа.

 Примечания:

  • Для выпуска сертификата в MSCA можно воспользоваться инструкциями из справочника по выпуску сертификатов в MSCA [7], с. 156
  • В случае отсутствия УЦ в сети допускается выпуск самоподписанного сертификата с помощь утилиты openssl

  3. Экспортируйте сертификат в формате .pfx (при экспорте для шифрования пароля рекомендуется использовать алгоритм AES256-SHA256).

  4. Выполните установку полученного SSL-сертификата кластерной роли на API-интерфейсах AdminictrationService и AuthenticationService (см. подробнее в разделах «Настройка SSL-подключения сервера JMS к серверу JAS (AdministrationService API)», c. 99 и «Настройка SSL/TLS на интерфейсе AuthenticationService» с. 100) на все узлы кластера.

 Примечания:

1. Если для API-интерфейсов AdminictrationService и AuthenticationService необходимо использовать разные SSL-сертификаты по двум разным DNS-адресам (например для доступа внутри DMZ и из-за её пределов) для кластерной роли следует зарегистрировать отдельные DNS-имена (на мигрирующий IP-адрес), выпустить на каждое из них соответствующий SSL-сертификат и установить на соответствующие API-интерфейсы JAS.

2. Настройку подключения JMS к серверу JAS (команда Aladdin.EAP.Agent.Terminal jas configure) достаточно выполнить один раз, указав при этом в параметрах подключения адрес кластерной роли и аутентификационные данные пользователя, зарегистрированного на всех узлах кластера (убедитесь, что на всех узлах кластера JAS установлены одинаковые параметры аутентификации SecurityType, UserName и Password на интерфейсе AdminictrationService, подробнее см. Табл. 11, с. 22) ) Например:

Aladdin.EAP.Agent.Terminal jas configure -u https://<fqdn_кластерной_роли_JAS>:8220 -s <тип аутентификации> -l <логин_пользователя_JAS> -p <логин_пользователя_JAS>

где:

<fqdn_кластерной_роли_JAS> -- полное доменное имя кластерной роли, указанное в её SSL-сертификате (в нашем примере jas-cluster.jms4.local);

<тип_аутентификации> -- значение параметра SecurityType, установленного в для программного интерфейса             AdminstrationService на всех узлах кластера (подробнее см. Табл. 11, с. 22);

<логин_пользователя_JAS> -- логин пользователя, под которым осуществляется аутентификация на всех узла кластера JAS;

<пароль_пользователя_JAS> -- пароль пользователя, под которым осуществляется аутентификация на всех узлах кластера JAS.

Подробное описание команды jas configure консольного агента JMS см. в Части 1 Руководства администратора [2] , раздел «Приложение 2. Справочник команд консольного агента Aladdin.EAP.Agent.Terminal»

5. Для проверки корректности подключения сервера JMS к серверу JAS на стороне сервера JAS выполните команду jas show консольного агента JMS Aladdin.EAP.Agent.Terminal, например:

Aladdin.EAP.Agent.Terminal jas show

Рис. 80 – Пример выдачи команды jasl show