Горизонтальное масштабирование¶
Начиная с версии 5.2 в Staffcop Enterprise доступен компонент Горизонтальное масштабирование, который позволяет создавать кластер из нескольких отдельных серверов Staffcop.
Преимущества:
объединение настроек политик: настройки политик для всех серверов Staffcop в кластере централизованы;
единая веб-консоль: информация со всех АРМ кластера отображается в одной веб-консоли;
объединённые отчёты: получение отчетов по всем пользователям кластера;
доступ ко всем узлам: всем администраторам системы имеют доступ ко всем узлам кластера.
Системные требования¶
Мастер-сервер — это центральный сервер для управления кластером. Он предоставляет инструменты для мониторинга, анализа и управления данными, которые поступают с подчиненных серверов кластера.
Для корректной работы убедитесь:
что мастер-сервер соответствует общим требованиям к серверу,
у вас достаточно места на диске: при создании кластера в обязательном порядке автоматически устанавливаются ClickHouse и PostgreSQL.
Подробнее о требованиях — в статье Сервер и базы данных.
Внимание
Функционал кластера оптимизирован для новых установок. Интеграция работающего сервера с данными возможна, но не рекомендуется при большом объеме данных. При миграции такого сервера потребуется выполнение ресурсоемких операций неприемлемой длительности, прерывание которых может привести к потере целостности данных. Для оценки возможности интерграции обратитесь в техническую поддержку.
Предварительная настройка¶
Перед развёртыванием кластера:
Проверьте версию серверов Staffcop, которые будут включены в кластер:
sudo staffcop infoВо время сборки кластера разные версии автоматически обновятся до последней версии, указанной в конфигурации.
Обновите ПО на всех серверах, которые будут входить в кластер:
sudo apt update sudo apt upgrade
Подготовка мастер-сервера¶
Установите пакеты:
Добавьте в список репозиториев системы репозитории 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
Обновите пакеты Ubuntu:
sudo apt-get update sudo apt-get upgrade
Установите пакет оркестрации:
sudo apt install staffcop-orchestrationsshpass установится автоматически как зависимость.
Установите пакет оркестрации:
sudo dpkg -i staffcop-orchestration-0.2.5-master.deb
Запустите предварительную настройку кластера.
Важно! Запускайте команду без sudo.
staffcop-cluster deploy prepare
В результате выполнения команды будет создан конфигурационный файл кластера /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
будет отображаться в веб-интерфейсе.
Оно должно быть осмысленным и удобным для идентификации сервера.
Ниже приведено содержимое файла, в параметрах которого указаны реальные данные.
[all:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
# Connection to node
ansible_connection=ssh
ansible_user=support # оставьте или измените на свое значение
ansible_ssh_pass=support # оставьте или измените на свое значение
ansible_sudo_pass=support # оставьте или измените на свое значение
ansible_python_interpreter=/usr/bin/python3
# Cluster configuration
clickhouse_database=staffcop
clickhouse_host=localhost
clickhouse_port=9000
clickhouse_user=staffcop
clickhouse_password=b267th54hdgf2f596yu794n # измените, если меняли пароль
staffcop_branch=stable5.4
sql_host=localhost
sql_port=5432
sql_database=staffcop
sql_user=staffcop
sql_password=kfuh4000fnf3nn33llm9jnmerm85 # укажите любой пароль
# Master server
api_key=bf89234d57adf01e654c8c3a1f5bbf89e203e439a45cdb8a25bb1172f # замените на свой ключ
master_api_key=c1f4a8f7489e462e3b71d9391f2a8f0fb89064a9e9278120fba7 # замените на свой ключ
master_server=192.168.1.1
[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="Москва" # замените на свои значения
Проверьте правильность настроек и доступность узлов кластера с помощью команды:
staffcop-cluster deploy prepare
После успешной проверки переходите к сборке кластера.
Сборка кластера¶
Примечание
В ходе сборки будут настроены все основные элементы кластера. Недостающие элементы (сервер Staffcop, PostgreSQL, ClickHouse) будут установлены и настроены.
Выполните команду для сборки кластера:
staffcop-cluster deploy
Это комплексная команда, включающая в себя все необходимые процедуры и дополнительные настройки. Выполнение команды может занять длительное время.
Чтобы получить больший контроль над процессом сборки кластера, используйте последовательный набор команд, дублирующих основную.
Пошаговая сборка кластера:
Настройте базу данных PostgreSQL:
staffcop-cluster deploy postgresql
Настройте базу данных ClickHouse:
staffcop-cluster deploy clickhouse
Настройте серверы Staffcop, входящие в кластер:
staffcop-cluster deploy server
Настройте узлы кластера (ноды):
staffcop-cluster deploy node
Если в ходе установки не возникло ошибок, кластер настроен и готов к использованию.
Если на слейв-серверах есть события, которые поступили до инициализации кластера, выполните на ноде команду для ее миграции кластер:
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 на слейв-серверах не отобразится.
При выборе режима отображения Cluster в Линзе событий будут показаны все события на всех серверах кластера.
Отследить, на каком из серверов кластера произошло событие, можно в Линзе событий в строке Сервер.
Если вы удалите агент и его данные с нода, в Конструкторе кластера останется запись о компьютере, но Линза событий не будет содержать события.
Как добавить или убрать ноду в кластер Staffcop¶
Добавить ноду¶
Откройте для редактирования файл конфигурации кластера /etc/staffcop/cluster.cfg.
Добавьте новую ноду в секцию
[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="Новая нода" # новая нода
На сервере с установленным пакетом
staffcop-orchestration
обновите кластер с помощью команды синхронизации конфигурации кластера:
staffcop-cluster deployДождитесь завершения команды. Завершение без ошибок подтвердит, что конфигурация успешно обновлена на всех нодах.
Запустите миграцию на новой ноде для отображения в кластере полученных ранее, до включения в кластер, данных.
Примечание
Если на сервере есть данные, время выполнения миграции будет зависеть от их объема и может занять значительное время. Планируйте миграцию с учётом этого фактора.
Подключитесь к новой ноде и выполните команду миграции:
staffcop cluster migrate <номер_ноды>Например:
staffcop cluster migrate 3
Удалить ноду¶
Откройте для редактирования файл конфигурации кластера /etc/staffcop/cluster.cfg.
В секции
[node]
найдите и удалите строку с нодой, которую хотите убрать.На сервере с установленным
staffcop-orchestration
выполните команду для обновления конфигурации на всех нодах:
staffcop-cluster deployУбедитесь, что команда завершилась без ошибок.
Примечание
Удалённая из конфигурации нода будет исключена из конфигурации кластера. Она прекратит синхронизацию с мастером и продолжит работать автономно.