Перейти к содержанию

Действия при изменении IP-адреса диспетчера или БД

При изменении IP-адреса БД необходимо выполнить следующие действия:

  1. Перейти в терминал узла с ролью Leader и сохранить текущие настройки в файл old_secrets с помощью команды:

    sudo docker exec -it {ID} cat /run/secrets/LOC_SET > old_secrets
    

    ID контейнера можно получить в выводе команды docker ps.

  2. Открыть файл old_secrets на редактирование.

  3. Найти строку DB_HOST и изменить зашифрованное значение на новый IP-адрес подключения:

    DB_HOST = '10.251.32.3'
    

    Примечание

    IP-адрес 10.251.32.3 представлен в качестве примера.

  4. Удалить stack с помощью команды:

    docker stack rm multivdi
    
  5. Удалить старый secret с помощью команды:

    docker secret rm LOC_SET
    
  6. Создать новый secret с измененным содержимым с помощью команды:

    docker secret create LOC_SET old_secrets
    
  7. Пересоздать 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-секунд. Для этого:

  1. Открыть файл multivdi-stack.yml:

    sudo vim /opt/multivdi/multivdi-stack.yml
    
  2. Добавить в сервис vdi-redis в поле secrets еще одно значение: LOC_SET.

  3. Пересоздать stack:

    stack rm
    
    stack deploy
    
  4. Выполнить команду:

    redis docker exec -it {ID} cat /run/secrets/LOC_SET > old_secrets
    

    В поле {ID} необходимо указать ID контейнера.

    Примечание

    При записи новых secrets добавленный secret необходимо убрать из Redis.