Greenplum--FTS故障檢測原理

前言

FTS(Fault Tolerance Serve)是GreenPlum中的故障檢測服務,是保證GP高可用的核心功能。GreenPlum的Segment的健康檢測及HA是由GP Master實現的,GP Master上面有個專門的進程–FTS進程,它可以快速檢測到Primary或者Mirror是否掛掉,並及時作出Primary/Mirror 故障切換。

一、FTS架構

GreenPlum的Segment的健康檢測及HA是由GP Master實現的,GP Master上面有個專門的進程–FTS進程,它可以快速檢測到Primary或者Mirror是否掛掉,並及時作出Primary/Mirror 故障切換。如果FTS掛掉了,Master將會重新fork出來一個FTS進程。
Greenplum--FTS故障檢測原理

二、FTS實現原理

GP Master上面的FTS進程每隔60s(時間可以配置)向Primary或者Mirror發送心跳包,Primary和Mirror收到心跳包後返回它們的當前狀態,FTS進程心跳包的發送狀態和Segment返回狀態更新元信息和作出故障切換。因爲Segment可能很多,爲了加快檢測速度,FTS是多線程的,默認16個線程。
Greenplum--FTS故障檢測原理

三、Segment檢測及故障切換

GP Master首先會檢測Primary狀態,如果Primary不可連通,那麼將會檢測Mirror狀態,Primary/Mirror狀態總共有4種:
Primary活着,Mirror活着。GP Master探測Primary成功之後直接返回,進行下一個Segment檢測;
Primary活着,Mirror掛了。GP Master探測Primary成功之後,通過Primary返回的狀態得知Mirror掛掉了(Mirror掛掉之後,Primary將會探測到,將自己變成ChangeTracking模式),這時候更新Master元信息,進行下一個Segment檢測;
Primary掛了,Mirror活着。GP Master探測Primary失敗之後探測Mirror,發現Mirror是活着,這時候更新Master上面的元信息,同時使Mirror接管Primary(故障切換),進行下一個Segment檢測;
Primary掛了,Mirror掛了。GP Master探測Primary失敗之後探測Mirror,Mirror也是掛了,直到重試最大值,結束這個Segment的探測,也不更新Master元信息了,進行下一個Segment檢測。
Greenplum--FTS故障檢測原理

四、參數配置

4.1、gp_fts_probe_threadcount

用來故障檢測的線程數量,默認爲16。

4.2、gp_fts_probe_interval

兩次檢測的時間間隔,默認爲60s。如果一次檢測時間使用10s,那麼剩餘50s將會sleep;如果超過60s,將會直接進入下一次檢測。

4.3、gp_fts_probe_timeout

檢測Segment超時時間,默認值: 20。

4.4、gp_fts_probe_retries

檢測Segment失敗重試次數,如果超過這個次數,將會認爲當前節點掛掉,默認值: 5。

4.5、gp_segment_connect_timeout

Prmary和Mirror文件同步允許連接Mirror最大超時時間,如果達到這個超時時間,Primary將會認爲Mirror掛掉了,默認值: 180s。

五、總結

通過GreenPlum FTS機制學習,可以瞭解部分MPP架構高可用原理。同時根據自身的業務,合理地配置FTS參數,保障GP高可用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章