【问题标题】:Erlang: set node name that is persistent across host changesErlang:设置跨主机更改持久的节点名称
【发布时间】:2017-08-11 19:34:31
【问题描述】:

我有一台使用 VPN 的笔记本电脑,而且我的主机名经常更改。每次发生这种情况时,我都会得到不同的 Erlang 节点名称。 node (http://erlang.org/doc/reference_manual/distributed.html) 的文档似乎没有指定一种静态设置的方法。

如何将我的机器的节点名永久配置为在网络更改时保持不变?

【问题讨论】:

  • -sname 标志 erl 命令是否适合您?
  • @AsierAzkuenaga 否,因为它不会使用 erl 启动。有没有办法将其设置为环境变量?
  • 它是如何上线的?
  • 通过 rebar/relx 发布。
  • 有时在普通测试中使用rebar3 ct

标签: erlang


【解决方案1】:

如果您使用 Rebar,您应该在某处有一个 vm.args,您可以在此处设置 -sname my_permanent_node_name 标志。

请注意,运行标志 -sname 的节点与运行标志 -name 的节点之间不能存在通信。

【讨论】:

  • 好的。当我使用./_build/.... 严格执行发布时,这似乎有效。但是,然后我使用rebar3 ct 启动应用程序,它仍然出现noname@nohost。有什么想法吗?
【解决方案2】:

仍然会接受 Asier 的回答,因为它解决了它可以正常运行。

添加这个是因为在运行 rebar3 ct 时,我遇到了这个问题:http://erlang.org/pipermail/erlang-questions/2016-March/088414.html。也就是说,rebar3 ct 不尊重 rebar.config 节点名称。我能够使用该邮件线程中的答案解决此问题:

set -x REBAR3_ERL_ARGS "-sname myapp@localhost"; rebar3 local install; env DEBUG=1 ~/.cache/rebar3/bin/rebar3 ct

所以结合这两个答案我解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 2011-12-09
    • 2014-02-07
    • 1970-01-01
    • 2011-07-04
    • 2019-12-03
    • 1970-01-01
    相关资源
    最近更新 更多