【问题标题】:hostname for creating erlang cluster创建 erlang 集群的主机名
【发布时间】:2016-11-28 11:28:03
【问题描述】:

我正在尝试使用亚马逊 EC2 实例构建集群。

我是否必须将每个节点的主机名设置为.hosts.erlang 文件中列出的内容?

目前,每个节点的.hosts.erlang 有:

'ip-10-0-23-186.eu-central-1.compute.internal'.
'ip-10-0-5-10.eu-central-1.compute.internal'.

这是节点的私有 DNS。

vm.args 的节点中,我有这样的东西:

-name api@ip-10-0-5-10.eu-central-1.compute.internal 

我尝试将主机名更改为完整的私有 dns,但它只更改为:

ip-10-0-5-10

我检查了集群,结果是空的:

$ erl
Erlang/OTP 19 [erts-8.0] [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false]

Eshell V8.0  (abort with ^G)
1> nodes().
[]

我使用 edliver 部署我的应用程序,如何调试 erlang 未创建预期集群的原因?

我在iex中试过:

iex(3)> hosts_path = Path.expand("/home/admin/.hosts.erlang") 
"/home/admin/.hosts.erlang"
iex(4)> :net_adm.world(:verbose)
[]

编辑

我可以确认.hosts.erlang 可以读取:

iex(2)> File.read("/home/admin/.hosts.erlang")
{:ok,
 "'ip-10-0-23-186.eu-central-1.compute.internal'.\n'ip-10-0-5-10.eu-central-1.compute.internal'.\n\n"}

是否有我必须从特定文件夹运行 erl?

在浏览器中,我可以看到应用程序正常运行,但我不确定集群..请帮助!

由于我使用的是 AWS,以下是我目前所在的安全组:

【问题讨论】:

  • (你的意思是在iex sn-p中做Path.expand("~/.hosts/.erlang")吗?你也可以在上面做File.read,只是为了确认?)
  • 请参阅上面的编辑
  • 通过不带名称的 erl 启动 shell,您只是启动了一个没有分发的本地节点。运行 mix edeliver ping production 时的输出是什么(或暂存,取决于您正在测试的环境)

标签: erlang elixir edeliver


【解决方案1】:

好的,我找到了解决方案,我必须在hosts文件中定义每个节点的/etc/hosts节点的ip地址

10.0.23.186 ip-10-0-23-186.eu-central-1.compute.internal
10.0.5.10   ip-10-0-5-10.eu-central-1.compute.internal

【讨论】:

    猜你喜欢
    • 2012-10-24
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 2018-08-08
    相关资源
    最近更新 更多