天天看點

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

4.5、gp_segment_connect_timeout

五、總結

上一篇: swagger UI配置

繼續閱讀