Задать вопрос
@Abyss777

Как распределить два сервиса по разным нодам кластера swarm?

Есть кластер docker swarm состоящий из трёх нод. Есть два сервиса зависимые друг от друга. Чтоб один запустился второй должен быть уже запущен.
Хочется получить устойчивость к перзагрузке любой из ноды кластера.
Соответственно хочется чтоб два этих сервиса всегда были на разных нодах. Если не задавать никакие ограничения, то рано или поздно они окажутся на одной ноде, и её перезапуск приведёт к плохому.

Можно ли как-то через

deploy:
      placement:
        constraints:


Задать такие ограничения?

Чтоб при перезапусках нод сервисы мигрировали по нодам, но никогда не встречались на одной ноде?
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Anitaffinity в Docker настроить нельзя. Если разметить половину нод лэйблом service-couple-name: this, а другую service-couple-name: that, и выставить в сервисах разные deploy.placement.preferences по этому лэйблу, то планировщик будет пытаться поднимать их на соответствующих нодах пока они есть. Если все померли, а потом какие-то поднялись, то балансировку сервисов надо делать руками/скриптами/самописными внешними сервисами.
Ответ написан
inf
@inf
DevOps Engineer
Только метить ноды разными метками и чтобы каждый сервис жил на своей ноде
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы