文章出處

 什么是looksalive check和is alive check

      SQL Server故障轉移集群是建立在windows集群服務上的一種熱備的高可用方案。在集群運行過程中,windows集群服務定期檢測節點的資源健康狀態,如果發生了故障,會根據預先定義的故障轉移策略把SQL Server服務從故障節點切換到可用節點上,從而實現SQL Server的高可用。

      而looksalive和isalive就是windows集群服務定期檢測節點的資源健康狀況的兩個方法,它們存在于 resource dll中。

根據資源類型不同,resource dll可分為兩個大類。對于集群IP、DNS名稱、服務服務(SQL Server)、集群磁盤等windows自帶的資源類型,resource dll就是windows集群自帶的Resource DLL——“clusres.dll”中;而對那些自己的專屬資源類型的資源,他們有專屬的resource dll,如SQL Server和sql server agent的resource dll分別為sqlrvres.dll和sqlatres.dll。

    下圖顯示了集群里資源的類型及資源DLL與資源的關系:

clipboard

                      原圖來自《SQL Server 2012實施與管理實戰指南》

 

 

looksalive check和is alive check檢測原理

RHS.exe的進程(windows集群服務進程clussvc.exe生成的)通過調用定義了looksalive check和is alive check方法 resource dll來實現對資源的健康狀態檢測。

在SQL Server故障轉移集群中,對于SQL Server資源,looksalive check和is alive check檢測的原理如下:

looksalive是基本的健康狀態檢測,它通過服務控制管理器(SCM)來檢查SQL Server服務在活躍點是否處于“啟動狀態”,默認每隔5秒檢查一次。

isalive則通過windows集群服務去執行select @@servername(SQL Server 2012之前的版本)或sp_server_diagnostics(SQL Server 2012),然后根據返回的結果來判斷SQL Server是否可用。它默認每隔60秒檢查一次。

      select @@servername是SQL Server 2012之前的版本執行isalive方法的操作。執行的結果返回給故障轉移集群,如果故障轉移集群收到返回的結果,則說明此資源目前在正常狀態。反之,則說明此資源目前已經發生故障。

       這種方法簡單、“粗暴”,能夠適應大多數場景,但如果此時SQL Server負載比較高,沒有在60秒內響應,則可能發生誤判,導致故障轉移發生。為了解決這個問題,在SQL Server 2012及以后的版本上,微軟改進了isalive檢查方法,不再使用select @@servername,取而代之的是使用存儲過程sp_server_diagnostics。

clipboard[1]

      相比select @@servername而言,sp_server_diagnostics返回的結果要詳細得多(如上圖)。SQL Server會利用內部算法來處理sp_server_diagnostics的結果,然后從多個維度來評估SQL Server的健康狀況(系統、資源、查詢、IO等),從而作為windows故障轉移集群判斷是否需要進行故障轉移的依據。除此之外,SQL Server 2012還做了特別的優化:

    執行sp_server_diagnostics的線程使用搶占模式,且線程的OS優先級也高于普通線程;

sp_server_diagnostics每隔20秒執行一次,默認情況下如果3次(60秒)執行的結果都顯示SQL Server資源處于故障狀態,才發生故障轉移

    說明:之所以是60秒,是因為“資源屬性”的HealthCheckTimeout默認為60秒,可以人為改變大小,但一般保持默認即可。

 

配置looksalive check和isalive check

looksalive和isalive檢測的間隔時間可以在“資源屬性”的“高級策略”里面設置,一般采用默認即可,如需更改,可參考下圖的位置設置。

clipboard[2]


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()