Глоссарий#
Термины и сокращения, которые используются для описания внутреннего устройства и функций программы:
Термин | Описание, комментарий |
---|---|
Ansible | ПО с открытым исходным кодом, которое автоматизирует установку программного обеспечения, управление конфигурацией и развёртывание приложений |
API | Application Programming Interface, программный интерфейс приложения |
Corosync | Программное обеспечение, используемое для объединения серверов в кластер |
CPU | Central Processing Unit, центральный процессор |
Dashboard | Графический интерфейс, отображающий ключевые метрики и показатели процессов |
IP-адрес | Уникальный сетевой адрес узла в компьютерной сети, построенной на основе стека протоколов TCP/IP |
JSON | JavaScript Object Notation. Текстовый формат обмена данными, который представлен наборами пар "ключ-значение" |
NTP | Network Time Protocol. Сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью |
Pacemaker | Программное обеспечение - менеджер ресурсов кластера |
PostgreSQL | Объектно-реляционная система управления базами данных |
RAM | Random Access Memory, оперативная память |
RPM | Red Hat Package Manager. Формат пакетов программного обеспечения, используемые в ряде Linux-дистрибутивов |
SSH | Secure Shell – сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений |
SSL | Secure Sockets Layer – уровень защищенных сокетов – криптографический протокол, который подразумевает более безопасную связь. Протокол использует асимметричную криптографию для аутентификации ключей обмена, симметричное шифрование для сохранения конфиденциальности, коды аутентификации сообщений для целостности сообщений |
web-IPMI | Интерфейс управления ЭВМ, предназначенный для автономного мониторинга и управления функциями, встроенными непосредственно в аппаратное и микропрограммное обеспечения серверных платформ |
База данных | Объект сервиса СУБД[,]{.underline} в котором пользователи создают таблицы для хранения данных, а также другие объекты, доступные для создания в используемой СУБД, такие как представления и хранимые процедуры. |
Инстанс | Экземпляр PostgreSQL, запущенный на одном из серверов сегментов, хранящий и обрабатывающий свою часть данных. Экземпляр класса в объектно-ориентированном программировании |
Кластер | Объект управления верхнего уровня; группа узлов, на которой запускаются сервисы СУБД |
ОС | Операционная система |
ПО | Программное обеспечение |
ПАК | Программно-аппаратный комплекс, совокупность аппаратных компонент (сервера, коммутаторы доступа и т. п.) и программного обеспечения, решающих некие прикладные задачи (машина баз данных, система управления виртуализацией и т.д.) |
Сервис СУБД | Целостная служба СУБД, работающая на конкретном кластере |
СУБД | Система управления базами данных |
Узел | Сервер, входящий в кластер, на котором устанавливается ПО СУБД для запуска экземпляров СУБД и организации из них сервисов СУБД |
ЭВМ | Электронно-вычислительная машина |
1.Введение#
1.1 Область применения программы#
Основным назначением Модуля управления кластером "Скала^Р Спектр" (далее - "Спектр") является предоставление возможности управления жизненным циклом ПАК семейства "СКАЛА" персоналом, к квалификации которого не предъявляется серьезных требований, в том числе персоналом сторонних организаций.
Основными задачами, решаемыми "Спектром", являются:
-
Вывод узла ПАК из эксплуатации на обслуживание и его ввод в работу;
-
Остановка и запуск сервисов СУБД;
-
Остановка и запуск кластера;
-
Выполнение операций над базами данных в сервисах СУБД;
-
Мониторинг узлов кластера и сервисов СУБД
-
Снижение трудоемкости и времени обновления приложений и операционных систем за счет использования готовых эталонных образов.
"Спектр" должен обеспечивать реализацию следующих возможностей:
-
Регистрация (импорт) существующего кластера;
-
Регистрация кластеров Postgres из JSON, предоставляемого REST API Модуля Управления ПАК;
-
Управление кластерами для операций «старт кластера» и «остановка кластера»;
-
Управление узлами кластера для операций «старт узла кластера», «остановка узла кластера», «вывод узла на обслуживание», «возвращение узла из обслуживания»;
-
Управление сервисами СУБД для операций «изменение конфигурации сервиса» и «применение измененной конфигурации сервиса»;
-
Отображение данных из Модуля Мониторинга ;
-
Добавление сервиса СУБД в кластер / удаление сервиса СУБД из кластера;
-
Добавление расширений СУБД Postgres;
-
Активация расширений СУБД Postgres;
-
Создание кластера Postgres, построенного с использованием компонентов Pacemaker и Corosync.
1.2 Уровень подготовки администраторов#
Администратор должен обладать следующими навыками:
-
установка, настройка системного программного обеспечения в ОС Linux;
-
просмотр и редактирование файлов с использованием команд ls, cat, less, vim, nano.
1.3 Условия применения программы#
Работа "Спектра" в основном режиме осуществляется путем отправки управляющих воздействий через SSH. Это означает, что сервер с развернутым "Спектром" должен находится в одной сети c обслуживаемыми серверами.
Оптимальным решением является выделение под "Спектр" отдельного виртуального сервера в рамках хоста управления ПАК.
Тип реализующей ЭВМ: x86-64.
Минимальная аппаратная конфигурация сервера для установки "Спектра":
-
CPU: от 2 ядер;
-
RAM: от 16 Гб;
-
ROM: от 600 Гб SSD для системных компонент;
-
NET: от 1 Гб Ethernet.
Для установки "Спектра" требуется наличие ПО ОС "АльтЛинукс" версии 8.4.
2. Установка программы#
В приведенных в данном руководстве примерах команд в качестве интерпретатора команд терминала используется Bash.
Примеры команд приведены вместе с приглашением интерпретатора команд, которое может отличаться у пользователя. В данном руководстве в приглашении интерпретатора команд выводятся имя пользователя, имя узла, на котором запускаются команды, и текущий каталог, в котором находится пользователь. Приглашение интерпретатора команд заканчивается символом "#", что означает, что все команды выполняются под привилегированным пользователем root. Если приглашение заканчивается символом "$", это означает что пользователь, выполняющий установку, не является привилегированным и при запуске команд необходимо повышение привилегий пользователя при помощи команды sudo.
При вводе команд пользователю не требуется вводить приглашение интерпретатора. Например, если в руководстве приводится команда
\[root@spectrum-host \~\]# mkdir -p spectrum-dist
это означает, что в терминале необходимо вводить только
mkdir -p spectrum-dist
2.1 Установка ПО#
Дистрибутив "Спектра" представляет собой tar.gz архив, который необходимо распаковать в произвольный каталог на хосте "Спектра", например в /root/spectrum-dist.
В данном руководстве приводятся примеры команд для версии "Спектра" "1.1.70". Номер версии используется в имени файла с архивом дистрибутива "spectrum-dist-altlinux8.4-v1.1.70.tar.gz", а также имени каталога, в который распаковывается архив.
На момент выполнения установки или обновления "Спектра" пользователем, версия может отличаться.
Распакованный архив содержит все RPM пакеты, необходимые для работы "Спектра", а также скрипт установки install.sh.
Для установки необходимо перейти в директорию, в которую был распакован архив, и выполнить скрипт install.sh:
\[root@spectrum-host \~\]# mkdir -p spectrum-dist
\[root@spectrum-host \~\]# tar -xvf
spectrum-dist-altlinux8.4-v1.1.70.tar.gz -C ./spectrum-dist
\[root@spectrum-host \~\]# cd spectrum-dist/spectrum-rpm-dist-v1.1.70
\[root@spectrum-host spectrum-rpm-dist-v1.1.70\]# ./install.sh
В ходе установки будут созданы все необходимые каталоги, установлено необходимое ПО (Ansible и необходимые для работы python-библиотеки), установлено ПО СУБД Postgres, создана необходимая для работы "Спектра" база данных.
В ходе установки пользователю необходимо ввести IP-адрес, по которому доступно ПО «Скала^Р Геном-Управление»:
\[root@spectrum-host spectrum-0.1.0\]# ./install.sh
Enter host IP for Genome: 1.2.3.4
Также в ходе установке необходимо ввести IP-адрес ПО "Скала^Р Визион":
Enter host IP for Vision: 1.2.3.5
2.2 Установка дополнительного ПО "Спектр"#
Для корректной работы всех функций ПО "Спектр" требуется установка на узлы кластеров, которыми управляет "Спектр", следующего дополнительного программного обеспечения:
-
Агент "Спектра".
-
Агент уведомлений "Спектра",
а также установка на узле "Спектра" ПО для администрирования СУБД "PgAdmin".
2.2.1 Подготовка к установке дополнительного ПО "Спектр"#
Установка дополнительных компонентов "Спектра" выполняется после выполнения операции импорта кластера в графическом веб-интерфейсе. Подробнее об импорте кластеров см. в документе "Руководство пользователя", раздел "7.1.2 Добавление найденного кластера".
В примере ниже установка дополнительного ПО для "Спектра" выполнена для одного кластера. Если под управлением "Спектра" находятся несколько кластеров, то шаги по установке дополнительного ПО необходимо выполнить для каждого кластера.
Перед установкой Агента "Спектра" и Агента уведомлений "Спектра" кластеры должны быть видны в графическом интерфейсе и иметь статус "Доступен", например:

