Действия при изменении IP-адреса диспетчера или БД
При изменении IP-адреса БД необходимо выполнить следующие действия:
-
Перейти в терминал узла с ролью Leader и сохранить текущие настройки в файл
old_secrets
с помощью команды:sudo docker exec -it {ID} cat /run/secrets/LOC_SET > old_secrets
ID контейнера можно получить в выводе команды
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 rm
stack deploy
-
Выполнить команду:
redis docker exec -it {ID} cat /run/secrets/LOC_SET > old_secrets
В поле {ID} необходимо указать ID контейнера.
Примечание
При записи новых
secrets
добавленныйsecret
необходимо убрать из Redis.