Внешнее отказоустойчивое хранилище
Дальнейшие шаги предполагают, что экземпляр 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– адрес для доступа из контейнеров к хосту. Обычно это IP-адрес MGMT-интерфейса для данного экземпляра. Нежелательно использовать доменные имена: при сбоях DNS нарушится связность.
- 
В файле .envзадать переменнуюMITIGATOR_PUBLIC_ADDRESS=192.0.2.1. Здесь192.0.2.1– IP-адрес или доменное имя для клиентов API и UI. Обычно совпадает по значению сMITIGATOR_HOST_ADDRESS.
Полученные настройки являются рекомендованными, но могут быть при необходимости изменены, например, см. раздел «Настройка времени хранения метрик в Graphite».
