Развертывание кластера на Ubuntu¶
Инструкция описывает развертывание кластера Staffcop на Ubuntu версии 18, 20 или 22.
Проверка серверов¶
Перед развёртыванием кластера:
Проверьте версии серверов Staffcop, которые войдут в кластер:
staffcop infoПри сборке кластера серверы с разными версиями автоматически обновятся до последней версии из конфигурации.
Обновите ПО на всех серверах кластера:
sudo apt update sudo apt upgrade
Подготовка мастер-сервера¶
Установите пакеты:
Добавьте в список репозиториев системы репозитории 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
Обновите пакеты Ubuntu:
sudo apt-get update sudo apt-get upgrade
Установите пакет оркестрации:
sudo apt install staffcop-orchestrationsshpass установится автоматически как зависимость.
Установите пакет оркестрации:
sudo dpkg -i staffcop-orchestration-0.2.75-master.deb
Запустите предварительную настройку кластера.
Важно! Запускайте команду без sudo.
staffcop-cluster deploy prepare
В результате выполнения команды будет создан конфигурационный файл кластера /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='{название для мастер-сервера}' |
Имя хоста, номер узла, адрес и отображаемое в интерфейсе имя. |
api_port={порт веб-интерфейса} |
Разделение портов веб-интерфейса и агентов — как настроить раздельные порты. |
archive_databases={имя БД} |
Сохранение архивных баз данных — как сохранить архивные БД. |
Ниже приведено содержимое файла, в параметрах которого указаны реальные данные.
[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.8
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="Москва" # замените на свои значения
Настройка при разделении портов веб-интерфейса и агентов¶
Если для подключения агентов и доступа к веб-интерфейсу заданы разные порты, измените параметры 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
Пошаговая сборка кластера¶
Если нужен больший контроль над процессом, используйте последовательный набор команд. Команды дублируют основную сборку:
Настройте базу данных 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применит на сервере политики к старым событиям и перестроит отчеты. На этом этапе сервер будет функционировать, однако может возникнуть задержка в обработке новых событий. Отчеты не будут строиться, пока сервер не завершит перестройку. Время выполнения зависит от объема данных и конфигурации сервера.
Дальше
Последнее обновление: 14.10.26