Программа развертывания вычислительного кластера
Руководство системного программиста
Аннотация
Данный документ является руководством системного программиста по использованию Программы развертывания вычислительного кластера ЛТЕЦ.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 — попытка добавить узел, который уже является участником кластера.
.