问题标签 [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.
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 容器上运行的节点:
我不知道如何解决这个问题。我正在关注这篇博文。
dns - RabbitMQ 不会集群(nxdomain)
我想设置 2 个 rabbitmq 服务器在集群中工作。当试图运行时
rabbitmqctl join_cluster rabbit@my_rabbit_1.my.domain.name
在my_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 查询并成功输出。因此问题。我该如何解决?
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
为正在运行的节点。
erlang - 格式:“读取 /opt/ejabberd/.erlang.cookie 时出错:eacces”
Ejabberd 聚类:
我在两个不同的 Digital Ocean Droplet 中设置了两个 Ejabberd 服务器。我正在尝试在这两台服务器上构建集群。我遵循了 Ejabberd 官方文档中的文档,即“ https://docs.ejabberd.im/admin/guide/clustering/ ”
将 /home/ejabberd/.erlang.cookie 文件从 ejabberd01 复制到 ejabberd02。
确保我的新 ejabberd 节点配置正确。我在其他集群节点上具有相同配置的新节点上的 ejabberd.yml 配置文件。
然后,当我尝试使用以下命令启动集群时: $ ejabberdctl --no-timeout join_cluster 'ejabberd@ejabberd01'
我收到以下错误:
请帮我解决这个问题。
先感谢您
erlang - 如何正确重置epmd?
我有一个带有一些节点的 Erlang 集群。有一天,我想通过使用 net_adm:ping ping 到特定节点来创建一个新节点来加入集群。但是我失败了。当然,这不是 cookie 问题,也不是防火墙问题,因为集群运行良好。只是从集群中的特定节点到新节点的连接失败了。所以,我认为这是一个 EPMD 问题(可能),然后我想在特定节点上重置 EPMD。因此,任何人都可以帮助我指出如何在不重置 VM 的情况下重置 EPMD,以便新节点可以成功连接?
非常感谢!!!
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。
docker - 使用 --net 选项的 docker 之间不共享 Epmd
我试图更多地了解epmd和玩 docker。
我的想法是使用--net=host
如下选项运行两个 docker:
我期待epmd
唯一在第一个 docker 中启动,因为第二个应该意识到已经epmd
在端口 4369 上运行,但令我惊讶的是epmd
两个 docker 中的服务都已启动。
那么,这是预期的行为吗?是否应该关闭其中一个 epmd 服务器?
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 时。
如何解决这种循环依赖?
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 操作,对吗?或者这里的问题可能出在哪里?