當一個新的 Node 加入 cluster,會自動與所有的機器連上。譬如說, node3 connect 到 node1,node2 也 conect 到 node1 ,當連線成功時,node2 也可以跟 node3 溝通。
# node 1
iex(node1@localhost)1> Node.connect(:node2@localhost)
true
iex(node1@localhost)2> Node.connect(:node3@localhost)
true
iex(node1@localhost)3>
# node 2
iex(node2@localhost)1> Node.list
[:node1@localhost, :node3@localhost]
cluster 會自動定期溝通確保連線狀態
使用 :net_kernel.monitor_nodes(true)
可以打開 node 連線斷線的通知
# node 1
iex(node1@localhost)1> :net_kernel.monitor_nodes(true)
:ok
# node 2, 3
iex(node2@localhost)1> Node.connect(:node1@localhost)
true
# node 1
iex(node1@localhost)2> flush
{:nodeup, :node2@localhost}
{:nodeup, :node3@localhost}
:ok
我們將 node 2 與 node 3 關閉時也會得到對應的通知
# node 1
iex(node1@localhost)3> flush
{:nodedown, :node2@localhost}
{:nodedown, :node3@localhost}
:ok