群集主節點故障,卻沒有發生資源切換的故障與問題研究

2021-09-04 13:45:30 字數 2339 閱讀 9260

這次遇到的問題很有意思,按常理來說,群集的價值就在於高可用,就在於當乙個節點出現故障時,自動將服務切換到另一台可以正常工作的節點上。。但這次我遇上的卻正好相反,一次典型的節點故障,沒有觸發資源的切換,反而導致整個群集失效。。

先來看一下這次故障的處理過程,很快,也很簡單。。

最初現象:

sql資料庫服務發現不可用,業務系統中斷

初步排查情況:

檢查後發現群集資源處於離線狀態,sql群集資源無法啟動,日誌中存在大量群集失敗的記錄

同時,伺服器巡檢發現a節點(主節點)伺服器的乙個網口燈處於熄滅狀態。所以趕緊將其接到第三網口上

系統檢查的工作發現系統日誌中記錄了某一時間點a節點伺服器的兩個網口同時發生中斷的資訊。隨後出現群集相關的失敗資訊。

再次檢查伺服器網路介面卡,兩個網口狀態正常

但在群集管理器中,心跳線網路仍然顯示為失敗狀態

使用ping命令測試,也無法通過心跳線網路ping通對方

啟動群集驗證工具,報告中也顯示很多網路狀態相關報錯

錯誤恢復:

綜合以上各方面的情況,最後認為是a節點伺服器的網絡卡控制器壞掉,連帶兩個網口均出現故障。

所以,我們將另外一條網線(其實就是心跳線)切換到伺服器的第四網口上。

群集狀態立即恢復了。

經最終確認,sql服務狀態恢復,業務狀態也得以恢復。

經過以上的排錯過程,問題是解決了。但我們仍然心存疑慮,甚至是憂慮。因為這是一次典型節點故障,而高可用變成了不可用。

所以在此之後,有花了很大的精力去調查這個事情。最終,還是得到了一些答案。。

對於整個問題的分析如下:

在故障之前,群集資源執行在節點a上面

到某個時間點的同一時間,節點a上的public和private兩個網路介面同時斷開。同時,節點b上也發現private介面中斷。此時,為發生故障的第一時間。

在故障發生之後,節點b由於網路斷開先是從群集中被移除,這時群集服務終止,之後它開始嘗試重起群集服務,單是由於通訊仍故障,及仲裁資源仍在節點a上面,節點b無法啟動群集服務。

節點a故障之後,我們很快將資料介面的網線進行了切換,但僅恢復了資料鏈路的狀態,其實心跳線鏈路仍然處於故障狀態之中。並且,群集服務還是處於活的狀態,所以它一直保持了對仲裁盤和資源盤的控制。這一點就是本次事故的關鍵所在!

也正是這個原因,所以導致節點b發起的接管請求,都被拒絕了。導致群集資源在第一時間無法切換到節點b上。

而這時節點a的網路故障依舊存在,無法在dns上進行註冊資源名稱,所以雖然群集服務是活的,但是用於sql的群集資源卻無法正常提供服務。

並且這時又由於心跳線的故障,所以節點a發現無法繼續提供服務,並嘗試在第二時間進行群集切換時,卻找不到可用的群集節點b。而節點b也無法聯絡到群集節點a和總裁磁碟,也就無法加入到群集環境中。

然後以上狀態一直持續到我們將節點a的心跳線恢復正常之後,才得以恢復。

解決辦法:

通過這次故障,我們可以發現,實際上是有兩個時間點可以進行群集資源的切換。。但由於種種情況,在這兩次時間點都沒有成功的抓住機會。

那麼先來看一下第乙個時間點。

第乙個時間點的核心問題其實就在於節點a發生故障以後,沒有將資源進行釋放,它認為自己是主節點,僅僅是網路故障而已,所以繼續控制群集資源。這樣就導致實際故障的節點控制資源不放,而實際正常的節點無法請求到資源。

這裡要解釋一點,理論上的正常情況下,比如節點a突然掉電了,那麼這個時候共享儲存實際上已經脫離節點a的控制。所以這時候,節點b可以很輕鬆的將其接管過來。而如果節點a與共享儲存之間的鏈結正常,並且群集服務正在控制共享儲存的話,節點b在這種情況下是無法接管過來的。

對於這樣的一種機制,我們發現,它跟windows 2003的時候是截然相反的。在win03時代,無論發生何種故障,主節點馬上釋放共享儲存,然後進行仲裁。

諮詢了微軟官方人士,得到的答覆是說,win03時代的這種機制,會造成群集資源的過度切換,或者叫頻繁切換。。所以在windows 2008裡,群集資源的切換,多了乙個評估過程,簡單說就是只有當一定嚴重程度的問題發生,或者自身進行一些檢測確定它確實無法繼續工作時才會促發資源的切換。。

對於這一點,或者這個時間點上的事情,看來我們是無能為力了。。

再來看一下第二個時間點

第二個時間點上,節點a發現無法進行資源的dns註冊,群集服務確實無法正常啟動。這時它才開始去找另外的群集節點,結果這時心跳線是故障狀態,所以無法與節點b進行通訊,當然也就找不到節點b了。

那麼在這種情況下,唯一能夠起到預防作用的辦法就是,盡可能多的增加心跳線的對數。並且最好不要插在同乙個控制器所屬的網口上。

也只有這個辦法才能夠預防類似以上情況的故障再次發生。。

Hyper V故障轉移群集

hyper v故障轉移群集配置完成後,在故障轉移群集管理器中新建虛機 角色 虛擬機器 新建虛擬機器 如果直接在hyper v管理器中新建虛機,則不是高可用,需要在故障轉移群集管理器中將其新增進來使其成為高可用 角色 配置角色 選中虛擬機器 完成 hyper v群集規劃 在配置故障轉移群集之前,先將虛...

mariadb galera群集故障記錄

負責galera上執行刪除語句 delete from t1 where group id 2 and group id 3 執行後,群集破壞,除了主節點存活,其他倆個節點全都停掉。檢視galera的限制,沒有主鍵的表,不支援delete操作。但是檢視刪除資料的表是有主鍵的,只不過刪除不是根據主鍵刪...

故障轉移群集的筆記

引入 負載均衡等技術來解決 2 業務非常重要,屬於關鍵業務 通常和生產緊密聯絡 如 核電站的溫控系統 鋼鐵廠的製造管理系統 ica 交易 電子銀行 引入高可用技術,如 故障轉移群集 負載均衡 每乙個節點都可以對外提供服務 節點出現故障時,該節點的服務物件需要重新請求服務 故障轉移群集 任意時刻,只有...