Graphite на отдельном сервере

Перенос Graphite на отдельный сервер позволяет разделить нагрузку на два сервера.

До переноса архива метрик, в интерфейсе MITIGATOR можно будет наблюдать только новые графики.

Дальше по тексту Server1 – сервер с MITIGATOR, Server2 – сервер, на который выполняется перенос.

Предполагается, что на Server2 уже установлен Docker и docker-compose и имеется способ доставки файловой базы с Server1 на Server2 (объем данных может составлять более 100 ГБ в зависимости от количества политик).

Версии MITIGATOR на Server1 и на Server2 должны совпадать, для чего:

Записать в файл .env для Server1 и Server2 строку с версией:

VERSION=vXX.XX

Здесь vXX.XX – целевая версия (например: v20.08 или v20.12.1).

Подготовка сервера хранения

  1. На Server2 создать docker-compose.yml:

    mkdir -p /opt/mitigator-graphite

    Скачать docker-compose.yml:

    wget https://docs.mitigator.ru/v23.08/dist/grafbase/docker-compose.yml \
        -O /opt/mitigator-graphite/docker-compose.yml
  2. Создать службу для запуска на Server2:

    Скачать файл сервиса:

    wget https://docs.mitigator.ru/v23.08/dist/docker-compose@.service \
        -O /etc/systemd/system/docker-compose@.service

    Активировать службу:

    systemctl enable docker-compose@mitigator-graphite
  3. На Server2 запустить сервисы:

    • Войти на docker.mitigator.ru

      docker login docker.mitigator.ru
    • Перейти в рабочую директорию

      cd /opt/mitigator-graphite
    • Загрузить образы

      docker-compose pull
    • Запустить сервис

      systemctl start docker-compose@mitigator-graphite

Переключение графиков на второй сервер

  1. На Server1 создать, либо дополнить docker-compose.override.yml следующим:

    version: "2.2"
    services:
      backend:
        environment:
          BACKEND_GRAPHITE_URL: "http://192.0.2.10:3080/render/"
    
      fwstats:
        environment:
          FWSTATS_GRAPHITE_ADDRESS: "192.0.2.10:2003"
    
      clickhouse:
        scale: 0
    
      graphite-clickhouse:
        scale: 0
    
      carbon-clickhouse:
        scale: 0
    
      carbonapi:
        scale: 0
    
      grafana:
        scale: 0

    Здесь 192.0.2.10 – условный адрес Server2, который необходимо заменить на действительный адрес.

  2. Применить параметры:

    Внимание! Будет перезагружен сервис бэкенда и BGP speaker.

    docker-compose up -d --scale clickhouse=1

    Эта команда запускает временный экземпляр ClickHouse для переноса данных из него на отдельный сервер. Если перенос не требуется, можно перейти к разделу «Завершение».

Перенос данных

  1. На старом сервере сделать резервную копию метрик по инструкции.

  2. Переместить metrics.tgz на новый сервер.

  3. На новом сервере восстановить резервную копию метрик по инструкции.

    На первом шаге задать VOLUME=mitigator-graphite_clickhouse.

Завершение

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

После этого остановить и удалить контейнер ClickHouse на Server1:

docker-compose stop clickhouse
docker-compose rm clickhouse

Чтобы освободить место на Server1, можно удалить том ClickHouse, если он больше не нужен:

docker volume rm mitigator_clickhouse

Обновление Server2

Информация

Перед обновлением настоятельно рекомендуется сделать резервную копию.

  1. Остановить MITIGATOR:

    systemctl stop docker-compose@mitigator-graphite
  2. Обновить docker-compose.yml в /srv/mitigator:

    wget https://docs.mitigator.ru/v23.08/dist/grafbase/docker-compose.yml \
        -O /opt/mitigator-graphite/docker-compose.yml
  3. Обновить .env:

    • Выставить VERSION=v21.04.0 (или более новую минорную).

Миграция графиков при обновлении до версии 21.04

  1. Скачать файл миграции update2104.sql в /srv/mitigator.

  2. Запустить ClickHouse:

    docker-compose up -d clickhouse
  3. Выполнить миграцию:

    docker-compose exec -T clickhouse clickhouse-client -mn < update2104.sql

    Сообщения печатаются только в случае ошибок. В этом случае текст сообщения нужно сообщить разработчикам.

  4. Убедиться, что в файле docker-compose.override.yml на Server1 указан порт 3080:

        version: "2.2"
        services:
          backend:
            environment:
              BACKEND_GRAPHITE_URL: "http://192.0.2.10:3080/render/"

Завершение обновления

Запустить службу MITIGATOR:

systemctl start docker-compose@mitigator-graphite