A similar question here.
Распространение предоставляется демоном под названием Erlang Port Mapper Daemon. По умолчанию он прослушивает порт 4369, поэтому вам нужно убедиться, что этот порт открыт между узлами. Кроме того, каждый запуск Erlang VM открывает дополнительный порт для связи с другими виртуальными машинами. Вы можете увидеть эти порты с epmd -names
:
[email protected]:~ % epmd -names
epmd: up and running on port 4369 with data:
name hbd at port 22200
Вы можете проверить, если порт открыт, делая telnet
к нему, например:
[email protected]:~ % telnet 127.0.0.1 22200
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
^]
Connection closed by foreign host.
Вы можете изменить порт, порт, который вы хотите проверить , например 4369, а также IP-адрес требуемого IP-адреса. Делать ping
недостаточно, потому что он использует свой собственный ICMP protocol, который отличается тем, что TCP, используемый дистрибутивом Erlang для связи, например. ICMP может быть разрешен, но TCP может быть заблокирован.
Edit:
Пожалуйста, следуйте этому руководству Distributed Erlang начать Erlang VM в распределенном режиме. Затем вы можете использовать net_adm:ping/1
подключиться к нему с другого узла, например .:
([email protected])17> net_adm:ping('[email protected]').
pong
Только тогда epmd -names
покажет начатое Erlang VM в списке.
Edit2:
Предположим, что есть Тхо хозяева, А и В. Каждый из них выполняет один Erlang VM.epmd -names
работать на каждом хосте показывает, например:
Хост A:
epmd: up and running on port 4369 with data:
name servA at port 22200
Хост B:
epmd: up and running on port 4369 with data:
name servB at port 22300
Вы должны быть в состоянии сделать:
На узле A:
telnet HostB 4369
telent HostB 22300
На Узел B:
telnet HostA 4369
telnet HostA 22200
, где и Хост HostB являются IP-адреса этих хостов (.e.g Хоста является IP-хоста из A, HostB является IP-хоста из B).
Если telnet работает правильно, вы должны иметь возможность делать net_adm:ping/1
от одного узла к другому, например. на Host A вы будете пинговать имя хоста B. Имя - это то, что возвращает команда node().
.
Вам понадобится предоставить некоторый код и контекст для того, что вы сделали, чтобы получить некоторую помощь. – Suever
Вы проверили конфигурацию брандмауэра и маршрутизатор, если таковые имеются? – Pascal
можете ли вы отправить 'epdm -names' с обоих узлов? – Amiramix