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

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

Изменение IP-адреса БД

Порядок действий

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

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

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

    Параметр ID — это ID любого из трех контейнеров tornado, который можно получить в выводе команды sudo 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-адрес 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-секунд. Для этого:

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

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

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

    docker stack rm multivdi
    sudo docker stack deploy --resolve-image never -c /opt/multivdi/multivdi-stack.yml multivdi
  4. Выполнить команду:

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

    В параметре ID необходимо указать ID контейнера redis, который можно получить, выполнив команду sudo docker ps.

  5. Повторить шаги 2–6 из инструкции по изменению IP-адреса БД.

    Примечание

    При записи новых secrets добавленный secret необходимо убрать из Redis. Для этого необходимо открыть для редактирования файл multivdi-stack.yml:

    sudo vim /opt/multivdi/multivdi-stack.yml
    Затем необходимо удалить параметр LOC_SET в сервисе vdi-redis.

  6. Пересоздать stack для применения новых переменных окружения с помощью команды:

    sudo docker stack deploy --resolve-image never -c /opt/multivdi/multivdi-stack.yml multivdi

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

Изменение IP-адресов узлов с ролями Manager и Leader необходимо выполнять поочерёдно:

  1. Изменить IP-адреса узлов с ролью Manager.
  2. Последним изменить IP-адрес текущего узла с ролью Leader.

Внимание

Перед изменением IP-адреса текущего узла с ролью Leader в кластере должен оставаться хотя бы один узел с ролью Manager со статусом Reachable. Последний Manager нельзя изменить на Worker.


Подготовка

  1. На узле с ролью Leader проверить состояние кластера:

    sudo docker node ls
  2. Убедиться, что все узлы Manager имеют статус Leader или Reachable.

  3. Получить и сохранить токен подключения Manager:

    sudo docker swarm join-token manager -q

    join-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-адрес узла

  1. Изменить 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 — новые адреса.

  2. Применить настройки:

    sudo nmcli connection up "connection-name"
  3. После смены 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.