Gproc и динамическое подключение новой ноды в кластер.

193 views
Skip to first unread message

begemot_sun

unread,
Nov 9, 2015, 7:13:13 AM11/9/15
to Erlang по-русски
Назрела необходимость динамического подключения к кластеру других нод.
Внутри кластера используется gproc. И вот что самое интересное, не известно как добавить новую ноду в gproc.

Гугль не помогает, нарисовывается такая тема что - оно так не может.

А кто как решает такую проблему?
Может есть аналог gproc, который позволяет это делать?

Может я что-то не прочитал?

Спасибо.

Valery Tikhonov

unread,
Nov 9, 2015, 7:18:29 AM11/9/15
to erlang-...@googlegroups.com

Остановить gproc и gen leader на новой ноде, пингануть другие, запустить заново. тогда она добавляется в кластер.

9 Ноя 2015 г. 15:13 пользователь "begemot_sun" <logu...@gmail.com> написал:
--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

Sergey Loguntsov

unread,
Nov 9, 2015, 7:23:15 AM11/9/15
to erlang-...@googlegroups.com
Спасибо. Сработало.
Путь конечно не очень, хочется ручками добавить куда-нить.

9 ноября 2015 г., 15:18 пользователь Valery Tikhonov
<com.tiho...@gmail.com> написал:
> Вы получили это сообщение, поскольку подписаны на одну из тем в группе
> "Erlang по-русски".
> Чтобы отменить подписку на эту тему, перейдите по ссылке
> https://groups.google.com/d/topic/erlang-russian/eexYWvnnLgU/unsubscribe.
> Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на

Aleksey Kluchnikov

unread,
Nov 9, 2015, 7:25:42 AM11/9/15
to erlang-russian
Была сходная задача, с гпроц в таком режиме, какой то он хрустальный, чуть что и все пропало. Может конечно что то не так делал, но мне не понравилось. Сделал на каждой ноде свой локальный гпроц, независимый от других и регистрирую на нем. А чтобы знать где что запущено пришлось ввести некий уникальный идентификатор процесса, который шардится. То есть имея его всегда можно получить номер ноды на которой он может быть запущен. Получилось значительно стабильнее. Но динамический решардинг придется костылить.

9 ноября 2015 г., 15:18 пользователь Valery Tikhonov <com.tiho...@gmail.com> написал:

Остановить gproc и gen leader на новой ноде, пингануть другие, запустить заново. тогда она добавляется в кластер.

Sergey Loguntsov

unread,
Nov 9, 2015, 7:40:25 AM11/9/15
to erlang-...@googlegroups.com
А может есть аналог gproc построенный по принципам Riak, скажем на
основе riak_core ?

9 ноября 2015 г., 15:25 пользователь Aleksey Kluchnikov
<kluchn...@gmail.com> написал:
> Вы получили это сообщение, поскольку подписаны на одну из тем в группе
> "Erlang по-русски".
> Чтобы отменить подписку на эту тему, перейдите по ссылке
> https://groups.google.com/d/topic/erlang-russian/eexYWvnnLgU/unsubscribe.
> Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на

Vyacheslav Vorobyov

unread,
Nov 10, 2015, 8:54:59 AM11/10/15
to erlang-...@googlegroups.com
Есть ещё такое поделие https://github.com/ostinelli/syn, основано на mnesia, сыровато конечно (см. например https://github.com/ostinelli/syn/issues/2), но если в целом концепция по душе и не лень допиливать то...

9 ноября 2015 г., 15:40 пользователь Sergey Loguntsov <logu...@gmail.com> написал:
Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу erlang-...@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/d/optout.



--
Best Regargs,
     Vyacheslav

Sergey Loguntsov

unread,
Nov 10, 2015, 10:00:54 AM11/10/15
to erlang-...@googlegroups.com
Спасибо. Как всегда нужно было еще вчера, поэтому пилить - не вариант.

10 ноября 2015 г., 16:54 пользователь Vyacheslav Vorobyov
<vja...@gmail.com> написал:

begemot_sun

unread,
Dec 11, 2015, 2:14:46 AM12/11/15
to Erlang по-русски
Подниму тему еще раз. Оказывается gproc ну очень "хрустальный" для нас. Он ждет пока поднимутся все ноды в кластере. Т.е. если одно приложение gproc не стартанет на ноде, то и кластер не стартанет. Не хочется такого поведения.
Что есть хорошего на замену, кроме перечисленного выше.
Нужна регистрация процессов по имени (терму) в глобальной и локальной областях.
И глобальные и локальные свойства.

понедельник, 9 ноября 2015 г., 15:13:13 UTC+3 пользователь begemot_sun написал:

Igor Karymov

unread,
Dec 12, 2015, 1:48:37 AM12/12/15
to Erlang по-русски
Хрустальный не gproc, a gen_leader который лежит в его основе.
Он к тому же не умеет динамически добавлять ноды емнип.
Из поставленого вопроса не понятно, какую схему кластеризации вы в итоге хотели бы собрать,
и какую задачу решаете. Некоторые элементарные схемы неплохо собираются на mnesia
(посмотрите например как это сделано в ejabberd), простая связка мастер-слэйв, где одна нода выступает скедулером
задач для других нод, пишется самостоятельно за пару дней. Если вам нужно что-то более хитрое,
то тогда уже есть смысл смотреть на всякие riak_core (там вроде бы реализация raft под капотом сейчас?)

begemot_sun

unread,
Dec 12, 2015, 2:47:09 AM12/12/15
to Erlang по-русски
Хочется распространять информацию (уникальный ключ + свойства) по нодам с привязкой по Pid (gproc:add_global_name, gproc:add_global_property). Если Pid умер информация удаляется везде.
Не хочется иметь единую точку принятия решения (как в gen_leader). Хочется динамического добавления нод. Не хочется mnesia.
Уже пишу свой велосипед :)

суббота, 12 декабря 2015 г., 9:48:37 UTC+3 пользователь Igor Karymov написал:

Aleksey Kluchnikov

unread,
Dec 12, 2015, 3:22:14 AM12/12/15
to erlang-russian
Задачка не из тех которые решаются в общем виде и за пару вечеров.
Поделитесь потом мыслями, чего хотелось достигнуть и как получилось сделать?

12 декабря 2015 г., 10:47 пользователь begemot_sun <logu...@gmail.com> написал:

--
Reply all
Reply to author
Forward
0 new messages