问题标签 [epmd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1042 浏览

docker - 将本地 Elixir/Erlang 连接到 Docker 容器内正在运行的应用程序

我有一个 Elixir 应用程序在 Docker 容器中运行(在我的笔记本电脑中)。Elixir 应用程序使用以下命令执行:

并且 Docker 容器公开了以下端口:

0.0.0.0:4000->4000/tcp, 0.0.0.0:4369->4369/tcp, 0.0.0.0:9000->9000/tcp

  • 凤凰服务器 4000
  • 4369 用于 EPMD
  • 9000 用于 VM 节点

然后我尝试使用以下命令使用 IEx shell 进行连接:

iex --name local@127.0.0.1 --cookie secret导致此错误: Protocol 'inet_tcp': register/listen error: epmd_close

这似乎是因为本地epmd守护进程正在尝试分配端口 4369,但是,这已经分配给了 Docker 容器。

然后我像这样更改了 EPMD 端口:

ERL_EPMD_PORT=4370 iex --name local@127.0.0.1 --cookie secret

我设法打开了 IEx 会话。但是,我找不到在 Docker 容器上运行的节点:

我不知道如何解决这个问题。我正在关注这篇博文

0 投票
2 回答
4329 浏览

dns - RabbitMQ 不会集群(nxdomain)

我想设置 2 个 rabbitmq 服务器在集群中工作。当试图运行时

rabbitmqctl join_cluster rabbit@my_rabbit_1.my.domain.namemy_rabbit_1

我明白了unable to connect to epmd (port 4369) on my_rabbit_2.my.domain.name: nxdomain (non-existing domain)

我用rabbitmq:latest(debian),.erlang.cookie也是一样,hosts解析很好:我可以ping双向,nmap -6 -p 4369 my_rabbit_2.my.domain.nam返回4369/tcp open epmd

编辑:

tcpdump表明在解析主机名时,rabbit或者epmd不执行两种类型的 DNS 查询:IPv6 的 AAAA 和 IPv4 地址的 A,但只有 IPv4 重复失败,nxdomain因为没有可用的 IPv4 地址。但是,它不会尝试 AAAA DNS 查询,除非尝试运行如下命令rabbitmq -n rabbit@local.machine.domain.name:然后它会运行 AAAA 查询并成功输出。因此问题。我该如何解决?

0 投票
1 回答
1168 浏览

debugging - 设置短名称时连接到生产节点

我在我的 3 台服务器上运行 Elixir 应用程序。我最近需要连接节点,以便我可以在它们之间同步一些东西,为此我为每个节点设置了短名称。

我正在使用 Edeliver/Distillery 生成发布和部署。我复制var/vm.args到每个节点上的发布目录并更改-name blah@ip-sname name@nodename. 节点可以毫无问题地看到并相互连接。

在为每个节点命名之前,当我需要调试我的应用程序时,我使用 ssh 远程连接到我的节点。我使用了这种方法:

  • ssh node -L 4369:127.0.0.1:4369
  • 在我的本地机器上运行epmd -names以找出我的应用程序的端口
  • 杀死最后一个 ssh 并运行ssh node -L 4369:127.0.0.1:4369 -L port:127.0.0.1:port以访问我机器上正在运行的节点
  • iex --hidden --erl '-name debug -setcookie cookie_like_server'在我的机器上运行
  • 现在我可以访问远程节点,例如我可以observer用来查看我的远程节点

现在同样的程序行不通了。

首先,我看到一个错误,说使用短名称和长名称的节点显然无法相互连接。

我将iex命令更改iex --hidden --erl '-sname debug -setcookie cookie_like_server'为使用短名称。当我尝试连接到远程节点时,这种方式连接超时observer

我真的不明白这个问题。难道我做错了什么?这里有另一种访问使用短名称的正在运行的节点的方法吗?

顺便说一句,我使用 ssh 来加密我的流量。请告诉我是否有使我的连接不加密的解决方案,尽管我可能不会使用它,或者以某种方式通过 ssh 将其隧道化。

更新

我尝试了@christophe-de-troyer 建议的方法。TLDR,没有用。

ssh prod-1 -L 4369:127.0.0.1:4369正在运行,并正确epmd -names报告backend-platform为正在运行的节点。

0 投票
1 回答
625 浏览

erlang - 格式:“读取 /opt/ejabberd/.erlang.cookie 时出错:eacces”

Ejabberd 聚类:

我在两个不同的 Digital Ocean Droplet 中设置了两个 Ejabberd 服务器。我正在尝试在这两台服务器上构建集群。我遵循了 Ejabberd 官方文档中的文档,即“ https://docs.ejabberd.im/admin/guide/clustering/

  1. 将 /home/ejabberd/.erlang.cookie 文件从 ejabberd01 复制到 ejabberd02。

  2. 确保我的新 ejabberd 节点配置正确。我在其他集群节点上具有相同配置的新节点上的 ejabberd.yml 配置文件。

  3. 然后,当我尝试使用以下命令启动集群时: $ ejabberdctl --no-timeout join_cluster 'ejabberd@ejabberd01'

我收到以下错误:

请帮我解决这个问题。

先感谢您

0 投票
0 回答
65 浏览

erlang - 如何正确重置epmd?

我有一个带有一些节点的 Erlang 集群。有一天,我想通过使用 net_adm:ping ping 到特定节点来创建一个新节点来加入集群。但是我失败了。当然,这不是 cookie 问题,也不是防火墙问题,因为集群运行良好。只是从集群中的特定节点到新节点的连接失败了。所以,我认为这是一个 EPMD 问题(可能),然后我想在特定节点上重置 EPMD。因此,任何人都可以帮助我指出如何在不重置 VM 的情况下重置 EPMD,以便新节点可以成功连接?

非常感谢!!!

0 投票
1 回答
2526 浏览

rabbitmq - Windows 10 上的 RabbitMQ - 无法连接到 epmd:地址(无法连接到主机/端口)

一段时间以来,我一直在努力让 RabbitMQ 在我的机器上再次工作,但没有成功。它已安装并工作,然后出了点问题。我已经卸载并安装了 v3.8.0(带有 Erlang 版本 22)。

我已经运行rabbitmq-service.bat start并且服务启动成功,但是当我运行时rabbitmqctl.bat list_users出现以下错误:

我在本地运行它,它以前一直在工作。

我已经检查过.erlang.cookie,它们是正确的。

我已运行rabbitmq-plugins enable rabbitmq_management命令启用管理插件,但无法连接到管理 UI。

0 投票
0 回答
166 浏览

docker - 使用 --net 选项的 docker 之间不共享 Epmd

我试图更多地了解epmd和玩 docker。

我的想法是使用--net=host如下选项运行两个 docker:

我期待epmd唯一在第一个 docker 中启动,因为第二个应该意识到已经epmd在端口 4369 上运行,但令我惊讶的是epmd两个 docker 中的服务都已启动。

那么,这是预期的行为吗?是否应该关闭其中一个 epmd 服务器?

0 投票
1 回答
81 浏览

erlang - 从二进制安装 Erlang 和 epmd 具有循环依赖关系

原谅我的英语。

我正在尝试在未连接到 Internet 的 SUSE Linux Enterprise Server 版本 12 补丁 3 上安装 Erlang 23,因此我无法使用 zypper 或 wget 并且必须使用二进制文件手动安装它。

我收到以下错误:

  • erlang-epmd is needed by erlang-23.0.2-1.2.x86_64安装erlang时。
  • erlang = 23.0.2 is needed by erlang-epmd-23.0.2-1.2.x86_64安装 erlang-empd 时。

如何解决这种循环依赖?

0 投票
1 回答
90 浏览

erlang - 具有非默认 EPMD 端口的 Erlang 节点不再响应 ping

如果我启动我的单节点应用程序,则在默认的 EPMD 端口 4369 上 ping 成功。如果我现在将端口更改ERL_EPMD_PORT: 44370为不同的端口,我将无法再连接到它。EPMD 正在监听 44370。经过一些调试后,我发现以下 ping 代码由于pang处理而暂停了我的应用程序。我在这里除了乒乓球。

平码:

注意:我知道集群需要使用相同的 EPMD 端口才能在集群模式下工作。但到目前为止,节点还没有准备好连接到其他节点。它已经停止 ping 自身。另一方面,如果使用默认端口,一切正常。

似乎net_adm:ping(Host)没有使用 env 变量ERL_EPMD_PORT进行 ping 操作,对吗?或者这里的问题可能出在哪里?

0 投票
0 回答
41 浏览

rabbitmq - 最终的 RabbitMQ 崩溃

我想了解 RabbitMQ 错误的日志。谁能帮我破译以下错误信息:

在此处输入图像描述

有趣的是,在我的例子中,我有一个运行 RabbitMQ 3.8.8 和 erlang 23 的服务器,但是在运行了很长时间后突然发生了这个崩溃。

也许它与端口 25672 连接有关?

错误重复了几个小时,直到我们注意到,然后整个服务器重新启动,这一事实使 rabbitmq 再次运行,一切顺利。

所以问题是,这个错误意味着什么,端口 25672 没有响应?