Beim Senden einer Nachricht zwischen zwei Remote-Knoten.Nachricht an Remote-Knoten-Port (s) in Erlang senden
Hat erlang: senden verwenden Sie einen einzigen Port wie der für epmd?
Beim Senden einer Nachricht zwischen zwei Remote-Knoten.Nachricht an Remote-Knoten-Port (s) in Erlang senden
Hat erlang: senden verwenden Sie einen einzigen Port wie der für epmd?
erlang: senden nicht Verwenden Sie einen einzigen Port wie der für epmd. Erlang verwendet den EPMD-Port, um andere Knoten zu finden. Daher müssen alle Server an diesem Port miteinander kommunizieren können. In einem Erlang-Cluster sind alle Knoten mit allen anderen Knoten in einem Netz verbunden. Der Erlang epmd verwendet zwei Ports, einen zum Ermitteln anderer Erlang-Knoten (Standardport 4369) und einen dynamischen Bereich für die tatsächliche Kommunikation.
Alle Knoten in einem Cluster müssen die gleiche EPMD-Portnummer für hören verwenden.
Beachten Sie auch, dass Epmd verfolgt, welcher Erlang-Knoten welche Ports auf dem lokalen Computer verwendet. Wenn Sie den Bereich der Ports beschränken möchten, die Erlang für die Inter-Erlang-Node-Kommunikation verwendet, können Sie z. B. 9100-9105 die folgenden Zeilen hinzufügen: inet_dist_listen_min 'und' inet_dist_listen_max '.
Beispiel:
{ kernel, [
{inet_dist_listen_min, 9100},
{inet_dist_listen_max, 9105}
]},
oder beim Start des Erlang-Knoten unter Verwendung von Kernel-Variablen 'inet_dist_listen_min' und 'inet_dist_listen_max'.
Beispiel:
erl -sname foo -kernel inet_dist_listen_min 9100 inet_dist_listen_max 9105
sicherzustellen, dass der Bereich festgelegt Sie genügend Ports für alle Knoten im Cluster zur Verfügung stellt.
Würde das 'set_env' Beispiel funktionieren? Ich vermute, dass der Port ausgewählt wurde, bevor Sie die Möglichkeit haben, Umgebungsvariablen zu ändern. – legoscia
@legoscia hat die Antwort geändert, weil set_env die Kernelvariablen festlegt, aber der Knoten setzt die ursprünglichen Portnummern fort. Sehr eigenartig. – byaruhaf