Действия при изменении IP-адреса диспетчера или БД
При изменении IP-адреса БД необходимо выполнить следующие действия:
-
Перейти в терминал узла с ролью Leader и сохранить текущие настройки в файл
old_secretsс помощью команды:sudo docker exec -it {ID} cat /run/secrets/LOC_SET > old_secretsID контейнера можно получить в выводе команды
docker ps. -
Открыть файл
old_secretsна редактирование. -
Найти строку
DB_HOSTи изменить зашифрованное значение на новый IP-адрес подключения:DB_HOST = '10.251.32.3'Примечание
IP-адрес 10.251.32.3 представлен в качестве примера.
-
Удалить
stackс помощью команды:docker stack rm multivdi -
Удалить старый
secretс помощью команды:docker secret rm LOC_SET -
Создать новый
secretс измененным содержимым с помощью команды:docker secret create LOC_SET old_secrets -
Пересоздать
stackдля применения новых переменных окружения с помощью команды:sudo docker stack deploy --resolve-image never -c /opt/multivdi/multivdi-stack.yml multivdi
Внимание
Если изменился также и IP-адрес диспетчера, необходимо пересоздать кластер с помощью команды:
docker swarm init --force-new-cluster
Для проверки изменения IP-адреса БД необходимо выполнить команды:
docker exec -it {ID} "cat /run/secrets/LOC_SET"
Пример
docker exec -it e3072f35e77d "cat /run/secrets/LOC_SET"
Возможные ошибки
Ошибка: Невозможно извлечь secret.
Решение:
Записать secret с настройками в контейнер Redis, который не пересоздается каждые N-секунд. Для этого:
-
Открыть файл
multivdi-stack.yml:sudo vim /opt/multivdi/multivdi-stack.yml -
Добавить в сервис
vdi-redisв полеsecretsеще одно значение:LOC_SET. -
Пересоздать
stack:stack rmstack deploy -
Выполнить команду:
redis docker exec -it {ID} cat /run/secrets/LOC_SET > old_secretsВ поле {ID} необходимо указать ID контейнера.
Примечание
При записи новых
secretsдобавленныйsecretнеобходимо убрать из Redis.