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/dist/grafbase/docker-compose.yml \
        -O /opt/mitigator-graphite/docker-compose.yml
    
  2. Создать службу для запуска подсистем на Server2:

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

    wget https://docs.mitigator.ru/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/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