[發明專利]基于仲裁服務器的集群裂腦預防方法和裝置有效
| 申請號: | 201310615821.1 | 申請日: | 2013-11-23 |
| 公開(公告)號: | CN103684941B | 公開(公告)日: | 2018-01-16 |
| 發明(設計)人: | 蔡強;董春青;袁泉 | 申請(專利權)人: | 廣東中興新支點技術有限公司 |
| 主分類號: | H04L12/28 | 分類號: | H04L12/28;H04L12/46 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 510663 廣東省廣州市天*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 仲裁 服務器 集群 預防 方法 裝置 | ||
1.基于仲裁服務器的高可用集群裂腦預防方法,其特征在于:
集群內服務器節點啟動服務前必須向仲裁服務器申請服務鎖,未獲得服務鎖的集群節點不得啟動服務;當節點死或心跳線故障時,未運行服務的子集群通過定期向仲裁服務器申請服務鎖來決定是否接管服務;申請到服務鎖則接管服務,未申請到服務鎖則不予接管;從而避免服務在多個子集群內同時運行;
其中:裂腦狀態是集群分裂成數個子集群,彼此失去聯系并認為其他節點已死,并嘗試從″已死節點″接管資源;從而導致服務在多個節點同時運行、共享存儲數據損壞一系列嚴重問題;
啟動服務前需要取得服務鎖,
服務未運行節點在嘗試接管服務開始,在t_giveup時間內定期向仲裁服務器申請服務鎖,當仲裁服務器的相應服務鎖處于unlocked狀態時,服務未運行節點將搶占服務鎖,并進行服務接管;
服務運行節點定期刷新服務鎖,
所述服務運行節點所在子集群選出一個通信節點和仲裁服務器通信,定期發送刷新服務鎖消息到仲裁服務器,進行服務鎖時間戳的刷新;
服務故障會停止服務并釋放服務鎖,
當服務在運行節點因故障而停止,服務將服務鎖釋放回仲裁服務器;該子集群內部會選擇一個備份節點嘗試申請服務鎖并接管服務,該備份節點向仲裁服務器申請服務鎖成功后,將進行服務接管,并成為新的服務運行節點;若備份節點啟動服務失敗,將停止服務并再次釋放服務鎖;
當服務運行子集群中的所有備份節點連續申請服務鎖及接管服務失敗,除非有新的節點狀態變化事件,否則該子集群將不再嘗試申請服務鎖及接管該服務;
集群與仲裁服務器中斷聯系的處理,
服務運行子集群會選出一個節點作為仲裁服務器通信節點;當服務運行子集群通信節點檢測出當前時間與刷新服務鎖成功時間之差超過預定的t_timeout時間,則認為與仲裁服務器斷開連接,服務運行子集群會嘗試選舉其他節點和仲裁服務器進行通信,當所有節點均無法和仲裁服務器通信,服務運行子集群變成孤立子集群,失去仲裁服務器的仲裁功能;
所述的服務運行子集群變成孤立子集群,如果該子集群節點數量小于等于原集群節點數量的1/2,服務運行節點必須停止服務;在t_giveup時間內服務不能正常停止時,服務運行節點要執行重啟系統動作,并且服務運行子集群中備份節點不能接管服務,亦不再發送刷新服務鎖消息到仲裁服務器;
所述的服務運行子集群變成孤立子集群,如果服務運行子集群的節點數量大于原集群的節點數量的1/2,服務運行節點無需停止服務,繼續保持對外服務;
仲裁服務器端的服務鎖處理,
所述的仲裁服務器檢測當前時間與服務鎖刷新時間戳之差超過預定的時間t_timeout,則仲裁服務器認為服務運行子集群已斷開連接,把服務鎖的狀態置為unknown狀態;
仲裁服務器在把服務鎖的狀態置為unknown狀態后的t_giveup時間把服務鎖的狀態置為unlocked狀態;
仲裁服務器在把服務鎖的狀態置為unlocked后,如果收到新的服務鎖申請,則將服務鎖分配給該節點。
2.根據權利要求1所述的方法還包括仲裁服務器的高可用冗余機制,其特征在于:
為避免仲裁服務器成為單點故障源,集群內設置奇數臺仲裁服務器,在服務鎖搶鎖時,按照搶得服務鎖>1/2仲裁服務器節點數者勝出原則,進行服務接管。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廣東中興新支點技術有限公司,未經廣東中興新支點技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310615821.1/1.html,轉載請聲明來源鉆瓜專利網。





