Действия при изменении IP-адреса диспетчера или БД
Изменение 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.
Изменение IP-адреса Leader или Manager
При изменении IP-адреса узла с ролью Leader необходимо пересоздать docker-кластер. Для этого следует выполнить следующие команды на узле, который будет занимать роль Leader.
-
Выйти из текущего кластера:
docker swarm leave -
Создать новый кластер:
docker swarm init --force-new-cluster -
Вывести и сохранить токен для подключения узлов с ролью Manager:
sudo docker swarm join-token manager -q
После выполнения вышеописанных действий необходимо поочередно на каждом из оставшихся узлов (кроме БД) выполнить следующие команды:
-
Выйти из текущего кластера:
docker swarm leave -
Присоединиться к новому кластеру:
docker swarm {join-token} {leader-ip}join-token- токен для подключения новых узлов с ролью Manager, полученный на Leader.leader-ip- IP-адрес узла с ролью Leader.
Для просмотра списка узлов в кластере необходимо на любом из узлов выполнить команду:
sudo docker node ls