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

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

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

  • объединять настройки политик для всех АРМ в кластере;

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

  • получать отчёты по всем пользователям кластера;

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

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

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

  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.

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

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

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

Откройте конфигурационный файл /etc/staffcop/cluster.cfg.

Примерное содержание файла /etc/staffcop/cluster.cfg [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=password2

staffcop_branch=stable5.4

sql_host=localhost
sql_port=5432
sql_database=staffcop
sql_user=staffcop
sql_password=password1

# Master server

api_key=apikey1
master_api_key=apikey1
master_server=10.10.14.71

[node]
node1 node=0 ansible_host=10.10.14.71 name="Мастер сервер"
node2 node=1 ansible_host=10.10.14.72 name="Слейв 1"
node3 node=2 ansible_host=10.10.14.73 name="Слейв 2"

В созданном файле измените строки:

Строка

Содержимое

ansible_user=…

Имя пользователя (должно совпадать на всех нодах)

ansible_ssh_pass=…

Пароль пользователя (должно совпадать на всех нодах)

ansible_sudo_pass=…

clickhouse_password=…

Пароль от базы данных Clickhouse * (см. примечание)

sql_password=…

Пароль от базы данных PostgreSQL * (см. примечание)

master_server=…

Адрес мастер-сервера

… node=0 ansible_host=… name=“…“

Имя хоста, адрес и название для мастер-сервера

… node=1 ansible_host=… name=“…“

Имя хоста, адрес и название первого слейв-сервера

… node=3 ansible_host=… name=“…“

Имя хоста, адрес и название второго слейв-сервера

Примечание

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

После внесения всех изменений проверьте правильность настроек и доступность узлов кластера. Для этого заново запустите:

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. Если в ходе установки не возникло ошибок, кластер настроен и готов к использованию.

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

Примечание

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

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

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

../_images/cluster_1.png

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

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

../_images/cluster_2.png

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

../_images/cluster-3.png