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

Инструкция описывает развертывание кластера Staffcop на Ubuntu версии 18, 20 или 22.

Проверка серверов

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

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

staffcop info

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

  1. Обновите ПО на всех серверах кластера:

sudo apt update
sudo apt upgrade

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

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

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

wget -O - http://distr.staffcop.su/stable5.8/staffcop.gpg | sudo apt-key add -
echo "deb http://distr.staffcop.su/stable5.8 stable5.8 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. Он создается при первом запуске команды staffcop-cluster deploy prepare. Найдите в нем параметр из таблицы и подставьте свои значения. Например, измените 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 будет отображаться в веб-интерфейсе.
Оно должно быть осмысленным и удобным для идентификации сервера.

api_port={порт веб-интерфейса}

Разделение портов веб-интерфейса и агентов — как настроить раздельные порты.

archive_databases={имя БД}

Сохранение архивных баз данных — как сохранить архивные БД.

Настройка при разделении портов веб-интерфейса и агентов

Если для подключения агентов и доступа к веб-интерфейсу заданы разные порты, измените параметры master_server и api_port в конфигурации /etc/staffcop/cluster.cfg.

  • в параметр master_server добавьте порт веб-интерфейса:

    master_server={IP мастер-сервера}:{порт веб-интерфейса}
    
  • в описании ноды укажите параметр api_port:

    {имя_хоста} node=0 ansible_host={адрес мастер-сервера} api_port={порт веб-интерфейса} name='{название мастер-сервера}'
    

Если используется единый порт, конфигурация остается стандартной.

Сохранение архивных баз данных

Опасно

При развертывании или обновлении кластера конфигурационный файл /etc/staffcop/config перезаписывается. Это может привести к потере настроек архивных баз данных.

Для сохранения настроек архивных БД используйте параметр archive_databases в описании узла в файле /etc/staffcop/cluster.cfg.

Пример настройки:

master_server node=0 ansible_host=192.168.0.10 name="Мастер сервер" archive_databases="archive_2021, archive_2022"
ekt_server    node=1 ansible_host=192.168.1.15 name="Екатеринбург" archive_databases="archive_2022"
msk_server    node=2 ansible_host=192.168.2.20 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 применит на сервере политики к старым событиям и перестроит отчеты. На этом этапе сервер будет функционировать, однако может возникнуть задержка в обработке новых событий. Отчеты не будут строиться, пока сервер не завершит перестройку. Время выполнения зависит от объема данных и конфигурации сервера.

Дальше

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

Последнее обновление: 14.10.26