Горизонтальное масштабирование

Начиная с версии 5.2 в Staffcop Enterprise доступен компонент Горизонтальное масштабирование, который позволяет создавать кластер из нескольких отдельных серверов Staffcop.

Преимущества:

  • объединение настроек политик: настройки политик для всех серверов Staffcop в кластере централизованы;

  • единая веб-консоль: информация со всех АРМ кластера отображается в одной веб-консоли;

  • объединённые отчёты: получение отчетов по всем пользователям кластера;

  • доступ ко всем узлам: всем администраторам системы имеют доступ ко всем узлам кластера.

Системные требования

Мастер-сервер — это центральный сервер для управления кластером. Он предоставляет инструменты для мониторинга, анализа и управления данными, которые поступают с подчиненных серверов кластера.

Для корректной работы убедитесь:

  • что мастер-сервер соответствует общим требованиям к серверу,

  • у вас достаточно места на диске: при создании кластера в обязательном порядке автоматически устанавливаются ClickHouse и PostgreSQL.

Подробнее о требованиях — в статье Сервер и базы данных.

Внимание

Функционал кластера оптимизирован для новых установок. Интеграция работающего сервера с данными возможна, но не рекомендуется при большом объеме данных. При миграции такого сервера потребуется выполнение ресурсоемких операций неприемлемой длительности, прерывание которых может привести к потере целостности данных. Для оценки возможности интерграции обратитесь в техническую поддержку.

Предварительная настройка

Перед развёртыванием кластера:

  1. Проверьте версию серверов Staffcop, которые будут включены в кластер:

sudo staffcop info

Во время сборки кластера разные версии автоматически обновятся до последней версии, указанной в конфигурации.

  1. Обновите ПО на всех серверах, которые будут входить в кластер:

sudo apt update
sudo apt upgrade

Подготовка мастер-сервера

  1. Установите пакеты:

  1. Добавьте в список репозиториев системы репозитории Staffcop:

wget -O - http://distr.staffcop.su/stable5.4/staffcop.gpg | sudo apt-key add -
echo "deb http://distr.staffcop.su/stable5.4 stable5.4 non-free" | sudo tee /etc/apt/sources.list.d/staffcop.list
  1. Обновите пакеты Ubuntu:

sudo apt-get update
sudo apt-get upgrade
  1. Установите пакет оркестрации:

sudo apt install staffcop-orchestration
sshpass установится автоматически как зависимость.
  1. Запустите предварительную настройку кластера.

Важно! Запускайте команду без sudo.

staffcop-cluster deploy prepare
  1. В результате выполнения команды будет создан конфигурационный файл кластера /etc/staffcop/cluster.cfg.

Если конфигурационный файл успешно создан, предварительная настройка закончена. Переходите к развёртыванию кластера.

Развёртывание кластера

Настройка конфигурации

В файле найдите параметр из таблицы и подставьте вместо фигурных скобок и плейсхолдера свои значения. Например, измените ansible_user={имя пользователя} на ansible_user=admin_user. Таким образом замените значения параметров из таблицы, остальные строки оставьте в файле как есть. Обратите внимание, что вы можете оставить предустановленные имя пользователя, пароли для SSH и sudo.

Параметр

Комментарий и пример

ansible_user={имя пользователя}

Должен совпадать на всех нодах.
Вы можете оставить предустановленное имя или установить своё.

ansible_ssh_pass={пароль пользователя}

Пароль для SSH-доступа.
Должен совпадать на всех нодах.
Вы можете оставить предустановленный пароль или установить свой.

ansible_sudo_pass={пароль для sudo}

Пароль для команд через sudo.
Должен совпадать на всех нодах.
Вы можете оставить предустановленный пароль или установить свой.

clickhouse_password={пароль базы данных ClickHouse}

Укажите пароль только в случае, если вы изменили его при отдельной настройке мастер-сервера.

sql_password={пароль базы данных PostgreSQL}

Укажите любой пароль, иначе мастер-сервер не соберётся.

master_server={IP Мастер сервера}

IP-адрес мастер-сервера.

api_key={Ключ API}

Ключ API для доступа к API-сервисам.

master_api_key={Мастер ключ API}

Ключ API для мастер-сервера.

{имя хоста} node=0 ansible_host={адрес мастер-сервера} name='{название для мастер-сервера}'

Имя хоста, номер узла, адрес и отображаемое в интерфейсе имя.
Имя хоста должно содержать только латинские буквы (a-z, A-Z), цифры (0-9)
и символ подчеркивания (_). Не может начинаться с цифры или подчеркивания

Нумерация узлов node=n начинается с 0 для мастер-сервера, ноды слейв-сервера нумеруются с цифры 1.

Значение поля name будет отображаться в веб-интерфейсе.
Оно должно быть осмысленным и удобным для идентификации сервера.