Для продолжения установки необходимо сформировать файл с со следующими параметрами:
-
IP-адрес "Спектра",
-
id кластера в "Спектре",
-
IP-адреса узлов кластера.
Перечень IP адресов узлов может быть получен из раздела "Узлы" в графическом веб-интерфейсе.
ID кластеров также отображаются в веб-интерфейсе пользователя в адресной
строке браузера при переходе на страницу информации о кластере.
В приведенном примере IP-адрес "Спектра" - "192.168.190.138", id кластера - это значение "24ed3935-e6ce-4e72-8163-d2078f40d70c", IP-адреса узлов: "192.168.190.61", "192.168.190.62", "192.168.190.63".
Установка дополнительных компонентов "Спектра" выполняется с хоста "Спектра" из терминала, аналогично установке самого "Спектра". В каталоге дистрибутива "Спектра" при помощи любого текстового редактора необходимо отредактировать файл inventory_samples/cluster.yml, введя параметры кластера и узлов, полученные выше. Если каталог, в который распакован дистрибутив "Спектра" - это /root/spectrum-dist, то полный путь к нужному файлу будет:
/root/spectrum-dist/spectrum-rpm-dist-v1.1.70/inventory_samples/cluster.yml. Проверить наличие файла можно командой ls:
\[root@spectrum-host \~\]# ls
/root/spectrum-dist/spectrum-rpm-dist-v1.1.70/inventory_samples/cluster.yml
Просмотреть содержимое файла cluster.yml можно, например, командой cat:
\[root@spectrum-host \~\]# cat
/root/spectrum-dist/spectrum-rpm-dist-v1.1.70/inventory_samples/cluster.yml
Для кластера, приведенного в примере выше, содержимое файла inventory_samples/cluster.yml должно иметь вид:
all:
vars:
ansible_user: root
ansible_ssh_extra_args: \"-o StrictHostKeyChecking=no -o
UserKnownHostsFile=/dev/null\"
rpm_mode: True
# Параметры для установки алерт-агента
recipients:
- name: spectrum
# указать uuid кластера в Спектре, полученный UI Спектра
cluster_id: 24ed3935-e6ce-4e72-8163-d2078f40d70c
# указать реальный IP адрес Спектра, доступ к которому есть с узла кластера
spectrum_host: 192.168.190.138
hosts:
# указать реальные IP адреса узлов кластера, к которым есть доступ с узла Спектра
node01:
ansible_host: 192.168.190.61
node02:
ansible_host: 192.168.190.62
node03:
ansible_host: 192.168.190.63
После того, как файл отредактирован и параметры в нем соответствуют тому, что отображается в веб-интерфейсе "Спектра", можно перейти к установке дополнительных компонентов.
Полученный файл можно сохранить для использования в последующих обновлениях "Спектра". Например, скопировать в домашний каталог пользователя, под которым выполняется установка "Спектра". Для этого перейти в каталог, в который распакован архив с дистрибутивом "Спектра". Например, если распаковали архив в /root/spectrum-dist, то выполнить команду
\[root@spectrum-host \~\]# cd
/root/spectrum-dist/root/spectrum-dist/spectrum-rpm-dist-v1.1.70
и скопировать файл при помощи команды cp:
\[root@spr-test-installer_v1_1 spectrum-rpm-dist-v1.1.70\]# cp inventory_samples/cluster.yml \~
2.2.2 Установка агента "Спектра"#
Перейти в каталог, в который распакован архив с дистрибутивом "Спектра". Например, если распаковали архив в /root/spectrum-dist, то выполнить команду
\[root@spectrum-host \~\]# cd
/root/spectrum-dist/root/spectrum-dist/spectrum-rpm-dist-v1.1.70
И выполнить следующие команды:
\[root@spr-test-installer_v1_1 spectrum-rpm-dist-v1.1.70\]# source
/opt/skala-r/spectrum/python-modules/bin/activate
(python-modules) \[root@spr-test-installer_v1_1
spectrum-rpm-dist-v1.1.70\]# ansible-playbook -i
inventory_samples/cluster.yml deploy_spectrum_agent.yml -k
Если ранее была сделана копия файла cluster.yml, то последняя команда будет иметь вид:
(python-modules) \[root@spr-test-installer_v1_1
spectrum-rpm-dist-v1.1.70\]# ansible-playbook -i \~/cluster.yml
deploy_spectrum_agent.yml -k
После запуска требуется ввести пароль пользователя root для доступа к узлам кластера.
При успешном выполнении команды должны отсутствовать сообщения об ошибках, а в итоговом отчете о запуске плейбука должны отсутствовать шаги со статусом failed.
После установки агента "Спектра" необходимо переключить кластер в режим использования агента "Спектра", выполнив HTTP запрос к API "Спектра", например, при помощи команды curl. В адресе, на который выполняется запрос, используется id кластера, полученный ранее из веб-интерфейса "Спектра":
\[root@spectrum-host \~\]# curl
http://localhost:8092/api/spectrum/001/cluster/24ed3935-e6ce-4e72-8163-d2078f40d70c/agent
-d \'{\"use_agent\": true}\' -X PUT -H \"Content-Type:
application/json\"
Если команда введена корректно, то в выводе будут отсутствовать сообщения об ошибках:
{\"result\": {\"update_cluster_agent_use_mode\": 0}, \"errors\": \[\]}
2.2.3 Установка агента уведомлений "Спектра"#
Перейти в каталог, в который распакован архив с дистрибутивом "Спектра". Например, если распаковали архив в /root/spectrum-dist, то выполнить команду
\[root@spectrum-host \~\]# cd
/root/spectrum-dist/root/spectrum-dist/spectrum-rpm-dist-v1.1.70
И выполнить следующие команды:
\[root@spr-test-installer_v1_1 spectrum-rpm-dist-v1.1.70\]# source
/opt/skala-r/spectrum/python-modules/bin/activate
(python-modules) \[root@spr-test-installer_v1_1
spectrum-rpm-dist-v1.1.70\]# ansible-playbook -i
inventory_samples/cluster.yml deploy_spectrum_alert_agent.yml -k
Если ранее была сделана копия файла cluster.yml, то последняя команда будет иметь вид:
(python-modules) \[root@spr-test-installer_v1_1
spectrum-rpm-dist-v1.1.70\]# ansible-playbook -i \~/cluster.yml
deploy_spectrum_alert_agent.yml -k
После запуска требуется ввести пароль пользователя root для доступа к узлам кластера.
При успешном выполнении команды в отчете о запуске плейбука должны отсутствовать шаги со статусом failed, при первой установке агента уведомлений будут присутствовать шаги со статусом ignored и сообщение об ошибке с пометкой "...ignoring":
2.2.4 Установка PgAdmin#
Дистрибутив PgAdmin представляет собой tar.gz архив pgadmin_dist_alt84_rpm.tar.gz, который необходимо распаковать в произвольный каталог на хосте "Спектра", например в /root/spectrum-dist.
Распакованный архив содержит образы docker-контейнеров, необходимые для работы PgAdmin, а также скрипт установки deploy.sh.
Для установки необходимо перейти в директорию, в которую был распакован архив, и выполнить скрипт deploy.sh:
\[root@spectrum-host \~\]# mkdir -p spectrum-dist
\[root@spectrum-host \~\]# tar -xvf pgadmin-dist_altlinux84.tar.gz -C
./spectrum-dist
\[root@spectrum-host \~\]# cd spectrum-dist/pgadmin-dist
\[root@spectrum-host spectrum-rpm-dist-v1.1.70\]# ./deploy.sh
3. Установка обновлений программы#
Установка обновлений ПО "Спектр" и дополнительного ПО выполняется в случае, если на хосте "Спектра" уже существует ранее установленные версии ПО. Для установки и для обновления "Спектра" используется один и тот же пакет установочных файлов, поставляемый в виде архива с именем "spectrum-dist-altlinux8.4-v<номер версии Спектра>.tar.gz", например "spectrum-dist-altlinux8.4-v1.1.70.tar.gz".
3.1 Обновление ПО "Спектр"#
Новый архив с дистрибутивом "Спектра" необходимо распаковать в произвольный каталог на хосте "Спектра", например в /root/spectrum-dist.
Распакованный архив содержит все RPM пакеты, необходимые для работы "Спектра", а также скрипт установки install.sh и скрипт обновления update.sh.
Для обновления необходимо перейти в директорию, в которую был распакован архив, и выполнить скрипт update.sh:
\[root@spectrum-host \~\]# mkdir -p spectrum-dist
\[root@spectrum-host \~\]# tar -xvf
spectrum-dist-altlinux8.4-v1.2.0.tar.gz -C ./spectrum-dist
\[root@spectrum-host \~\]# cd spectrum-dist/spectrum-rpm-dist-v1.2.0
\[root@spectrum-host spectrum-rpm-dist-v1.2.0\]# ./update.sh
3.2 Обновление дополнительного ПО "Спектр"#
Все шаги, необходимые для обновления дополнительного ПО "Спектр", полностью повторяют шаги первичной установки. Подробно установка дополнительного ПО описана в разделе "3.2 Установка дополнительного ПО "Скала^Р Спектр".
4. Проверка программы#
4.1 Отображение веб-интерфейса#
По завершении процесса установки должен быть доступен веб-интерфейс "Спектра" через браузер по адресу http://<хост Спектра>:8092:
4.2 Проверка установки модулей#
Модули системы установлены в каталог /opt/skala-r/spectrum:
-
dashboards - конфигурация мониторинга "Спектра";
-
spectrum-api — REST API "Спектра"
-
spectrum-scheduler — модуль выполнения задач по расписанию;
-
spectrum-tasks-daemon — модуль выполнения задач по запросу;
-
spectrum-ui — файлы веб интерфейса;
-
modules/spectrum_pcs_pgsql — модуль управления кластером Postgres;
-
python-modules - дополнительные python-библиотеки, необходимые для работы "Спектра".
Проверить наличие модулей командой "ls -l":
[root@spectrum-host ~]# ls -l /opt/skala-r/spectrum
Пример вывода команды:
4.3 Проверка состояния и управление сервисами "Спектра"#
По завершении процессов установки в системе будут запущены сервисы:
-
spectrum-api.service — сервис http API, реализующего взаимодействие пользовательского интерфейса с системой;
-
spectrum-tasks.service — демон, предназначенный для выполнения задач (выполняет запрос к spectrum-api и получает список невыполненных заданий);
-
spectrum-scheduler.service - демон, предназначенный для выполнения задач по расписанию.
Логи работы spectrum-api, spectrum-tasks, spectrum-scheduler сохраняются в /var/log/spectrum/spectrum_api.log, spectrum_task_daemon.log, spectrum_scheduler.log соответственно с ротацией.
Для проверки статуса сервисов используется стандартный механизм systemctl, например:
\[root@spectrum-host \~\]# systemctl status spectrum-tasks
\[root@spectrum-host \~\]# systemctl status spectrum-api
\[root@spectrum-host \~\]# systemctl status spectrum-scheduler
Для ручной остановки, запуска или перезапуска сервисов используются стандартные механизмы systemctl, например:
\[root@spectrum-host \~\]# systemctl stop spectrum-tasks
\[root@spectrum-host \~\]# systemctl start spectrum-tasks
\[root@spectrum-host \~\]# systemctl restart spectrum-tasks
Проверить состояние сервисов при помощи systemctl можно посредством выполнения следующих команд:
\[root@spectrum-host \~\]# systemctl status spectrum-tasks
Пример активного сервиса spectrum-tasks:
\[root@spectrum-host \~\]# systemctl status spectrum-api
Пример активного сервиса spectrum-api:
\[root@spectrum-host \~\]# systemctl status spectrum-scheduler
Пример активного сервиса spectrum-scheduler:
#
4.4 Проверка состояния дополнительного ПО "Спектра"#
Проверка состояния агента "Спектра" и агента уведомлений "Спектра" выполняется на узлах кластера.
Проверка состояния агента "Спектра"
Проверить корректность настройки можно, выполнив команду:
\[root@spectrum-host \~\]# systemctl status spectrum-agent
Пример активного сервис spectrum-agent:
Проверка состояния агента уведомлений "Спектра"
Проверить корректность настройки можно, выполнив команду:
\[root@spr-uv01-node01 \~\]# pcs alert
Пример вывода команды:
В выводе команды используются имена файлов, наличие которых можно проверить при помощи команды ls:
Файл, указанный в блоке Recipient команды "pcs alert", должен содержать IP-адрес "Спектра" и id кластера, который был настроен на этапе установки дополнительного ПО "Спектр", см. раздел 3.2 данного документа. Посмотреть содержимое файла можно при помощи команды cat:
Проверка состояния PgAdmin
На хосте "Спектра" выполнить команду:
\[root@spectrum-host \~\]# docker ps
При корректной установке PgAdmin должен отобразиться список контейнеров со статусом Up. Пример вывода команды:
также, при нажатии на пункт меню "PgAdmin" в веб-интерфейсе в новой вкладке браузера должна открываться форма авторизации PgAdmin:
4.4 Просмотр логов сервисов#
4.4.1 Просмотр логов сервисов "Спектра"#
Просмотреть логи работы сервисов за интересующий период можно, используя службу журналирования логов journalctl, например:
\[root@spectrum-host \~\]# journalctl -u spectrum-tasks \--since
\"2022-10-26 11:05:00\" \--until \"2022-10-26 11:10:00\"
\[root@spectrum-host \~\]# journalctl -u spectrum-api \--since
\"2022-10-26 11:05:00\" \--until \"2022-10-26 11:10:00\"
\[root@spectrum-host \~\]# journalctl -u spectrum-scheduler \--since
\"2022-10-26 11:05:00\" \--until \"2022-10-26 11:10:00\"
Просмотреть текущие логи в режиме онлайн можно, используя службу журналирования логов journalctl, выполнив команду:
\[root@spectrum-host \~\]# journalctl -fu \<имя сервиса\>
где <имя сервиса> - имя одного из сервисов "Спектра": spectrum-api, spectrum-tasks, spectrum-scheduler, например
\[root@spectrum-host \~\]# journalctl -fu spectrum-tasks
Команда будет продолжать работу и показывать новые логи с момента запуска команды.
Для выхода из просмотра логов нажать комбинацию клавиш "ctrl+С"
Возможен также просмотр следующих лог-файлов сервисов "Спектра":
-
/var/log/spectrum/spectrum-api.log
-
/var/log/spectrum/spectrum-task-daemon.log
-
/var/log/spectrum/spectrum-scheduler.log
Для просмотра логов в режиме онлайн можно использовать команду tail:
[root@spectrum-host ~]# tail -f /var/log/spectrum/spectrum-api.log
#
4.4.2 Просмотр логов дополнительного ПО "Спектр"#
Просмотреть логи работы сервисов за интересующий период можно, используя службу журналирования логов journalctl, например:
\[root@spectrum-host \~\]# journalctl -u spectrum-agent \--since
\"2023-06-01 16:00:00\" \--until \"2023-06-01 16:05:00\"
Просмотреть текущие логи в режиме онлайн можно, используя службу журналирования логов journalctl, выполнив команду:
\[root@spectrum-host \~\]# journalctl -fu spectrum-agent
Агент "Спектра" также записывает сообщения в файл, расположенный по пути /var/log/spectrum/spectrum-agent.log
Для просмотра логов в режиме онлайн можно использовать команду tail:
\[root@spectrum-host \~\]# tail -f /var/log/spectrum/spectrum-agent.log
Агент уведомлений "Спектра" записывает сообщения только в файл, расположенный по пути /var/log/spectrum/alert_manager/alert_manager.log
Для просмотра логов в режиме онлайн можно использовать команду tail:
\[root@spectrum-host \~\]# tail -f
/var/log/spectrum/alert_manager/alert_manager.log