Программа развертывания вычислительного кластера

Руководство системного программиста


Аннотация


Данный документ является руководством системного программиста по использованию Программы развертывания вычислительного кластера ЛТЕЦ.20 001−01.
Документ предназначен для администратора системы.
В руководстве приводятся инструкции по развёртыванию кластера, добавлению и удалению вычислительных узлов с помощью утилиты adbms.py.
Настоящее руководство распространяется на Программу развертывания вычислительного кластера и не заменяет учебную и справочную литературу на остальные программные и аппаратные компоненты многоузловой системы (в том числе операционную систему, СУБД Shardman и средства управления конфигурацией Ansible).

1.   ОБЩИЕ СВЕДЕНИЯО ПРОГРАММЕ 

1.1.   Назначение системы 
1.1.1.  Программа развертывания вычислительного кластера предназначена для первоначальной установки и конфигурирования кластера СУБД Shardman на совокупности вычислительных узлов, а также для последующего управления составом кластера (добавление и удаление узлов) без полной переустановки.
Развёртывание осуществляется с головного узла (head ) посредством Ansible- сценариев, которые по протоколу SSH выполняют установку и настройку необходимых компонентов на целевых узлах (pg -узлах).

1.2.   Топология системы 
1.2.1.  Система предполагает наличие следующих категорий узлов:
1)   головной узел (head) — узел, с которого выполняется запуск Ansible-сценариев. На данном узле должны быть установлены Ansible, Python 3 и утилита adbms.py. Головной узел имеет доступ по SSH ко всем pg-узлам кластера;
2)   pg-узлы — вычислительные узлы, на которых размещаются экземпляры СУБД Shardman. Каждый pg-узел имеет сетевой доступ к головному узлу по SSH.

1.3.   Среда выполнения 
1.3.1.  Для работы Программы развертывания вычислительного кластера необходимо:
1)   операционная система на базе ядра Linux на всех узлах;
2)   Ansible версии 2.9 и выше, установленный на головном узле;
3)   Python 3, установленный на головном узле;
4)   настроенный доступ по SSH с головного узла ко всем pg-узлам без запроса пароля (по ключу) либо с использованием параметра -K для ввода пароля при запуске;
5)   дистрибутивный комплект СУБД Shardman.

2.   СТРУКТУРА ПРОГРАММЫ 

2.1.  Программа развертывания вычислительного кластера состоит из следующих компонентов:
1)   набор Ansible-сценариев (playbooks), расположенных в директории
shardman-ansible. Основной сценарий развёртывания — site. yml;
2)   файл инвентаризации inventory/hosts.yml, содержащий описание топологии кластера (IP-адреса и имена всех узлов);
3)   утилита adbms. py — скрипт на языке Python, предоставляющий команды add и
rm для управления составом кластера после первоначального развёртывания.

2.1.   Ansible-сценарии 
2.1.1.   Ansible-сценарий site. yml выполняет полный цикл развёртывания кластера: установку пакетов СУБД, генерацию конфигурационных файлов, инициализацию баз данных и запуск служб на всех узлах, перечисленных в файле инвентаризации.

2.2.   Утилита adbms. py 
2.2.1.  Утилита adbms. py предназначена для оперативного управления составом кластера. Утилита принимает команду и список узлов, разделённых запятыми:
-   команда add — добавляет указанные узлы в кластер;
-   команда rm — удаляет указанные узлы из кластера.

3.   НАСТРОЙКА ПРОГРАММЫ 

3.1.   Подготовка 
3.1.1.   Перед развёртыванием необходимо выполнить следующие подготовительные действия:
1)   убедиться, что на головном узле установлен Ansible и имеется доступ по SSH ко всем pg-узлам кластера;
2)   скопировать директорию shardman-ansible на головной узел;
3)   перейти в директорию shardman-ansible:
 $ cd shardman-ansible
4)   отредактировать файл инвентаризации inventory/hosts.yml, указав IP-адреса всех узлов кластера:
$ vim inventory/hosts.yml

