Создание кластера ADB ===================== После выполнения :ref:`предварительных действий ` и :ref:`загрузки бандла ` в кластер-менеджере **ADCM** содержится следующий список объектов (:numref:`Рис.%s `): * Прототип кластера мониторинга и созданный на его основе экземпляр (программа мониторинга развернута на хосте, ADCM содержит записи о его результатах и настройках); * Прототип кластера *adb* для создания экземпляров; * Предварительно сгенерированные четыре хоста на основе бандла *Datafort*. Подразумевается, что хосты физически существуют в облаке *Datafort*, а в базе данных ADCM хранятся записи о них и их учетных данных -- ssh-ключах или паролях. .. _img_4: .. figure:: ../../images/img_4.png :align: center Список объектов в ADCM Данным объектам доступен следующий функционал: + `Создание экземпляра кластера`_; + `Конфигурация кластера`_; + `Добавление сервисов`_; + `Добавление хостов`_; + `Размещение компонентов сервисов на хостах`_; + `Установка сервиса adb`_; + `Установка сервиса chrony`_; + `Установка сервиса monitoring clients`_. Создание экземпляра кластера ---------------------------- При создании кластера в веб-интерфейсе **ADCM** генерируется новый экземпляр кластера *adb*, что означает только добавление данных о нем в базу данных **ADCM** -- на этом этапе не производится установка *adb* на хосты. 1. Открыть в ADCM вкладку "CLUSTERS" (:numref:`Рис.%s `). .. _img_5: .. figure:: ../../images/img_5.png :align: center Вкладка "CLUSTERS" 2. Нажать "Add cluster" и в открывшейся форме создать экземпляр кластера из прототипа *adb*, полученного из бандла (:numref:`Рис.%s `). .. _img_6: .. figure:: ../../images/img_6.png :align: center Создание экземпляра кластера 3. В результате выполненных действий факт создания экземпляра кластера отображается в базе данных ADCM на вкладке "CLUSTERS" (:numref:`Рис.%s `). .. _img_7: .. figure:: ../../images/img_7.png :align: center Результат успешного создания экземпляра кластера Конфигурация кластера --------------------- Для перехода к настройкам экземпляра кластера *adb* необходимо нажать кнопку с пиктограммой шестеренки в соответствующей строке вкладки "CLUSTERS" (:numref:`Рис.%s `) и перейти в раздел меню "Configuration". При этом открывается окно конфигурации выбранного экземпляра (:numref:`Рис.%s `). .. _img_8: .. figure:: ../../images/img_8.png :align: center Окно конфигурации кластера В блоке настроек "repos" указываются требуемые для установки *adb* пакеты из различных yum-репозиториев, при этом в каждом из параметров можно изменить заданный по умолчанию url на необходимый: * Arenadata; * Centos 7 extra; * Epel. В блоке "ADCM" необходимо настроить адрес, на котором ADCM будет доступен извне: * *Hostname* (так же можно указать IP-адрес); * *Port*. Каждый компонент сервиса кластера имеет возможность отсылать статусную информацию о своем состоянии (keep alive) процессу **ADCM** в докер-контейнере. В ряде случаев **ADCM** может оказаться за NAT, и в таком случае исключается очевидный вариант автоматического определения его адреса, видимого со стороны сервисной компоненты на хосте кластера. Поэтому данный адрес указывается вручную. Во время установки **ADB** адрес **ADCM** используется для заполнения конфигурации компонентов, отвечающих за передачу статусной информации. Поэтому адрес требует обязательного заполнения для выполнения дальнейших шагов (при пустом поле адреса выдается предупреждение на интерфейсе). .. _img_9: .. figure:: ../../images/img_9.png :align: center Окно конфигурации кластера с заполненным адресом Добавление сервисов ------------------- Кластер **ADB** содержит следующие сервисы: * *adb* -- MPP база данных; * *chrony* -- сервис времени; * *monitoring clients* -- агенты, отсылающие информацию о хосте и ADB в мониторинг. Не все сервисы являются обязательными для установки. Например, если на хостах уже настроена служба времени, то нет необходимости устанавливать *chrony*. Или в случае когда применяется сервис мониторинга (не на базе **Graphite**), незачем ставить агенты из *monitoring clients*. Однако, наличие сервиса **ADB** является обязательным. .. important:: На текущий момент невозможно удалить из кластера уже добавленный сервис В настоящем примере в кластер будут добавлены все сервисы. 1. Открыть вкладку "SERVICES" кластера *adb* (:numref:`Рис.%s `). .. _img_10: .. figure:: ../../images/img_10.png :align: center Вкладка "SERVICES" 2. Нажать "Add services" и в открывшейся форме добавить необходимые сервисы (:numref:`Рис.%s `). .. _img_11: .. figure:: ../../images/img_11.png :align: center Добавление сервисов 3. В результате выполненных действий факт добавления сервисов отображается в базе данных ADCM на вкладке "SERVICES" (:numref:`Рис.%s `). .. _img_12: .. figure:: ../../images/img_12.png :align: center Результат успешного добавления сервисов Настройка добавленных сервисов: + `Настройка сервиса adb`_; + `Настройка сервиса chrony`_; + `Настройка сервиса monitoring clients`_. Настройка сервиса adb ^^^^^^^^^^^^^^^^^^^^^^ Для перехода к настройкам сервиса *adb* необходимо нажать кнопку с пиктограммой шестеренки в соответствующей строке вкладки "SERVICES" и перейти в раздел меню "Configuration". При этом открывается окно конфигурации сервиса *adb* (:numref:`Рис.%s `). .. _img_13: .. figure:: ../../images/img_13.png :align: center Окно конфигурации сервиса adb В блоке настроек "Main" задаются основные параметры: * *Name of default database* -- имя по умолчанию, база данных обслуживается скриптами в *crontab* (сборка мусора, защита от зацикливания счетчика транзакций и т.д.); * *Use segment mirroring* -- включение синхронной репликации основных сегментов с данными (в кластер добавляются зеркальные сегменты). В результате зеркальные сегменты обеспечивают отказоустойчивость, но требуют в два раза больше места для хранения данных. Если в кластере достаточно хостов, то используется политика зеркалирования *spread*, в противном случае -- *group*. В блоке настроек "Advanced" задаются следующие расширенные параметры: * *Number of segments per host* -- количество основных сегментов на хосте сегментов. В случае если параметр не указан, используется значение, равное *(количество ядер ЦПУ)/2*. При задании количества основных сегментов вручную следует учитывать, что, чем больше параллельных SQL-запросов планируется выполнять одновременно, тем меньше должно быть основных сегментов на хосте; * *Data directory template* -- каталог для хранения данных на хостах сегментов. При отсутствии каталога, создается автоматически; * *Mount segment storage devices for data* -- монтирование блочных устройств хранения к каталогам хранения данных на хостах сегментов. В случае если блочные устройства отсутствуют, монтирование не осуществляется; * *Segment server storage devices* -- массив блочных устройств в формате массива *JSON* на хостах сегментов, например, ["sdb", "sdc"], при этом префикс "/dev" не указывается. Должен быть одинаковым на всех хостах сегментов кластера (можно воспользоваться *lvm*); * *Use nobarrier* (segment hosts) -- не рекомендуется использовать барьеры в XFS на хостах сегментов; * *Mount master storage device for data* -- монтирование блочных устройств хранения к каталогам хранения данных на хостах мастера (хосты мастера и резервного мастера). В случае если блочные устройства отсутствуют, монтирование не осуществляется; * *Master server storage device* -- блочное устройство на хосте мастера, например, "sdb", при этом префикс "/dev" не указывается. Должен быть одинаковым на всех хостах мастера в кластере (мастере и резервном мастере); * *Use nobarrier* (master hosts) -- не рекомендуется использовать барьеры в XFS на хостах мастера; * *Arenadata configs directory name* -- название каталога с конфигурационными файлами Arenadata. Располагается в домашнем каталоге системного пользователя; * *Sysctl parameters* -- необходимые для ADB параметры ядра linux; * *System user GID* -- идентификатор группы, к которой принадлежит пользователь. Системный пользователь должен создаваться с одинаковыми *UID* и *GID* на всех серверах с целью сокращения вероятности возникновения проблем доступа к общим сетевым хранилищам с файлами резервных копий ADB; * *System user name* -- имя системного пользователя для ADB; * *System user UID* -- идентификатор пользователя. Системный пользователь должен создаваться с одинаковыми *UID* и *GID* на всех серверах с целью сокращения вероятности возникновения проблем доступа к общим сетевым хранилищам с файлами резервных копий ADB. Настройка сервиса chrony ^^^^^^^^^^^^^^^^^^^^^^^^^^ Для перехода к настройкам сервиса *chrony* необходимо нажать кнопку с пиктограммой шестеренки в соответствующей строке вкладки "SERVICES" и перейти в раздел меню "Configuration". При этом открывается окно конфигурации сервиса *chrony* (:numref:`Рис.%s `). .. _img_14: .. figure:: ../../images/img_14.png :align: center Окно конфигурации сервиса chrony Параметр *NTP server* -- это адрес действующего NTP-сервера. Когда параметр задан, мастер берет время с NTP-сервера, резервный мастер -- с мастера или NTP-сервера, а сегменты -- с мастера или резервного мастера. В случае если параметр не задан или NTP-сервер недоступен, то мастер использует свои локальные часы, резервный мастер -- часы мастера или свои локальные, а сегменты берут время с мастера или резервного мастера. Настройка сервиса monitoring clients ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. important:: На текущий момент у сервиса monitoring clients отсутствуют параметры для настройки Добавление хостов ----------------- По результатам :ref:`предварительных действий ` в **ADCM** создано четыре хоста в облаке *Datafort* (их адреса и учетные данные сохранены в их конфигурациях). На данном этапе их следует добавить в кластер *adb*: 1. В меню кластера *adb* открыть вкладку "Hosts" (:numref:`Рис.%s `). .. _img_15: .. figure:: ../../images/img_15.png :align: center Вкладка "Hosts" кластера adb 2. Нажать "Add hosts" и в открывшейся форме выбрать необходимые хосты (:numref:`Рис.%s `). .. _img_16: .. figure:: ../../images/img_16.png :align: center Выбор хостов 3. В результате выполненных действий факт добавления хостов отображается в кластере *adb* в списке вкладки "Hosts" (:numref:`Рис.%s `). .. _img_17: .. figure:: ../../images/img_17.png :align: center Результат успешного добавления хостов Размещение компонентов сервисов на хостах ----------------------------------------- Каждый сервис состоит из компонентов, которые должны быть размещены на хостах в кластере. Для этого необходимо на вкладке кластера "Hosts - Components" выбрать компонент посредством нажатия на него мышкой в колонке "Components" и определить для него необходимый хост в колонке "Hosts" (:numref:`Рис.%s `). .. _img_18: .. figure:: ../../images/img_18.png :align: center Размещение компонентов сервисов на хостах Поскольку службы *adb*, *chrony* и *monitoring clients* добавлены в кластер **ADB**, но еще не размещены на хостах, то изначально ни на одном из хостов нет компонентов: 1. Компоненты сервиса *adb* (:numref:`Рис.%s `): * *adb.master* -- необходимо добавить строго на один хост мастера (*dfmdw*); * *adb.segment* -- необходимо добавить на один или более хостов сегментов (*dfsdw1*, *dfsdw2*); * *adb.standby* -- опционально может быть добавлен на один хост резервного мастера (*dfsmdw*). .. _img_19: .. figure:: ../../images/img_19.png :align: center Компоненты сервиса adb 2. Компоненты сервиса *chrony* (:numref:`Рис.%s `): * *chrony.master* -- необходимо добавить строго на один хост мастера (*df-mdw*); * *chrony.secondary* -- опционально может быть добавлен на любое количество хостов сегментов (*dfsdw1*, *dfsdw2*); * *chrony.standby* -- опционально может быть добавлен на любое количество хостов резервного мастера (*dfsmdw*). .. _img_20: .. figure:: ../../images/img_20.png :align: center Компоненты сервиса chrony 3. Компоненты сервиса *monitoring clients*: * *monitoring_clients.agent* -- опционально может быть добавлен на любое количество хостов (*dfmdw*, *dfsmdw*, *dfsdw1*, *dfsdw2*). Собирает метрики с хостов (рекомендуется разместить агента мониторинга на всех хостах кластера). .. _img_21: .. figure:: ../../images/img_21.png :align: center Компоненты сервиса monitoring clients Установка всех сервисов через кластер adb ----------------------------------------- Существует два варианта установки сервисов в кластере *adb*: * Установка всех добавленных сервисов единственным действием на уровне кластера; * Выборочная установка сервисов на уровне каждого отдельного сервиса. В данном пункте будет рассмотрена установка всех сервисов на уровне кластера. * Импортировать конфигурации мониторинга в кластер *adb*, открыв в ADCM вкладку "CLUSTERS", выбрав опцию *Import* и отметив импортируемые настройки сервисов с помощью простановки флажков в открывшейся форме (:numref:`Рис.%s `). .. _img_35: .. figure:: ../../images/img_35.png :align: center Импорт конфигурации мониторинга * Перейти на любую вкладку кластера *adb* (в примере "Hosts - Components"). На верхней панели доступна кнопка "Install", устанавливающая все добавленные сервисы в кластере. .. _img_22: .. figure:: ../../images/img_21.png :align: center Кнопка "Install" на вкладке "Hosts - Components" кластера *adb* * Нажать кнопку "Install" на открывшейся форме. В зависимости от желаемого поведения установить флаг перезагрузки хостов кластера после завершения установки (если флаг не установлен, перезагрузку необходимо произвести вручную, чтобы применились системные параметры). .. _img_45: .. figure:: ../../images/img_45.png :align: center Подтверждение установки всех сервисов в кластере * По результатам инсталляции все сервисы изменили свой статус с *created* на новый: * *adb* - initialized * *chrony* - synced * *monitoring clients* - monitored .. _img_46: .. figure:: ../../images/img_46.png :align: center Статус сервисов * Создать базу данных по-умолчанию для сервиса *adb*, как описано в :ref:`его разделе выборочной установки `. Установка сервиса adb --------------------- Для выборочной установки сервиса *adb* необходимо выполнить ряд действий на вкладке кластера "Services": 1. Install ADB -- производится настройка хостов, установка необходимых пакетов и перезагрузка хостов для применения конфигурации *sysctl*: * В поле "Actions" нажать на пиктограмму в строке сервиса *adb* и выбрать действие *Install_ADB* (:numref:`Рис.%s `). .. _img_23: .. figure:: ../../images/img_23.png :align: center Install_ADB * Установить булевый флаг для перезагрузки хостов после окончания установки (:numref:`Рис.%s `). В ином случае перезагрузку необходимо произвести вручную. .. _img_24: .. figure:: ../../images/img_24.png :align: center Action parameters * По результатам инсталляции сервис *adb* меняет состояние с *created* -- создан, на *installed* -- установлен (:numref:`Рис.%s `). .. _img_25: .. figure:: ../../images/img_25.png :align: center Статус сервиса 2. Initdb -- создание кластера ADB на подготовленных хостах: * В поле "Actions" нажать на пиктограмму в строке сервиса *adb* и выбрать действие *Initdb* (:numref:`Рис.%s `). .. _img_26: .. figure:: ../../images/img_26.png :align: center Initdb * Подтвердить действие в открывшемся диалоговом окне (:numref:`Рис.%s `). .. _img_27: .. figure:: ../../images/img_27.png :align: center Запрос на подтверждение действия * По результатам создания кластера сервис *adb* меняет состояние с *installed* -- установлен, на *initialized* -- инициализирован. На данном этапе становится доступна кнопка "Check" для проверки работоспособности кластера (:numref:`Рис.%s `). .. _img_28: .. figure:: ../../images/img_28.png :align: center Кластер инициализирован, доступна кнопка "Check" .. _create_database: 3. Create database -- создание базы данных с именем, указанным в параметре *Name of defult database* в настройках сервиса *adb*, и установка скриптов в *crontab*: * В поле "Actions" нажать на пиктограмму в строке сервиса *adb* и выбрать действие *Create_Database* (:numref:`Рис.%s `). .. _img_29: .. figure:: ../../images/img_29.png :align: center Create_Database * Подтвердить действие в открывшемся диалоговом окне (:numref:`Рис.%s `). .. _img_30: .. figure:: ../../images/img_30.png :align: center Запрос на подтверждение действия Установка сервиса chrony ------------------------ Сервис *chrony* является опциональным и может запускаться многократно с целью изменения его настроек. Для этого необходимо выполнить ряд действий на вкладке кластера "Services": * В строке сервиса *chrony* в поле "Actions" нажать на пиктограмму и выбрать действие *Install* (:numref:`Рис.%s `). .. _img_31: .. figure:: ../../images/img_31.png :align: center Install chrony * Подтвердить действие в открывшемся диалоговом окне (:numref:`Рис.%s `). .. _img_32: .. figure:: ../../images/img_32.png :align: center Запрос на подтверждение действия * По результатам инсталляции сервис *chrony* меняет состояние с *created* -- создан, на *synced* -- синхронизирован (:numref:`Рис.%s `). .. _img_33: .. figure:: ../../images/img_33.png :align: center Статус сервиса Установка сервиса monitoring clients ------------------------------------ Сервис *monitoring clients* является опциональным и требует импорта конфигурационных параметров кластера мониторинга (адреса, логин/пароль) в кластер *adb*: 1. Для импорта конфигурации мониторинга в кластер *adb* необходимо открыть в ADCM вкладку "CLUSTERS", выбрать опцию *Import* и отметить импортируемые настройки сервисов с помощью простановки флажков в открывшейся форме (:numref:`Рис.%s `). 2. Установка клиентов мониторинга в кластер *adb*: * В кластере *adb* на вкладке "Services" в поле "Actions" нажать на пиктограмму и выбрать действие *Install* для службы *monitoring clients* (:numref:`Рис.%s `). .. _img_36: .. figure:: ../../images/img_36.png :align: center Установка клиентов мониторинга * Подтвердить действие в открывшемся диалоговом окне (:numref:`Рис.%s `). .. _img_37: .. figure:: ../../images/img_37.png :align: center Запрос на подтверждение действия * По результатам инсталляции служба *monitoring clients* меняет состояние с *created* -- создана, на *monitored* -- мониторится (:numref:`Рис.%s `). .. _img_38: .. figure:: ../../images/img_38.png :align: center Статус службы