2017-05-11 37 views
0

採取官方示例akka-sample-cluster-java用於演示:
1.首先,啓動其也是種子節點分別重新啓動所有後端節點後,akka前端節點如何連接到羣集?

sbt 'runMain sample.cluster.factorial.FactorialBackendMain 2551' 
sbt 'runMain sample.cluster.factorial.FactorialBackendMain 2551' 

一切都應該罰款前端節點

sbt 'runMain sample.cluster.factorial.FactorialFrontendMain' 

2.開始絲束後端節點現在。

[info] [INFO] [05/11/2017 17:40:42.822] [ClusterSystem-akka.actor.default-dispatcher-3] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node 
[akka.tcp://[email protected]:2551] - Node 
[akka.tcp://[email protected]:2552] is JOINING, roles [backend] 
[info] [INFO] [05/11/2017 17:40:43.349] [ClusterSystem-akka.actor.default-dispatcher-4] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node 
[akka.tcp://[email protected]:2551] - Leader is moving node 
[akka.tcp://[email protected]:2551] to [Up] 
[info] [INFO] [05/11/2017 17:40:43.349] [ClusterSystem-akka.actor.default-dispatcher-4] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node 
[akka.tcp://[email protected]:2551] - Leader is moving node 
[akka.tcp://[email protected]:2552] to [Up] 
[info] [INFO] [05/11/2017 17:40:43.349] [ClusterSystem-akka.actor.default-dispatcher-4] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node  
[akka.tcp://[email protected]:2551] - Leader is moving node   
[akka.tcp://[email protected]:56431] to [Up] 

然而,當我擋住了兩個後端節點(按Ctrl + C),並再次重新啓動它們,無論是後端節點的狀態始終是「加盟」,並且不能被改爲「向上」。

[info] [INFO] [05/11/2017 17:39:32.356] [ClusterSystem-akka.actor.default-dispatcher-4] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node [akka.tcp://[email protected]:2551] - Node [akka.tcp://[email protected]:2551] is JOINING, roles [backend] 
[info] [INFO] [05/11/2017 17:39:35.637] [ClusterSystem-akka.actor.default-dispatcher-3] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node 
[akka.tcp://[email protected]:2551] - Node 
[akka.tcp://[email protected]:56431] is JOINING, roles [frontend] 

前端節點如何在不重新啓動前端節點的情況下自動加入種子節點?它在重新啓動前端節點時起作用。

回答

0

一旦形成羣集,羣集中的節點將停止查找(其他)種子節點:種子節點僅用於羣集的初始形成。

如果您想在本例中重新啓動'後端'節點並讓它們加入已經運行的'前端'節點,那麼'後端'節點將不得不啓動到'前端'節點的連接,而不是反之亦然。換句話說:'前端'節點然後充當這些新啓動的後端節點的種子節點。

在本示例中,這有點棘手,因爲'前端'節點沒有監聽可預測的端口號。

如果您進行了調整以使其成爲可能,請記住,此示例使用「自動關閉」作爲下降策略。這意味着當集羣領導者暫時無法到達節點時,它會將該節點標記爲(永久)「關閉」。即使節點返回,它也不能再加入羣集的原始地址,現在永久地禁止羣集(爲了防止某些未定義的行爲和「裂腦」問題)。

請注意,在生產中,您可能不會使用自動關閉功能,而是運行可從外部查看節點的工具,並決定哪些節點僅考慮「無法訪問」以及哪個節點永久停用。

+0

讚賞您的答案! –

相關問題