9. Управление кластерами услуги
9.1. Общие положения
Инсталляции приложений в рамках Datamart Platform Studio могут функционировать, как самостоятельные компоненты, так и в составе кластера.
Для инсталляций, собранных в кластер, Datamart Platform Studio обеспечивает пакетную установку, удаление, переустановку и другие дополнительные операции. Все эти задачи будут выполняться автоматически для каждой инсталляции, входящей в кластер.
Сборка инсталляций приложений в единый кластер допускается только для приложения одной и той же версии и одного бандла. Приложение одной версии, но находящиеся в разных бандлах не допускается собирать в кластер в рамках Datamart Platform Studio. Это ограничение контролируется в момент добавления инсталляции приложения в кластер.
Все инсталляции в кластере должны быть установлены на сервера в одной сети. Если требуется использовать сервера из разных сетей, то требуется обеспечить видимость серверов друг для друга по hostname и IP-адресам для корректного взаимодействия инсталляций в рамках одного кластера.
Примечание
Если требуется произвести действие для отдельной инсталляции в кластере, Datamart Platform Studio запросит у пользователя подтверждение выполняемых действий, т.к. они могут нарушить целостность кластера.
9.2. Добавление кластеров приложений
9.2.1. Добавление кластера
Для того, чтобы добавить кластер приложений в услугу, нужно последовательно совершить следующие действия:
Добавить в услугу инсталляцию приложения, на базе которого планируется создать кластер
Инсталляция должна иметь статус Новая, т.е. добавлена, но физически не установлена на сервер. Установка будет производиться позднее для всех инсталляций кластера целиком.
Примечание
Можно добавить сразу несколько инсталляций приложения на разные сервера услуги, для которых планируется создать кластер. Добавление приложений в услугу подробно описано в разделе Раздел 8 Управление инсталляциями приложений в услуге.
Добавить кластер для соответствующего приложения
В Datamart Platform Studio кластер является логическим объектом, который необходимо предварительно добавить в услуге. Для этого перейдите в карточку услуги, выберите вкладку меню «Состав услуги» и нажмите на кнопку Добавить кластер.
Рисунок 9.6 Добавление кластера в услуге
В открывшемся окне введите наименование кластера и выберите приложение, для которого создается кластер (см. Рисунок 9.7).
Примечание
В списке приложений, для которых можно создать кластер, будут доступны только те приложения, инсталляции которых уже добавлены в услугу.
Примечание
После добавления кластера изменить приложение кластера невозможно. Если требуется поменять приложение кластера, то необходимо добавить новый кластер, а старый удалить, предварительно удалив из него все инсталляции.
Рисунок 9.7 Карточка добавления кластера
После того, как кластер добавлен, перед запуском его установки, в него можно добавить любое количество инсталляций приложения.
.. Если требуется добавить инсталляции в работающий кластер, см. rp_add_to_cluster rp_add_to_cluster.
Добавить инсталляции приложений в кластер до необходимого количества
Количество инсталляций приложений в кластере определяется требованиями того или иного кластера. Например, для кластеров Zookeeper и Postgresql Cluster DCS ETCD требуется установка нечётного числа инсталляций(см. ссылка на таблицу списка приложений, которые умеют работать в кластере, и их количество).
Любое приложение, не вошедшее в список, можно объединить в кластер. Это не нарушит работу и взаимодействие программ.
Запустить установку кластера
Для установки приложений кластера нажмите на кнопку «Управление» и выберите действие Установить. В процессе установки кластера производится последовательная установка на серверы услуги всех приложений кластера.
9.2.2. Обновление приложения кластера
Обновление приложения кластера выполняется аналогично обновлению инсталляции. Про обновлении версии бандла приложения потребуется произвести только действие bind (обновление настроек).
Примечание
При обновлении версии приложения из нового бандла произойдет деинсталляция старой версии и установка новой версии приложений кластера.
9.3. Примеры настройки кластеров приложений
9.3.1. Установка и настройка универсального балансировщика 2.0
Для добавления сервиса универсального балансировщика, потребуется производить установку приложений из бандла «HAPROXY для работы с витринами 2.0» (dms-bundle-haproxy-2.0).
Установка сервиса универсального балансировщика должна производиться в следующей последовательности:
Добавить приложения:
HAproxy LB 2.0 (haproxy_lb)
Keepalived LB (keepalived_lb)
Примечание
При необходимости и технической возможности можно добавить несколько копий каждого приложения на разные серверы и объединить их в кластер
После добавления нужно поочередно открыть приложения на редактирование и в поле «ip балансировщика кластера» вписать один и тот же свободный IP из подсети, в которой устанавливаются приложения
После добавления и настройки приложений нужно запустить их установку
Примечание
Добавление сервиса универсального балансировщика обязательно в случае добавления кластера Prostore.
Примечание
После установки универсального балансировщика все приложения будут взаимодействовать через его сервис. Однако, если потребуется, можно настроить их взаимодействие напрямую, изменив настройки интерфейсов.
Список приложений, с которыми взаимодействует универсальный балансировщик см.
bundles_dms_bundle_haproxy_2.0bundles_dms_bundle_haproxy_2.0
9.3.2. Установка и настройка кластеров Postgres и Pangolin
Примечание
В текущем разделе описывается установка кластера Postgres. Установка кластера Pangolin производится аналогичным образом.
Для установки кластера Postgres требуется производить установку приложения из бандла «PostgreSQL для витрины данных» (dms-bundle-postgresql-cluster).
Кластер Postgres в Datamart Platform Studio представляет собой совокупность трех взаимодействующих между собой кластеров инсталляций приложений.
Рисунок 9.8 Схема взаимодействия кластера PostgreSQL
Примечание
При необходимости перед физической установкой кластеров на сервера нужно произвести предварительную конфигурацию настроек и интерфейсов взаимодействия для кластера.
Настройка параметров приложений кластера должна обязательно производиться в карточке кластера, а не отдельного приложения в кластере.
Добавление приложений и настройка должна производиться в следующей последовательности:
Добавить приложения PostgreSQL Cluster DCS ETCD и объединить их в кластер
Добавить приложения PostgreSQL Cluster DB и объединить их в кластер
Добавить приложения балансировщика PostgreSQL Cluster LB и объединить их в кластер
Рисунок 9.9 Состав добавленных приложений кластера Postgres
Настроить параметры кластера PostgreSQL Cluster LB
Открыть кластер на редактирование и в поле «ip балансировщика кластера» необходимо вписать свободный ip из подсети, в которой устанавливается кластер. По этому ip будет осуществляться подключение к кластеру Postgres.
Рисунок 9.10 Настройка ip-адреса PostgreSQL Cluster LB
Пример полезной команды на поиск свободного IP в подсети:
nmap -sn -PE -v 172.24.19.14/20 | grep -i down
Состав интерфейсов балансировщика кластера для операций чтения-записи по умолчанию следующий:
Write:
* техническое наименование: postgresql_write
* порт: 6432
* протокол: TCP
* формат: PGSQLW
Read:
* техническое наименование: postgresql_read
* порт: 7432
* протокол: TCP
* формат: PGSQLR
Примечание
В случае использования нестандартных портов связи для взаимодействия кластера Postgres с приложениями «dtm-query-execution-core», «kafka-postgres-writer», «kafka-postgres-reader» необходимо настроить взаимодействие с интерфейсами балансировщика вручную.
Запустить установку приложений в услуге, нажав на «Управление», и выбрать действие
Установить все. После подтверждения выполняемого действия система автоматически произведет установку и настройку приложений в нужном порядке.
9.3.3. Установка и настройка кластера Ядра Prostore версии 7.6.1 и выше
Для установки кластера ядра Prostore требуется производить установку приложения из бандла «Ядро Prostore-7.6.1» (dms-bundle-prostore-7.6.1).
Кластер Prostore может функционировать как набор отдельных приложений в Datamart Platform Studio. Но если есть необходимость добавьт более 1-ой копии приложения, то нужно будет добавить кластер приложений, а также для успешного взаимодействия с приложением podd-agent нужно добавить универсальный балансировщик.
Установка должна производится в следующей последовательности:
Установить универсальный балансировщик, как это описано в разделе: Раздел 9.3.1 Установка и настройка универсального балансировщика 2.0
Примечание
Универсальный балансировщик может быть установлен заранее, если он используется для балансировки нескольких кластеров в рамках одной услуги. Повторная установка не требуется.
Добавить приложение Prostore на разных серверах (для отказоустойчивой конфигурации достаточно 2-х серверов) и объединить их в кластер.
Запустить установку кластера приложений Prostore.
Примечание
Установка и конфигурирование кластера ядра Prostore версии ниже 7.6.1 должна производиться согласно алгоритму, описанному в документации соответствующих версий ядра Prostore (см. Документация Ядра Prostore ).
9.3.4. Установка кластеров с балансировщиком
Ниже рассмотрим установку Витрины данных с балансировкой нагрузки при помощи кластера универсального балансировщика.
9.3.4.1. Конфигурация Витрины с кластером кластером PostgreSQL
В случае если необходимо собрать услугу «Витрина данных» с кластером Prostore и кластером PostgreSQL, в состав которого входит балансировщик PostgreSQL Cluster LB, дополнительно на те же ВМ, на которых будет установлен Cluster LB, требуется установить HAproxy LB 2.0 для успешной взаимодействия кластера Prostore, podd-agent и других приложений Витрины.
Примечание
При сборке услуги Витрина данных с одним приложением dtm-query-execution-core HAproxy LB 2.0 не требуется
После добавления приложений HAproxy LB 2.0 нужно объединить их в кластер, затем открыть на редактирование и заполнить поле «IP балансировщика кластера».
Примечание
Поле «IP балансировщика кластера» должно быть заполнено одинаковым значением для всех добавленных приложений PostgreSQL Cluster LB и HAproxy LB 2.0
При удалении любого из приложений балансировщика его работа будет нарушена.
Рисунок 9.11 Схема развертывания услуги Витрина данных кластером Prostore и кластером PostgreSQL
9.3.4.2. Конфигурация Витрины с универсальным балансировщиком
В случае если необходимо собрать услугу Витрина данных с кластером Prostore и СУБД Postgres standalone, для подключения приложений Витрины к кластеру Prostore нужно добавить кластер универсального балансировщика (см. Раздел 9.3.1 Установка и настройка универсального балансировщика 2.0).
Примечание
При сборке услуги Витрина данных с одним приложением dtm-query-execution-core универсальный балансировщик, соответственно, не требуется.
Рисунок 9.12 Схема установки услуги Витрина данных с кластером Prostore и Postgres standalone.
В данной схеме для примера устанавливаются две standalone СУБД для Ядра Prostore. Балансировка выполняется средствами Ядра Prostore. Важно, чтобы каждая СУБД устанавливалась на отдельной ВМ.
В настройках исходящего интерфейса кластера Ядра Prostore к СУБД будут указаны сразу два входящих интерфейса СУБД:
Рисунок 9.13 Подключение кластера Prostore к нескольким standalone PostgreSQL
9.4. Пример настройки подключения к внешним сервисам кластеров для ГосТех
При разворачивании Datamart Platform Studio в качестве отдельного сервиса оркестрации для обеспечения SLA 99.9% требуется настройка подключения услуги к сервисам, поставляемым в рамках параметра «Сервис оркестрации»: СУБД Pangolin («Сервис транзакционной СУБД (услуга 1.1)») и сервису потоковой обработки данных Corax (Kafka) «Сервис управления очередями сообщений (услуга 1.10)».
9.4.1. Требования к настройке кластеров для взаимодействия с Витринами данных
Отключение SSL в кластерах Pangolin (Postgres), Corax (Kafka), Zookeeper.
Наличие в Pangolin пользователя dtm.
Наличие в Pangolin у пользователя dtm базы данных витрины.
Наличие в Pangolin в базе данных витрины служебной функции dtmInt32Hash.
CREATE OR REPLACE FUNCTION dtmInt32Hash(bytea) RETURNS integer
AS 'select get_byte($1, 0)+(get_byte($1, 1)<<8)+(get_byte($1, 2)<<16)+(get_byte($1, 3)<<24)' -- little endian
LANGUAGE SQL
IMMUTABLE
LEAKPROOF
RETURNS NULL ON NULL INPUT;
Наличие в Pangolin в базе данных витрины служебного расширения postgres_fdw.
CREATE EXTENSION postgres_fdw;
9.4.2. Настройка подключения к сервису кластерной СУБД Pangolin
Для настройки подключения к сервису кластерной СУБД Pangolin требуется:
Создать публичный входящий интерфейс записи для кластера СУБД Pangolin. В настройках интерфейса указать параметры кластера СУБД Pangolin:
Параметр |
Значение |
Описание |
|---|---|---|
Техническое наименование |
postgresql_write |
Имя публичного интерфейса. Используется для автоматического связывания интерфейсов. |
Хост |
<ip адрес кластера> |
Выдается администратором сервиса 1.1 |
Порт |
6432 |
Значение по умолчанию. Используется для автоматического связывания интерфейсов. |
Формат |
PGSQLW |
Фиксированное значение. Используется для автоматического связывания интерфейсов. |
Протокол |
TCP |
Фиксированное значение. Используется для автоматического связывания интерфейсов. |
Создать публичный входящий интерфейс чтения для кластера СУБД Pangolin. В настройках интерфейса указать параметры кластера СУБД Pangolin:
Параметр |
Значение |
Описание |
|---|---|---|
Техническое наименование |
postgresql_read |
Имя публичного интерфейса. Используется для автоматического связывания интерфейсов. |
Хост |
<ip адрес кластера> |
Выдается администратором сервиса 1.1 |
Порт |
7432 |
Значение по умолчанию. Используется для автоматического связывания интерфейсов. |
Формат |
PGSQLR |
Фиксированное значение. Используется для автоматического связывания интерфейсов. |
Протокол |
TCP |
Фиксированное значение. Используется для автоматического связывания интерфейсов. |
Примечание
При связывании интерфейсов Типового ПО Витрин данных публичные интерфейсы кластера Pangolin будут автоматически привязаны к соответствующим интерфейсам инсталляций приложений: kafka-postgres-reader, kafka-postgres-writer, dtm-execution-core
9.4.3. Настройка подключения к кластеру сервиса потоковой обработки данных Corax (Kafka)
Для настройки подключения к кластеру сервиса потоковой обработки данных Corax (Kafka) требуется:
Создать публичный входящий интерфейс Kafka для входящих подключений. В настройках интерфейса указать параметры кластера Corax (Kafka):
Параметр |
Значение |
Описание |
|---|---|---|
Техническое наименование |
kafka |
Имя публичного интерфейса. Используется для автоматического связывания интерфейсов. |
Хост |
<ip адрес кластера> |
Выдается администратором сервиса 1.10 |
Порт |
9092 |
Значение по умолчанию. Используется для автоматического связывания интерфейсов. |
Формат |
KAFKA |
Фиксированное значение. Используется для автоматического связывания интерфейсов. |
Протокол |
TCP |
Фиксированное значение. Используется для автоматического связывания интерфейсов. |
Создать публичный входящий интерфейс Kafka для JMX метрик. В настройках интерфейса указать параметры кластера Corax (Kafka):
Параметр |
Значение |
Описание |
|---|---|---|
Техническое наименование |
kafka_jmx |
Имя публичного интерфейса. Используется для автоматического связывания интерфейсов. |
Хост |
<ip адрес кластера> |
Выдается администратором сервиса 1.10 |
Порт |
9999 |
Значение по умолчанию. Используется для автоматического связывания интерфейсов. |
Формат |
KJMX |
Фиксированное значение. Используется для автоматического связывания интерфейсов. |
Протокол |
TCP |
Фиксированное значение. Используется для автоматического связывания интерфейсов. |
Примечание
При связывании интерфейсов Типового ПО Витрин данных публичные интерфейсы кластера Corax (Kafka) будут автоматически привязаны к соответствующим интерфейсам инсталляций приложений.