LINUX.ORG.RU

Поиск workers в распределенных системах

 распределенные системы


0

2

Как происходит поиск рабочих узлов в распределенных системах?
Допустим есть мастер-сервер и воркеры. Как им достучаться друг до друга, учитывая что их может быть тысячи и что они могут быть периодически недоступны? Список воркеров в /etc/hosts в мастере? Синхронизация по LDAP? Флуд udp пакетов по сети? Как лучше?



Последнее исправление: nerdogeek (всего исправлений: 1)

Список воркеров в /etc/hosts в мастере?

Почти. Обычный паттернг это глобальный конфиг (база) общий для всех узлов. В нём для каждого узла свои директивы. В итоге все обо всех знают.

Остаётся вопрос глобального обновления этого конфига. В каком-нить pacemaker, если не ошибаюсь, при изменении конфига эти изменения реплицируются на все узлы. Зачастую эту задачу вообще возлагают на сторонние средства от shared storage до всяких puppet/etc.

Есть более сложные алгоритмы включая autodiscovery итп. Но я бы не рекомендовал усложнять и надеятся на доступность сети.

true_admin ★★★★★
()
Последнее исправление: true_admin (всего исправлений: 1)

Как лучше зависит от того, что именно нужно. Обычно пишут сервисы-менеджеры ресурсов (в частности, воркеров).

mashina ★★★★★
()

Почитай доку к 0mq, там рассматриваются паттерны. Самый простой, это если воркеры сами подключаются к мастеру.

dizza ★★★★★
()
Ответ на: комментарий от dizza

В схеме воркеры подключаются к мастеру меня смущает тот факт, что мастер должен пинговать воркеров. Т.е. все равно вынужден по своей инициативе создавать коннект от мастера к воркеру.
Еще не ясно как такая схема будет работать в случае нескольких мастеров. Когда 1 мастер - основной, 2й - для подстраховки и т.п.

nerdogeek
() автор топика
Ответ на: комментарий от nerdogeek

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

А как он ещё узнает что твои арбайтеры «стали недоступны» (т.е. вероятно упали или повисли)?

anonymous
()
Ответ на: комментарий от anonymous

Нет, мне не нравится схема клиент-сервер. Клиент не должен знать о мастере, пока мастер не инициирует первое соединение.
Схема должна быть одноранговой.

nerdogeek
() автор топика
Ответ на: комментарий от nerdogeek

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

anonymous
()
Ответ на: комментарий от nerdogeek

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

Несколько мастеров это проблемы в любой схеме. И это другая проблема.

dizza ★★★★★
()
Последнее исправление: dizza (всего исправлений: 1)
Ответ на: комментарий от dizza

Несколько мастеров это проблемы в любой схеме.

Один мастер - тоже проблема :) Если он нечаянно сам упадёт, то он утянет за собой очередь входящих заданий, а также список уже размещённых задач, которые выполняют арбайтеры. И арбайтерам некуда будет отдать результат трудов своих. В результате большое количество заданий просто пропадёт.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.