Проверьте правильность настроек и доступность узлов кластера с помощью команды:

staffcop-cluster deploy prepare

После успешной проверки переходите к сборке кластера.

Сборка кластера

Примечание

В ходе сборки будут настроены все основные элементы кластера. Недостающие элементы (сервер Staffcop, PostgreSQL, ClickHouse) будут установлены и настроены.

Выполните команду для сборки кластера:

staffcop-cluster deploy

Это комплексная команда, включающая в себя все необходимые процедуры и дополнительные настройки. Выполнение команды может занять длительное время.

Чтобы получить больший контроль над процессом сборки кластера, используйте последовательный набор команд, дублирующих основную.

Пошаговая сборка кластера:

  1. Настройте базу данных PostgreSQL:

staffcop-cluster deploy postgresql
  1. Настройте базу данных ClickHouse:

staffcop-cluster deploy clickhouse
  1. Настройте серверы Staffcop, входящие в кластер:

staffcop-cluster deploy server
  1. Настройте узлы кластера (ноды):

staffcop-cluster deploy node
  1. Если в ходе установки не возникло ошибок, кластер настроен и готов к использованию.

  2. Если на слейв-серверах есть события, которые поступили до инициализации кластера, выполните на ноде команду для ее миграции кластер:

staffcop cluster migrate 1

где 1 — номер ноды в конфиге /etc/staffcop/cluster.cfg в секции node: node2 node=1 ansible_host=<IP слейв-сервера> name="имя слейв-сервера".

Внимание

После миграции ID команда staffcop cluster migrate 1 применит на сервере политики к старым событиям и перестроит отчеты. На этом этапе сервер будет функционировать, однако может возникнуть задержка в обработке новых событий. Отчеты не будут строиться, пока сервер не завершит перестройку. Время выполнения зависит объема данных и конфигурация сервера.

Начало работы

Примечание

Перед началом работы активируйте на мастер-сервере лицензию с включенным компонентом Горизонтальное масштабирование. В лицензии должно быть указано количество нод кластера (серверов, входящих в состав кластера с учётом мастер-сервера).

После создания кластера, слейв-сервера будут периодически синхронизироваться с мастер-сервером, получая обновления по настройкам, политикам и списку администраторов системы.

В веб-интерфейсе сервера в разделе выбора базы данных вместе со стандартными PostgreSQL и ClickHouse станет доступен режим Cluster.

Примечание

Для правильной работы режима Cluster активируйте лицензию с опцией Горизонтальное масштабирование на всех слейв-серверах. В противном случае режим Cluster на слейв-серверах не отобразится.

../_images/cluster_1.png

При выборе режима отображения Cluster в Линзе событий будут показаны все события на всех серверах кластера.

Отследить, на каком из серверов кластера произошло событие, можно в Линзе событий в строке Сервер.

../_images/cluster_2.png

Если вы удалите агент и его данные с нода, в Конструкторе кластера останется запись о компьютере, но Линза событий не будет содержать события.

Как добавить или убрать ноду в кластер Staffcop

Добавить ноду

  1. Откройте для редактирования файл конфигурации кластера /etc/staffcop/cluster.cfg.

  2. Добавьте новую ноду в секцию [node], например:

[node]
master_server node=0 ansible_host=192.168.0.10 name="Мастер сервер"
ekt_server    node=1 ansible_host=192.168.1.15 name="Екатеринбург"
msk_server    node=2 ansible_host=192.168.2.20 name="Москва"
nsk_sevver    node=3 ansible_host=192.168.3.25 name="Новая нода" # новая нода
  1. На сервере с установленным пакетом staffcop-orchestration обновите кластер с помощью команды синхронизации конфигурации кластера:

staffcop-cluster deploy

Дождитесь завершения команды. Завершение без ошибок подтвердит, что конфигурация успешно обновлена на всех нодах.

  1. Запустите миграцию на новой ноде для отображения в кластере полученных ранее, до включения в кластер, данных.

Примечание

Если на сервере есть данные, время выполнения миграции будет зависеть от их объема и может занять значительное время. Планируйте миграцию с учётом этого фактора.

Подключитесь к новой ноде и выполните команду миграции:

staffcop cluster migrate <номер_ноды>

Например:

staffcop cluster migrate 3

Удалить ноду

  1. Откройте для редактирования файл конфигурации кластера /etc/staffcop/cluster.cfg.

  2. В секции [node] найдите и удалите строку с нодой, которую хотите убрать.

  3. На сервере с установленным staffcop-orchestration выполните команду для обновления конфигурации на всех нодах:

staffcop-cluster deploy

Убедитесь, что команда завершилась без ошибок.

Примечание

Удалённая из конфигурации нода будет исключена из конфигурации кластера. Она прекратит синхронизацию с мастером и продолжит работать автономно.