簡單的主備切換方案

 主備切換是很多高可用性系統都必須解決的問題,方法有很多,象基於ZooKeeper的主備切換就是一個很好的選擇。

 
在這裏提供一種更簡單但不完美的主備切換方法:
1) 假設A和B是集羣中的主控(Master)節點
2) 1~7是工作節點(如HDFS中的DataNode)
3) 在每個工作節點上,都同時配置了A和B的IP,而且是對等的,無主備之分
 
所謂主:是指提供服務的主控,而備是指不提供服務的主控,當主故障時,由備接管其它服務,但因網絡原因,可能主和備都未故障,這個是解決主備切換的關鍵問題所在。
 
選擇A或B作爲主的過程:
1) 未連接之前,如圖1所示,A和B都不是主
2) 1~7隨機選擇連接到A或B
3) 這個時候可能會出現如圖2所示的情況
4) (關鍵點)在指定的時間內(如1秒),不管是A還是B,發現到自己的連接數小於50%(這個值可修改)就主動切斷連接,這個時候會將本來和自己建立連接的節點趕往另一邊
5) 當A或B發現到自己的連接數超過60%(這個值可修改)時,就認爲自己是主了,並保持連接
6) 這樣當A或B有一個掛掉時,最終肯定會有一個滿足作爲主的條件
 
如果是網絡原因,而不是A或B本身故障,則會出現一些可以連接到A但不能連接到B,而另一些可以連接到B但不能連接到A,甚至還有些可以同時連接A和B,但總是隻有滿足超過50%的才提供服務,這樣就不會出現同時存在兩個主的情況。所以,如果恰好是一半一半,那就無法提供服務,需要人工干預了,比如工作節點,平均分配在兩個不同IDC,由於兩個IDC間網絡故障,問題就會出現。

圖1

圖2

圖3
 
 
會不會導致A和B都是40%或50%了?這個會,但會觸發重新競爭分配,只需要做一些策略調整,就可以解決這個問題,比如A是每1秒算一個間隔,B爲2秒一個間隔。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章