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

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

Изменение 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.


Изменение IP-адреса Leader или Manager

При изменении IP-адреса узла с ролью Leader необходимо пересоздать docker-кластер. Для этого следует выполнить следующие команды на узле, который будет занимать роль Leader.

  1. Выйти из текущего кластера:

    docker swarm leave
    
  2. Создать новый кластер:

    docker swarm init --force-new-cluster
    
  3. Вывести и сохранить токен для подключения узлов с ролью Manager:

    sudo docker swarm join-token manager -q
    

После выполнения вышеописанных действий необходимо поочередно на каждом из оставшихся узлов (кроме БД) выполнить следующие команды:

  1. Выйти из текущего кластера:

    docker swarm leave
    
  2. Присоединиться к новому кластеру:

    docker swarm {join-token} {leader-ip}
    

    join-token - токен для подключения новых узлов с ролью Manager, полученный на Leader.

    leader-ip - IP-адрес узла с ролью Leader.


Для просмотра списка узлов в кластере необходимо на любом из узлов выполнить команду:

sudo docker node ls