Изменить лидера в Docker Swarm

#docker #docker-swarm

#docker #docker-swarm

Вопрос:

У меня есть среда docker swarm с тремя менеджерами. Они называются swarm1, swarm2 и swarm3. Из-за различных обстоятельств (например, сети и ресурсов) swarm1 был установлен в качестве лидера и должен оставаться лидером. Однако после обновления ресурсов swarm1 был перезагружен. Это привело к тому, что swarm2 установлен в качестве лидера, а swarm1 теперь имеет статус достижимый. Как можно снова установить swarm1 в качестве лидера?

Ответ №1:

С менеджерами swarm плохой практикой является наличие «специального» узла, который всегда должен быть лидером. Все ваши узлы менеджера должны быть как можно более идентичными. Но, чтобы ответить на ваш вопрос, вручную установить лидера роя невозможно. Однако то, что вы можете сделать, это docker node demote лидер (swarm2) и другой менеджер (swarm3). Как только менеджеры будут понижены до рабочих, swarm1 по умолчанию становится лидером. Тогда все, что вам нужно сделать, это docker node promote swarm2 и swarm3.

Комментарии:

1. Примечание: изменение лидера — это единственное решение, которое я нашел для решения следующей проблемы с подключением привязки и гибридными роями (узлы Windows плюс Linux) github.com/docker/swarmkit/issues/3028 — Я согласен, что это нежелательная практика, но, похоже, это единственный обходной путь на данный момент.

Ответ №2:

Я попытаюсь написать сценарий целиком, чтобы все было в одном месте об изменении лидера и возврате.

Сценарий: три узла — это swarm1, swarm2 и swarm3. Первый лидер (который нуждается в обновлении ресурсов — swarm1)

Шаг 1 Сделайте swarm2 лидером

docker node promote swarm2

docker node ls

Убедитесь, что статус менеджера swarm2 доступен (не отключен)

Шаг 2 Понизьте swarm1 теперь до работника

docker node demote swarm1

docker node ls

Убедитесь, что статус менеджера для swarm1 теперь пустой.

Вы можете удалить узел из swarm.

С узла swarm1 проблема:

docker swarm leave

Выполните необходимые обновления узла swarm1 и присоедините его обратно к swarm.

Шаг 3

Присоединитесь к рою и измените лидерство.

Из-за проблемы swarm2

docker swarm join-token manager

Из узла swarm1 выполните команду join

например:

docker swarm join --token <token> <ip:port>

Шаг 4

Теперь переизберите лидера.

Из-за проблемы swarm1:

docker node demote swarm2

docker node ls

Теперь вы должны увидеть свою старую конфигурацию с swarm1 в качестве лидера.