Внешнее отказоустойчивое хранилище

Дальнейшие шаги предполагают, что экземпляр Mitigator´а уже установлен. В противном случае предварительно выполните установку одним из следующих способов.

Перед настройкой кластера необходимо настроить виртуальную сеть (VPN). Для ее работы нужна сетевая связность между экземплярами. Подробные сведения по настройке и необходимым доступам описаны по ссылке.

Данная схема внедрения подразумевает физическое хранение общих для всех экземпляров Mitigator´а баз данных на внешнем сервере. Работоспособность и отказоустойчивость всех СУБД обеспечивается силами администратора внешнего сервера под конкретные требования.

Внешнее отказоустойчивое хранилище

Все экземпляры разворачиваются как worker´ы (см. выше).

Если кластер собирается из Mitigator´ов, которые ранее уже работали независимо, то в ходе интеграции могут возникнуть конфликты. Поэтому на всех экземплярах кроме будущего лидера необходимо выполнить команду:

docker-compose down -v

При выполнении данной команды будут удалены настройки контрмер, журнал событий, графики и другая информация, хранимая в базах данных этих экземпляров. Если данные нужно сохранить, следует предварительно сделать резервную копию.

Схема взаимодействия:

  • Mitigator подключается к Postgres для записи и чтения настроек и журналов;
  • Mitigator оправляет в graphite метрики и обращается к его API;
  • в качестве бэкенда Graphite рекомендуется ClickHouse.

Настройка Postgres

В качестве инструмента для миграции схемы и дальнейшего управления используется утилита SHMIG.

Миграции необходимо брать прямо из контейнера используемой версии:

  1. Развернуть полноценный стенд (временно закомментировать строку #COMPOSE_FILE= в файле .env).

  2. Выполнить команду:

    docker-compose create postgres
    
  3. Скопировать скрипты миграции:

    docker cp mitigator_postgres_1:/schema schema
    
  4. Выполнить команду:

    docker-compose rm -sf postgres
    
  5. Восстановить состояние файла .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.

  1. Развернуть полноценный стенд (закомментировать строку #COMPOSE_FILE= в файле .env).

  2. Выполнить команду:

    docker-compose create clickhouse
    
  3. Выполнить команды:

    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
    
  4. Выполнить команду:

    docker-compose rm -sf clickhouse
    
  5. Восстановить состояние файла .env, раскомментировав строку #COMPOSE_FILE=.

  6. В файле .env задать переменную MITIGATOR_OWN_NAME=mitigator-1. Здесь mitigator-1 – имя экземпляра. Имя каждого экземпляра должно быть уникально.

  7. В файле .env задать переменную MITIGATOR_HOST_ADDRESS=192.0.2.1. Здесь 192.0.2.1 – адрес хоста для данного экземпляра.

Полученные настройки являются рекомендованными, но могут быть при необходимости изменены, например, см. раздел «Настройка времени хранения метрик в Graphite».