Обновление до v25.06
Перед тем, как приступить к инструкции ниже, нужно сделать резервную копию.
Подготовка к обновлению
-
Убедиться, что установлена Docker Compose версии 2:
docker-compose version --shortОбновить при необходимости. MITIGATOR более не поддерживает Docker Compose версии 1.
-
Убрать из файла
.envэлементы, не поддерживаемые Docker Compose v2:sed -e 's/\b\(docker-compose.yml\):\1/\1/' -i .env -
При использовании сетевых адаптеров NVIDIA (Mellanox) обновить OFED до актуальной версии.
-
На всех экземплярах с ClickHouse скачать файл миграции метрик:
wget https://docs.mitigator.ru/master/kb/update2506/update2506.sql -O /srv/mitigator/update2506.sql -
На всех экземплярах в файл
.envдобавить переменнуюMITIGATOR_PUBLIC_ADDRESS. Чтобы сохранить существующее поведение, задать её такой же, какMITIGATOR_HOST_ADDRESS.Если
MITIGATOR_HOST_ADDRESSсодержит доменное имя, рекомендуется заменить его на IP-адрес, чтобы контейнеры не теряли связность при проблемах с DNS.MITIGATOR_PUBLIC_ADDRESSможет содержать как IP-адрес, так и доменное имя. -
Выключить MITIGATOR:
docker-compose down -
На всех экземплярах изменить владельца данных экземпляра:
chown -R 65534:65534 /var/lib/docker/volumes/mitigator_own_id/_data -
На всех экземплярах удалить файлы 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Обновление системы
После обновления и запуска системы начинается процедура миграции в базе данных. Пока миграция выполняется, Web-интерфейс будет недоступен. При большом объеме базы эта процедура может занимать продолжительное время. Отследить момент окончания миграций можно с помощью выполнения команды
docker-compose logs -f postgres | grep readyВ выдаче должно быть 2 записи.
Обновить все экземпляры MITIGATOR согласно стандартной процедуре обновления.
Миграция данных после обновления
После запуска MITIGATOR выполнить миграцию метрик:
docker-compose exec -T clickhouse clickhouse-client -mn < update2506.sql && \
docker-compose restart carbon-clickhouseМиграция метрик может занять продолжительное время. В этот промежуток времени защитные функции MITIGATOR полностью работоспособны, но не будут отображаться графики.
Сообщения печатаются только в случае ошибок. В этом случае текст сообщения нужно сообщить разработчикам.