【问题标题】:How to connect erlang nodes on different platforms如何连接不同平台的erlang节点
【发布时间】:2016-08-03 15:47:58
【问题描述】:

如何使用 erl -name anynode@hostname 将 windows 10 上的 Erlang 节点与 freeBSD 10.3 vm 上的 Erlang 节点连接起来?

【问题讨论】:

  • AFAIK 主机和来宾之间有两种联网情况。一是客人从常规的 DHCP 服务器(与主机相同)获取他的 IP。另一种方法是在来宾和主机之间创建一个虚拟网络。无论哪种方式,您都应该能够使用ipconfig (windows) 和ifconfig (FreeBSD) 命令看到这一点。检查什么是 ips 并检查它们之间的ping(从主机到客人和客人到主机),如果它有效,那么这可能是用作 hostname 的正确 ip。

标签: erlang


【解决方案1】:

正如我在评论中所写,您首先需要确定主机(Windows)和您的来宾(FreeBSD VM)之间的内部网络(子网)。在 Windows 上使用ipconfigifconfig 命令来获取信息。
您可能会注意到主机中的一个 IP 与来宾中的一个 IP 具有相同的前缀,因此这是子网。例如,如果主机的 IP 为 192.168.2.10,而访客的 IP 为 192.168.2.11,这意味着 192.168.2.x 是它们之间的网络。现在我们可以继续连接这些节点了。

有几个简单的步骤:

  1. 使用正确的 IP 和通用 cookie 输入 shell。
    在 Windows 上 - werl -name windows_node@192.168.2.10 -setcookie 'mycookie'.
    在 FreeBSD 上 - erl -name freebsd_node@192.168.2.11 -setcookie 'mycookie'.
    您可以在此处和此处阅读有关 cookie 的更多信息。
  2. 在节点之间连接。这可以通过net_adm:ping/1net_kernel:connect_node/1 完成。您只需要从其中一个 shell 中执行此操作。示例:
    从 Windows 外壳 - net_adm:ping('freebsd_node@192.168.2.11')
    来自 Linux shell - net_kernel:connect_node('windows_node@192.168.2.10')
  3. 您的节点现在应该已连接。您可以通过从任一 shell 调用 nodes() 来检查这一点。

【讨论】:

    【解决方案2】:
    1. 运行 erlang 节点的主机(windows 和 BSD VM)之间必须有 IP 连接,您可以使用 ping 验证。
    2. Erlang 节点必须使用相同的魔法 cookie 启动,启动 erlang 节点时使用 -setcookie "cookie"。
    3. 通过在 shell 中运行 nodes() 来查看 erlang 节点是否可以互相看到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-19
      • 2011-04-11
      • 2014-06-28
      • 1970-01-01
      • 2017-12-16
      • 2013-04-16
      • 1970-01-01
      • 2021-04-18
      相关资源
      最近更新 更多