Обновление до v25.06

Внимание

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

Подготовка к обновлению

  1. Убедиться, что установлена Docker Compose версии 2:

    docker-compose version --short

    Обновить при необходимости. MITIGATOR более не поддерживает Docker Compose версии 1.

  2. Убрать из файла .env элементы, не поддерживаемые Docker Compose v2:

    sed -e 's/\b\(docker-compose.yml\):\1/\1/' -i .env
  3. При использовании сетевых адаптеров NVIDIA (Mellanox) обновить OFED до актуальной версии.

  4. На всех экземплярах с ClickHouse скачать файл миграции метрик:

    wget https://docs.mitigator.ru/master/kb/update2506/update2506.sql -O /srv/mitigator/update2506.sql
  5. На всех экземплярах в файл .env добавить переменную MITIGATOR_PUBLIC_ADDRESS. Чтобы сохранить существующее поведение, задать её такой же, как MITIGATOR_HOST_ADDRESS.

    Если MITIGATOR_HOST_ADDRESS содержит доменное имя, рекомендуется заменить его на IP-адрес, чтобы контейнеры не теряли связность при проблемах с DNS. MITIGATOR_PUBLIC_ADDRESS может содержать как IP-адрес, так и доменное имя.

  6. Выключить MITIGATOR:

    docker-compose down
  7. На всех экземплярах изменить владельца данных экземпляра:

    chown -R 65534:65534 /var/lib/docker/volumes/mitigator_own_id/_data
  8. На всех экземплярах удалить файлы web-интерфейса старой версии:

    docker volume rm mitigator_frontend

Обновление особых настроек

Если в контейнеры монтировались файлы с особыми настройками Postgres (postgresql.conf) или Nginx (nginx.conf), то необходимо обновить эти файлы для использования с образами новой версии.

Обновление особых настроек Postgres

Проверить, что postgresql.conf монтируется:

docker-compose config | grep postgresql.conf

Если postgresql.conf монтируется, вывод команды будет содержать следующие строки:

source: /srv/mitigator/postgresql.conf
target: /etc/postgresql/11/main/postgresql.conf

Если таких строк нет, то postgresql.conf не монтируется, обновлять его не нужно. Путь к файлу на хосте может отличаться от /srv/mitigator/postgresql.conf, тогда в следующей команде его нужно скорректировать.

Обновить postgresql.conf:

sed -e "/include '\/database_identifier'/d" -i /srv/mitigator/postgresql.conf

Обновление особых настроек Nginx

Проверить, что nginx.conf монтируется:

docker-compose config | grep nginx.conf

Если nginx.conf монтируется, вывод команды будет содержать следующие строки:

source: /srv/mitigator/nginx.conf
target: /etc/nginx/nginx.conf

Если таких строк нет, то nginx.conf не монтируется, обновлять его не нужно. Путь к файлу на хосте может отличаться от /srv/mitigator/nginx.conf, тогда в следующей команде его нужно скорректировать.

Обновить nginx.conf:

sed -e "/user www-data;/d" -e "s|pid /run/nginx.pid|pid /var/lib/nginx/nginx.pid|" -i /srv/mitigator/nginx.conf

Обновление особых настроек HTTP(S)

Проверить, что mitigator.conf монтируется:

docker-compose config | grep mitigator.conf

Если mitigator.conf монтируется, вывод команды будет содержать следующие строки:

source: /srv/mitigator/mitigator.conf
target: /etc/nginx/conf.d/mitigator.conf

Если таких строк нет, то mitigator.conf не монтируется, обновлять его не нужно. Путь к файлу на хосте может отличаться от /srv/mitigator/mitigator.conf, тогда в следующей команде его нужно скорректировать.

Обновить mitigator.conf:

sed -e 's/listen 80/listen 8000/' -e 's/listen 443/listen 8443/' -i /srv/mitigator/mitigator.conf

Обеспечение доступа к ключу и сертификату HTTPS

Следующие инструкции предназначены для случая, когда используется собственный сертификат HTTPS для доступа к MITIGATOR. Nginx с настройками по умолчанию использует внутри контейнера ключ /etc/nginx/cert.key и сертификат /etc/nginx/cert.crt. Если в файле особых настроек HTTP(S) заданы иные пути, всюду ниже их нужно скорректировать.

Проверить, что /etc/nginx/cert.key монтируется:

docker-compose config | grep /etc/nginx/cert.key

Если cert.key монтируется, вывод команды будет содержать следующие строки:

source: /srv/mitigator/cert.key
target: /etc/nginx/cert.key

Если таких строк нет, то cert.key не монтируется, никаких действий не нужно. Путь к файлу на хосте может отличаться от /srv/mitigator/cert.key, тогда в следующей команде его нужно скорректировать. Аналогично в них нужно скорректировать путь к сертификату /srv/mitigator/cert.crt.

Изменить владеющую файлами ключа и сертификата группу и разрешить её членам чтение файла:

chgrp 33 /srv/mitigator/cert.key /srv/mitigator/cert.crt
chmod g=r /srv/mitigator/cert.key /srv/mitigator/cert.crt

Обновление системы

Обновить все экземпляры MITIGATOR согласно стандартной процедуре обновления.

Миграция данных после обновления

После запуска MITIGATOR выполнить миграцию метрик:

docker-compose exec -T clickhouse clickhouse-client -mn < update2506.sql && \
docker-compose restart carbon-clickhouse

Миграция метрик может занять продолжительное время. В этот промежуток времени защитные функции MITIGATOR полностью работоспособны, но не будут отображаться графики.

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