Как балансируется нагрузка Docker Swarm?

#docker #docker-swarm

#docker #docker-swarm

Вопрос:

У меня есть кластер из 10 узлов Swarm, запущенный с помощью docker swarm join команды

Если я хочу масштабировать экземпляр docker до 15 с помощью

 docker service create --replicas 15 
  

как docker swarm узнает, с чего начать контейнер?

это циклический перебор или он учитывает вычислительный ресурс (сколько используется cpu / mem)?

Ответ №1:

Когда вы создаете службу или масштабируете ее в режиме Swarm, scheduler on Elected Leader (один из менеджеров) выберет узел для запуска службы. В настоящее время лидеру доступны 3 стратегии.

  • распространение
  • binpack
  • Случайный

Стратегии spread и binpack вычисляют ранг в соответствии с доступным процессором узла, его оперативной памятью и количеством контейнеров, которые у него есть. random Стратегия не использует никаких вычислений. Он выбирает узел случайным образом и в первую очередь предназначен для отладки.

В соответствии spread со стратегией Swarm оптимизируется для узла с наименьшим количеством контейнеров. binpack Стратегия заставляет Swarm оптимизировать для узла, который наиболее загружен.

Swarm использует spread по умолчанию. Имейте в виду, что вы также можете Constraint использовать контейнеры на определенных узлах.

Невозможно установить стратегии в версии docker 1.12.1 (последняя версия на дату публикации)

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

1. Где я могу найти документ на официальном сайте?

2. Взгляните сюда: github.com/docker/docker.github.io/blob/master/swarm/scheduler /…