【发布时间】:2020-03-17 07:55:32
【问题描述】:
我想动态更改一个梁实例的节点名称。
用例位于 VM 集群中,我希望启动过程查找 ip 信息,然后从中选择一个名称。
node()
# => :nonode@nohost
# Lookup ip and change name
node()
# => :myapp@x.x.x.x
【问题讨论】:
标签: erlang elixir distributed
我想动态更改一个梁实例的节点名称。
用例位于 VM 集群中,我希望启动过程查找 ip 信息,然后从中选择一个名称。
node()
# => :nonode@nohost
# Lookup ip and change name
node()
# => :myapp@x.x.x.x
【问题讨论】:
标签: erlang elixir distributed
是的,你可以在 Erlang 中使用 net_kernel:start/1 或在 Elixir 中使用 Node.start/{1,2,3}:
1> node().
nonode@nohost
2> net_kernel:start(['myapp@1.2.3.4']).
{ok,<0.60.0>}
(myapp@1.2.3.4)3> node().
'myapp@1.2.3.4'
iex(1)> Node.self
:nonode@nohost
iex(2)> Node.start :"myapp@1.2.3.4"
{:ok, #PID<0.83.0>}
iex(myapp@1.2.3.4)3> Node.self
:"myapp@1.2.3.4"
【讨论】:
epmd 没有在系统上运行。看看这个问题和答案:stackoverflow.com/questions/18240319/ensure-epmd-started