В файле инвентаризации необходимо заполнить IP-адреса головного узла и каждого pg-узла в соответствии с фактической сетевой конфигурацией.

3.2.   Развёртывание кластера 
3.2.1.   Развёртывание кластера выполняется запуском основного Ansible-сценария с указанием файла инвентаризации:
$ ansible-playbook -i inventory/hosts.yml site. yml -K
Параметр -K указывает Ansible запросить пароль для повышения привилегий (become password) на целевых узлах.
После успешного завершения сценария кластер СУБД Shardman будет развёрнут и готов к работе на всех узлах, перечисленных в файле инвентаризации.

3.3.   Взаимодействие с другими компонентами 
3.3.1.   Комплекс программного обеспечения взаимодействует со следующими компонентами:
1)   SSH —используется для удалённого выполнения команд на pg-узлах. Необходим корректно настроенный доступ по SSH с головного узла;
2)   Ansible —средство управления конфигурацией, выполняющее сценарии на целевых узлах;
3)   СУБД Shardman— целевое программное обеспечение, устанавливаемое и конфигурируемое на pg-узлах.

4.   ИСПОЛЬЗОВАНИЕ ПРОГРАММЫ 

4.1.   Добавление узлов 
4.1.1.   Для добавления новых pg-узлов в существующий кластер используется команда add утилиты adbms.py. Имена добавляемых узлов указываются через запятую без пробелов:
$ adbms add pg1, pg2
При выполнении команды утилита:
1)   проверяет доступность указанных узлов по SSH;
2)   устанавливает и настраивает на них компоненты СУБД Shardman;
3)   регистрирует узлы в конфигурации кластера;
4)   запускает необходимые службы.
После успешного выполнения команды указанные узлы становятся полноценными участниками кластера.

4.2.   Удаление узлов 
4.2.1.     Для удаленияpg-узлов из кластера используется команда rm утилиты
adbms.py. Имена удаляемых узлов указываются через запятую без пробелов:
$ adbms rm pg3, pg2
При выполнении команды утилита:
1)   останавливает службы СУБД на указанных узлах;
2)   исключает узлы из конфигурации кластера;
3)   производит перераспределение данных (при необходимости).
После успешного выполнения команды указанные узлы исключаются из состава кластера.

5.   ПРОВЕРКА ПРОГРАММЫ 

5.1.  Для проверки успешности развёртывания кластера необходимо убедиться, что Ansible-сценарий завершился без ошибок. По окончании выполнения ansible-playbook в консоли выводится сводка результатов вида:
PLAY RECAP

head

: ok=12

changed=8

unreachable=0

failed=0

pg1

: ok=15

changed=10

unreachable=0

failed=0

pg1

: ok=15

changed=10

unreachable=0

failed=0



Развёртывание считается успешным, если для всех узлов значения unreachable и
failed равны 0.
5.2. Проверка состояния кластера после добавления или удаления узлов может быть выполнена стандартными средствами СУБД Shardman на любом из pg-узлов.

6.   СООБЩЕНИЯ СИСТЕМНОМУ ПРОГРАММИСТУ 

6.1.   Сообщения Ansible 
6.1.1.   Ansible выводит сообщения в стандартный поток вывода для каждой задачи (task) сценария. Каждая задача сопровождается статусом: ok, changed, skipped или failed.
При возникновении ошибки Ansible выводит сообщение с описанием причины сбоя и именем узла, на котором произошла ошибка.

6.2.   Сообщения утилитыadbms. py 
6.2.1.  Утилита adbms. py может выводить следующие сообщения:
-   Node <имя> added successfully — узел успешно добавлен в кластер;
-   Node <имя> removed successfully —узел успешно удалён из кластера;
-   Error: node <имя> is unreachable — не удалось установить SSH-соединение с указанным узлом;
-   Error: node <имя> is not in cluster — попытка удалить узел, не являющийся участником кластера;
-   Error: node <имя> is already in cluster — попытка добавить узел, который уже является участником кластера.





.