Как сервисы распределяются в Docker Swarm - PullRequest
0 голосов
/ 24 июня 2019

Можно ли как-то настроить, как мастер-узел распределяет сервисы в Docker Swarm?Я думал, что он должен видеть свободные ресурсы рабочих узлов и распределять их по «свободному» узлу.

В настоящее время у меня проблема в том, что служба распределена по одному узлу, который заполнен (90% ОЗУ), и он начинает работать с задержкой, но в то же время у второго узла мало служб, и он может обрабатывать другой.

docker node ls 
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
wdkklpy6065zxckxyuj000ei4 *   docker-master       Ready               Drain               Leader              18.09.6
sk45rol2whdr5eh2jqozy0035     docker-node01       Ready               Active              Reachable           18.09.6
o4zwwbwwcrbwo4tsd00pxkfuc     docker-node02       Ready               Active                                  18.09.6

Теперь у меня 36 (очень похожих) сервисов, 28 запущены на docker-node01, 8 на docker-node02.Я думал, что идеальным состоянием является 16 сервисов на обоих узлах.Оба docker-узла одинаковы.

  1. Как Docker Swarm знает, где запустить сервис?Какой алгоритм он использует?
  2. Можно ли изменить / обновить алгоритм выбора узла?

Ответы [ 2 ]

1 голос
/ 24 июня 2019

В соответствии с проектом swarmkit README единственная доступная стратегия - spread, поэтому она планирует задачи в наименее загруженных режимах.

Обратите внимание, что рой не будет перемещать узлы вокруг, чтобы поддерживать эту стратегию, поэтому, если вы добавили node02 после заполнения node01, то node02 останется в основном пустым. Вы можете истощить оба узла, а затем активировать их, чтобы увидеть, лучше ли он распределяет нагрузку.

Более подробное описание алгоритма расписаний можно найти в проектной документации: алгоритм планирования

Для более старого менеджера роя этот атрибут можно было настроить: https://docs.docker.com/swarm/reference/manage/#--strategy--scheduler-placement-strategy

0 голосов
/ 25 июня 2019

Также я нашел https://docs.docker.com/swarm/scheduler/strategy/,, это многое объясняет о стратегиях роя Docker.

...