Внешнее отказоустойчивое хранилище
Дальнейшие шаги предполагают, что экземпляр 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 mitigator_postgres_1:/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 mitigator_clickhouse_1:/etc/clickhouse-server/config.d clickhouse-config docker cp mitigator_clickhouse_1:/etc/clickhouse-server/users.d clickhouse-users docker cp mitigator_clickhouse_1:/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– адрес хоста для данного экземпляра.
Полученные настройки являются рекомендованными, но могут быть при необходимости изменены, например, см. раздел «Настройка времени хранения метрик в Graphite».