KingbaseES V8R3 叢集專用機閘道器失敗分析案例
KingbaseES R3叢集閘道器檢測工作機制:
1、Cluster下watchdog程序在固定間隔時間,通過ping 閘道器地址監控鏈路的連通性,如果連通閘道器地址失敗,則修改cluster status,比如將“master”修改為“lost”,並摘除主節點的Cluster VIP。
2、在部署完成cluster後,會通過crond定時(每隔1分鐘)執行network_rewind.sh指令碼,在指令碼通過函式checktrustip(),檢測閘道器地址的連通性,如果閘道器地址無法連通,ping 3次後失敗,則關閉kingbaseES資料庫例項,清除DB VIP。
3、在部署完成cluster後,會通過crond定時(每隔1分鐘)執行restartcluster.sh指令碼,在指令碼中通過函式 pingtrustip(),監控閘道器地址連通性,如果閘道器地址無法連通,ping 3次後失敗,預設等待10s後,關閉cluster服務程序。
4、閘道器地址恢復正常後,restartcluster.sh程序會重新啟動cluster服務程序,但是資料庫程序仍然需要人工介入,手工啟動。
案例資訊:
一、案例分析過程
1、主備庫連線閘道器失敗
主庫“2022-04-06 15:57:23”秒,cluster.log記錄主庫連線閘道器失敗。
備庫“2022-04-06 15:57:32”秒,cluster.log記錄主庫連線閘道器失敗。
2、主備庫嘗試連線閘道器
=注:主備庫按照引數HEALTH_CHECK_MAX_RETRIES,HEALTH_CHECK_RETRY_DELAY配置的閾值進行閘道器連線嘗試。=
3、2022-04-06 15:57:44 主庫多次連線閘道器失敗,主庫資料庫服務被shutdown,觸發主備切換。
4、2022-04-06 15:57:44 發生主備切換時,備庫仍然也不能ping通閘道器,導致備庫的資料庫服務也被shutdown,切換失敗。
5、最終結果是,因為主備庫都和閘道器無法正常通訊,主備庫資料庫服務都是shutdown;但後面閘道器可以ping 通時,kingbasecluster服務被重啟,但是資料庫服務需要人工參與啟動。
二、總結
1、KingbaseCluster的節點通過測試和閘道器地址的連通性來判斷叢集的執行環境及節點的狀態。
2、如果閘道器ip出現故障,導致叢集所有的節點無法連通閘道器地址時,叢集為了保護後臺資料庫資料的一致性將會關閉叢集,包括後臺資料庫服務。
3、在閘道器恢復正常後,將重啟叢集的管理服務(kingbasecluster),但是後臺資料庫服務需要人工判斷後手工啟動。
4、為了確保叢集的穩定,可以配置多個閘道器地址,降低因為閘道器故障而導致叢集停止服務的因素。
5、在新的版本中,提升了閘道器故障的處理能力,可以參閱官網文件《支援閘道器故障》章節。