Как сеть и балансировщик нагрузки работают в режиме Docker swarm?

Я новичок в докерах и контейнерах. Я просматривал учебники для docker и наткнулся на эту информацию. https://docs.docker.com/get-started/part3/#docker-composeyml

   networks:
     - webnet
networks:
  webnet:

что webnet? В документе говорится: "поручите контейнерам web совместно использовать порт 80 через сеть с балансировкой нагрузки под названием webnet. (Внутри сами контейнеры будут публиковаться в порту 80 web в эфемерном порту.)"

таким образом, по умолчанию overlay network балансировка нагрузки в кластере docker ? Что такое балансировки нагрузки алгоритм используется ?

на самом деле мне непонятно, почему у нас есть балансировка нагрузки в оверлейной сети.

посоветуйте, пожалуйста.

1 ответов


не уверен, что я могу быть яснее, чем документы, но, возможно, перефразирование поможет.

во-первых, doc вы следуете здесь использует то, что называется swarm mode докер.

что это swarm mode?

рой-это кластер двигателей Docker или узлов, где развертываются службы. CLI и API Docker Engine включают команды для управления узлами Роя (например, добавление или удаление узлов), а также развертывания и оркестровки служб стая.

из документации SO:

рой-это несколько двигателей Docker (или узлов), которые совместно развертывают службы. Swarm используется для распределения обработки на многих физических, виртуальных или облачных машинах.

Итак, в режиме Роя у вас есть мульти хост (vms и / или физические) кластерные машины, которые общаются друг с другом через их docker engine.

Q1. Что webnet?

webnet - название сеть оверлея который создается при запуске стека.

наложение сетей управление коммуникациями между демонами Docker, участвующими в рое

в вашем кластере машин создается виртуальная сеть, где каждая служба имеет ip - сопоставление с внутренней записью DNS (которая является именем службы) и позволяет докеру маршрутизировать входящие пакеты вправо контейнер, везде в рое (кластере).

Q2. Итак, по умолчанию оверлейная сеть сбалансирована по нагрузке в кластере docker ?

да, если вы используете оверлейную сеть, но вы также можете удалить службу networks конфигурация для обхода этого. Тогда тебе придется ... --48-->публикации порт службы, которую вы хотите предоставить.

Q3. Что такое балансировки нагрузки алгоритм используется ?

отсюда так вопрос ответил мастер Роя bmitch ;):

алгоритм раунд-Робин и я видел никаких признаков того, что он еще pluginable. Балансировщик нагрузки более высокого уровня позволит снимать узлы Роя для обслуживания, но любые липкие сессии или другие функции маршрутизации будут отменены циклическим алгоритмом в режиме Роя.

Q4. На самом деле мне непонятно, почему у нас есть балансировка нагрузки на наложение сети

цель docker swarm mode / services-разрешить оркестровку тиражируется услуги, что означает, что мы можем масштабировать вверх / вниз контейнеры, развернутые в рое.

С docs еще раз:

режим Роя имеет внутренний компонент DNS, который автоматически назначает каждой службе в рое запись DNS. Диспетчер swarm использует внутреннюю балансировку нагрузки для распределения запросов между службами внутри кластера на основе DNS-имени службы.

таким образом, вы можете развернуть как 10 точно такой же контейнер (скажем, nginx с вами app html/js), не имея дело с частными сетевыми DNS-записями, конфигурацией портов и т. д... Любой входящий запрос будет автоматически сбалансирован по нагрузке для хостов, участвующих в рое.

надеюсь, что это помогает!