Действия при изменении IP-адреса Space Disp или БД
Изменение IP-адреса БД
Порядок действий
При изменении IP-адреса БД необходимо выполнить следующие действия:
-
Перейти в терминал узла с ролью Leader и сохранить текущие настройки в файл
old_secretsс помощью команды:sudo docker exec -it ID cat /run/secrets/LOC_SET > old_secretsПараметр
ID— это ID любого из трех контейнеров tornado, который можно получить в выводе командыsudo 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-адрес Space Disp, необходимо пересоздать кластер с помощью команды:
docker swarm init --force-new-cluster
Для проверки изменения IP-адреса БД необходимо выполнить команды:
docker exec -it ID cat /run/secrets/LOC_SET
Параметр
ID— это ID любого из трех контейнеров tornado, который можно получить в выводе командыsudo docker ps.
Пример
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:docker stack rm multivdisudo docker stack deploy --resolve-image never -c /opt/multivdi/multivdi-stack.yml multivdi -
Выполнить команду:
sudo docker exec -it ID cat /run/secrets/LOC_SET > old_secretsВ параметре
IDнеобходимо указать ID контейнера redis, который можно получить, выполнив командуsudo docker ps. -
Повторить шаги 2–6 из инструкции по изменению IP-адреса БД.
Примечание
При записи новых
secretsдобавленныйsecretнеобходимо убрать из Redis. Для этого необходимо открыть для редактирования файлmultivdi-stack.yml:
Затем необходимо удалить параметр LOC_SET в сервисе vdi-redis.sudo vim /opt/multivdi/multivdi-stack.yml -
Пересоздать
stackдля применения новых переменных окружения с помощью команды:sudo docker stack deploy --resolve-image never -c /opt/multivdi/multivdi-stack.yml multivdi
Изменение IP-адреса Leader или Manager
Изменение IP-адресов узлов с ролями Manager и Leader необходимо выполнять поочерёдно:
- Изменить IP-адреса узлов с ролью Manager.
- Последним изменить IP-адрес текущего узла с ролью Leader.
Внимание
Перед изменением IP-адреса текущего узла с ролью Leader в кластере должен оставаться хотя бы один узел с ролью Manager со статусом Reachable. Последний Manager нельзя изменить на Worker.
Подготовка
-
На узле с ролью Leader проверить состояние кластера:
sudo docker node ls -
Убедиться, что все узлы Manager имеют статус Leader или Reachable.
-
Получить и сохранить токен подключения Manager:
sudo docker swarm join-token manager -qjoin-token — токен для подключения узлов с ролью Manager.
Изменение IP-адреса узла с ролью Manager
Для каждого узла с ролью Manager выполнить следующие шаги:
Шаг 1. Manager изменить на Worker
На узле с ролью Leader выполнить команду:
sudo docker node demote manager-id
manager-id — id изменяемого узла Manager. Его можно получить с помощью команды:
docker node ls
Шаг 2. Выйти из текущего кластера
На изменяемом узле выполнить команду:
sudo docker swarm leave
Шаг 3. Изменить IP-адрес узла
-
Изменить IP-адрес в настройках Astra Linux, используя NetworkManager:
nmcli connection show --active sudo nmcli connection modify "connection-name" \ ipv4.method manual \ ipv4.addresses "new-manager-ip/prefix" \ ipv4.gateway "gateway-ip"new-manager-ip/prefixиgateway-ip— новые адреса. -
Применить настройки:
sudo nmcli connection up "connection-name" -
После смены IP проверить адрес:
ip -br address ip route
Шаг 4. Присоединить узел к кластеру
На изменяемом узле выполнить:
sudo docker swarm join \
--token join-token \
--advertise-addr new-manager-ip \
leader-ip:2377
join-token — сохранённый токен.
new-manager-ip — новый IP-адрес изменяемого узла.
leader-ip — текущий IP-адрес узла Leader.
Шаг 5. Проверить подключение
На узле с ролью Leader выполнить:
sudo docker node ls
Изменённый узел должен иметь состояние:
STATUS Ready
MANAGER STATUS Reachable
Шаг 6. Повторить действия для остальных узлов с ролью Manager
Внимание
Переходить к изменению IP-адреса следующего узла Manager можно только, когда предыдущий узел получил статус Ready/Reachable.
Изменение IP-адреса узла с ролью Leader
Внимание
Переходить к изменению IP-адреса узла с ролью Leader можно только, когда будут изменены IP-адреса всех узлов с ролью Manager.
Шаг 1. Leader изменить на Worker
На любом узле с ролью Manager выполнить команду:
sudo docker node demote leader-id
leader-id — id текущего узла с ролью Leader.
Шаг 2. Проверить назначение роли Leader на новый узел
На любом узле с ролью Manager выполнить команду:
sudo docker node ls
Один из узлов Manager должен получить статус:
MANAGER STATUS Leader
Внимание
Прежде чем переходить к следующим шагам, убедиться, что роль Leader назначена новому узлу.
Шаг 3. Выйти из текущего кластера
На бывшем Leader выполнить команду:
sudo docker swarm leave
Шаг 4. Изменить IP-адрес бывшего Leader
Изменить IP-адрес в настройках Astra Linux аналогично шагу 3 в пункте Изменение IP-адреса узла с ролью Manager.
Шаг 5. Присоединить бывший Leader к кластеру
На бывшем Leader выполнить:
sudo docker swarm join \
--token join-token \
--advertise-addr new-node-ip \
new-leader-ip:2377
join-token — сохранённый токен Manager.
new-node-ip — новый IP-адрес бывшего Leader.
new-leader-ip — IP-адрес нового узла Leader.
Примечание
После подключения бывший Leader получит статус Reachable (Docker Swarm выбирает Leader автоматически).
Шаг 6. Проверить подключение
На любом узле выполнить команду:
sudo docker node ls
Убедиться, что все узлы кластера имеют MANAGER STATUS — Reachable/Leader.