Как переподключить разделенные узлы в кластере erlang

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

Есть ли другие / лучшие решения, может быть, более динамичные, которые не требуют списка фиксированных узлов?


person mkorszun    schedule 17.10.2013    source источник


Ответы (2)


Есть несколько сторонних библиотек, которые не нужно настраивать с использованием фиксированного списка узлов. Два, с которыми я знаком, это redgrid и erlang-redis_sd_epmd, возможно, есть и другие, но я просто с ними не знаком.

Оба они имеют внешнюю зависимость от redis, что может быть или не быть желательным в зависимости от того, что вам нужно.

redgrid — более простая реализация, но в ней нет множества функций. В основном узлы erlang подключаются к Redis, и все узлы erlang, подключенные к Redis, затем устанавливают соединения друг с другом. Вы можете связать метаданные с узлом и получить их на другом узле.

erlang-redis_sd_epmd немного сложнее, но допускает гораздо больше настроек. Например, вместо того, чтобы просто автоматически подключать все узлы, узел может публиковать услуги, которые он может выполнять, а подключающийся узел может искать узлы на основе предоставленных услуг.

person Daniel    schedule 17.10.2013

Не готовое решение, но если вы уже делаете пользовательские моды для ejabberd, вы можете попробовать интегрировать этот код, который разрешает конфликты мнений после разделения кластера.

https://github.com/uwiger/unsplit

person chrisyunker    schedule 18.10.2013