Создайте собственный пользователь, определите сеть в Docker и напишите собственный алгоритм балансировки нагрузки. - PullRequest
0 голосов
/ 27 декабря 2018

Я работаю над исследовательским проектом, в котором мне нужно создать архитектуру из нескольких рабочих узлов и главного узла.

Я хочу написать алгоритм балансировки нагрузки и провести тестирование на этих узлах (на них запущены приложения).Я начал изучать Docker и хочу использовать его для создания архитектуры.

Я не могу решить, какой тип сети использовать, так как сетевая структура докера довольно обширна.Они создали много абстракций над сетевыми драйверами Linux.

Должен ли я использовать мост или оверлейную сеть?

Я хочу, чтобы все рабочие узлы отправляли свои ресурсы процессора и памяти на главный узел.В основном рабочий может поговорить с мастером.Затем я напишу алгоритмы распределения нагрузки по узлу главного контейнера.

Требуется руководство от сетевого эксперта в Docker.Заранее спасибо.

1 Ответ

0 голосов
/ 27 декабря 2018

Если у вас есть установка с одним хостом, тогда вы обычно должны использовать «мост».(В этом случае вы должны объявить некоторую сеть, чтобы воспользоваться преимуществами межконтейнерного DNS.)

Если у вас есть установка с несколькими хостами, то вы можете использовать множество настроек;допустимые опции включают Docker Swarm, Nomad Hashicorp, Kubernetes, созданную вручную настройку с помощью посредника по обнаружению служб, такую ​​как Consul, или созданную вручную настройку, где каждая служба напрямую знает имена хостов других узлов и игнорирует уровень Docker.

Если вы используете Docker Swarm, вам нужно использовать «оверлей».Но каждая из опций, которые я описал выше, использует различные сетевые настройки (Kubernetes использует часть, называемую CNI, и, к примеру, в ней есть дюжина различных вариантов реализации), и этот вопрос не имеет прямого значения для многих из них.

Когда вы описываете проект, кажется, что вы хотите явно разместить приложения на определенных узлах и управлять маршрутизацией между ними вручную.Для этого я бы, вероятно, использовал только «мостовую» сеть: запуск контейнеров Docker с использованием параметров -p (или Docker Compose ports:) для публикации портов на IP-адресах хоста и обмена данными между контейнерами, используя только эти IP-адреса хоста.Это даст вам полезный уровень ручного управления для исследовательского проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...