是否可以更改正在运行的 Elixir 节点的名称

Pet*_*ton 4 erlang distributed elixir

我想动态更改梁实例的节点名称。

该用例位于 VM 集群中,我希望启动过程查找 IP 信息,然后从中选择一个名称。

node()
# => :nonode@nohost

# Lookup ip and change name

node()
# => :myapp@x.x.x.x
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 5

是的,你可以net_kernel:start/1在 Erlang 或Node.start/{1,2,3}Elixir 中使用:

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'
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)