Внешнее отказоустойчивое хранилище
Дальнейшие шаги предполагают, что экземпляр MITIGATOR уже установлен. В противном случае предварительно выполните установку одним из следующих способов.
Перед настройкой кластера необходимо настроить виртуальную сеть (VPN). Для ее работы нужна сетевая связность между экземплярами. Подробные сведения по настройке и необходимым доступам описаны по ссылке.
Данная схема внедрения подразумевает физическое хранение общих для всех экземпляров MITIGATOR баз данных на внешнем сервере. Работоспособность и отказоустойчивость всех СУБД обеспечивается силами администратора внешнего сервера под конкретные требования.
Для корректной работы системы всем обработчикам пакетов, должно быть доступно одинаковое количество системных ресурсов.
Все экземпляры разворачиваются как worker´ы.
Если кластер собирается из экземпляров MITIGATOR, которые ранее уже работали независимо, то в ходе интеграции могут возникнуть конфликты. Поэтому на всех экземплярах кроме будущего лидера необходимо выполнить команду:
docker-compose down -v
При выполнении данной команды будут удалены настройки контрмер, журнал событий, графики и другая информация, хранимая в базах данных этих экземпляров. Если данные нужно сохранить, следует предварительно сделать резервную копию.
Схема взаимодействия:
- MITIGATOR подключается к Postgres для записи и чтения настроек и журналов;
- MITIGATOR оправляет в graphite метрики и обращается к его API;
- в качестве бэкенда Graphite рекомендуется ClickHouse.
Настройка Postgres
В качестве инструмента для миграции схемы и дальнейшего управления используется утилита SHMIG.
Миграции необходимо брать прямо из контейнера используемой версии:
-
Развернуть полноценный стенд (временно закомментировать строку
#COMPOSE_FILE=
в файле.env
). -
Выполнить команду:
docker-compose create postgres
-
Скопировать скрипты миграции:
docker cp $(docker-compose ps -q postgres):/schema schema
-
Выполнить команду:
docker-compose rm -sf postgres
-
Восстановить состояние файла
.env
, раскомментировав строку#COMPOSE_FILE=
.
На уровне Postgres необходимо создать базу mitigator
. Скрипты миграций
создадут пользователя backend
и назначат ему необходимые права. После чего
на уровне СУБД нужно разрешить подключение для этого пользователя.
Экземпляры MITIGATOR подключаются к порту 5432/tcp. Строку подключения можно явно переопределить, по умолчанию используется:
services:
backend:
environment:
BACKEND_DATABASE_URI: "postgres://backend@${MITIGATOR_STORAGE_HOST}/mitigator?sslmode=disable"
Настройка Graphite
MITIGATOR отправляет метрики в формате
Graphite plaintext
protocol по адресу: ${MITIGATOR_STORAGE_HOST}:2003
(TCP).
Если нужно отправлять их в несколько баз, адреса можно указать явно через запятую:
services:
fwstats:
environment:
FWSTATS_GRAPHITE_ADDRESS: "${MITIGATOR_STORAGE_HOST}:2003,another-host:2003"
MITIGATOR обращается к Graphite API по URL:
http://${MITIGATOR_STORAGE_HOST}:3080/render/
.
Настройка ClickHouse
Только если ClickHouse используется в качестве бэкенда Graphite.
-
Развернуть полноценный стенд (закомментировать строку
#COMPOSE_FILE=
в файле.env
). -
Выполнить команду:
docker-compose create clickhouse
-
Выполнить команды:
docker cp $(docker-compose ps -q clickhouse):/etc/clickhouse-server/config.d clickhouse-config docker cp $(docker-compose ps -q clickhouse):/etc/clickhouse-server/users.d clickhouse-users docker cp $(docker-compose ps -q clickhouse):/docker-entrypoint-initdb.d clickhouse
-
Выполнить команду:
docker-compose rm -sf clickhouse
-
Восстановить состояние файла
.env
, раскомментировав строку#COMPOSE_FILE=
. -
В файле
.env
задать переменнуюMITIGATOR_OWN_NAME=mitigator-1
. Здесьmitigator-1
– имя экземпляра. Имя каждого экземпляра должно быть уникально. -
В файле
.env
задать переменнуюMITIGATOR_HOST_ADDRESS=192.0.2.1
. Здесь192.0.2.1
– адрес MGMT-интерфейса для данного экземпляра.
Полученные настройки являются рекомендованными, но могут быть при необходимости изменены, например, см. раздел «Настройка времени хранения метрик в Graphite».