Не прямой ответ, а теория и способ воспроизвести вашу проблему.
Это сложно, потому что включает в себя несколько узлов, но давайте посмотрим, сможете ли вы следовать за мной.
TL; DR: SickNode@X.X.X.X изменил свой файл cookie после подключения к кластеру.
Итак, это то, что я сделал ...
Сначала на терминале я запустил node1
с cookie x
…
$ erl -name node1 -setcookie x
(node1@my.computer)1>
Затем на другом терминале я запустил node2
с cookie x
, подключил его к node1
и изменил его cookie на y
…
$ erl -name node2 -setcookie x
(node2@my.computer)1> net_adm:ping('node1@my.computer').
pong
(node2@my.computer)2> erlang:set_cookie(node(), 'y').
true
(node2@my.computer)3>
Затем в еще одном терминале я запустил node3
с cookie x
и пропинговал node1
(что также привело к попытке подключения к node2
, как вы увидите ниже), а затем явно попытался подключиться до node2
…
$ erl -name node3 -setcookie x
(node3@my.computer)1> net_adm:ping('node1@my.computer').
pong
(node3@my.computer)2>
=WARNING REPORT==== 21-Nov-2018::15:09:07 ===
global: 'node3@my.computer' failed to connect to 'node2@my.computer'
=ERROR REPORT==== 21-Nov-2018::15:09:26 ===
** Connection attempt from disallowed node 'node2@my.computer' **
(node3@my.computer)2> net_adm:ping('node2@FERNANDO-BENAVIDES.Conyfero').
pang
Что случилось до сих пор? Ну, поскольку node1
cookie был x
, а node3
cookie также был x
, они могли подключиться. node2
все еще был подключен к node1
, но, поскольку файл cookie был y
, node3
не смог подключиться к нему.
Эрланг пытается установить полностью подключенную сетку узлов, поэтому при подключении к одному из них он автоматически пытается подключить вас ко всем остальным.
Но я хотел быть внимательным, поэтому набрал node2
с node3
и, как и ожидалось, получил pang
. Также эти сообщения выскакивают на node2
:
(node2@my.computer)3>
=ERROR REPORT==== 21-Nov-2018::15:09:07 ===
** Connection attempt from disallowed node 'node3@my.computer' **
=WARNING REPORT==== 21-Nov-2018::15:09:07 ===
global: 'node2@my.computer' failed to connect to 'node3@my.computer'
И, конечно же, когда я пытался пинговать node3
с node2
…
(node2@my.computer)3> net_adm:ping('node3@my.computer').
pang
Но ... если я попытаюсь пинговать node1
…
(node2@my.computer)4> net_adm:ping('node1@my.computer').
pong
Это потому, что они уже подключены, и Эрланг проверяет только совместное использование куки при первом рукопожатии.
Наконец, если я попытаюсь пропинговать узлы с node1
, я получу ожидаемые результаты ...
(node1@my.computer)1> net_adm:ping('node2@my.computer').
pong
(node1@my.computer)2> net_adm:ping('node3@my.computer').
pong
(node1@my.computer)3>
Надеюсь, это поможет.