Greenplum——FTS故障检测原理

  

前言

  

FTS(容错服务)是GreenPlum中的故障检测服务,是保证全科医生高可用的核心功能.GreenPlum的段的健康检测及HA是由医生掌握实现的,医生掌握上面有个专门的进程FTS进程,它可以快速检测到初级或者镜子是否挂掉,并及时作出主/镜子故障切换。

  

一、FTS架构

  

GreenPlum的段的健康检测及HA是由医生掌握实现的,医生掌握上面有个专门的进程FTS进程,它可以快速检测到初级或者镜子是否挂掉,并及时作出主/镜子故障切换。如果FTS挂掉了,主人将会重新叉出来一个FTS进程。
 GreenPlum——FTS故障检测原理

  

二,FTS实现原理

  

GP大师上面的FTS进程每隔60年代(时间可以配置)向主或者镜子发送心跳包,主要和镜子收到心跳包后返回它们的当前状态,FTS进程心跳包的发送状态和部分返回状态更新元信息和作出故障切换。因可为部分能很多,为了加快检测速度,FTS是多线程的,默认16个线程。
 Greenplum——FTS故障检测原理

  

三、段检测及故障切换

  

GP主首先会检测主要状态,如果主要不可连通,那么将会检测镜状态,主要/镜状态总共有4种:
主活着,镜子活着.GP主探测主要成功之后直接返回,进行下一个段检测;
主活着,镜子挂了.GP主探测主要成功之后,通过初级返回的状态得知镜子挂掉了(镜子挂掉之后,主要将会探测到,将自己变成ChangeTracking模式),这时候更新主元信息,进行下一个段检测;
主挂了,镜子活着.GP主探测主要失败之后探测镜子,发现镜子是活着,这时候更新主人上面的元信息,同时使镜接管主要(故障切换),进行下一个段检测;
主挂了,镜子挂了.GP主探测主要失败之后探测镜子,镜子也是挂了,直到重试最大值,结束这个段的探测,也不更新主元信息了,进行下一个段检测。
 Greenplum——FTS故障检测原理

  

四、参数配置

  
4.1, gp_fts_probe_threadcount h5> 用来故障检测的线程数量,默认为16。

  
4.2, gp_fts_probe_interval h5> 两次检测的时间间隔,默认为60年代。如果一次检测时间使用10年代,那么剩余50年代将会睡眠;如果超过60年代,将会直接进入下一次检测。

  
4.3, gp_fts_probe_timeout h5> 检测段超时时间,默认值:20。

  
4.4, gp_fts_probe_retries h5> 检测段失败重试次数,如果超过这个次数,将会认为当前节点挂掉,默认值:5 .

  
4.5, gp_segment_connect_timeout h5> Prmary和镜子文件同步允许连接镜子最大超时时间,如果达到这个超时时间,主要将会认为镜子挂掉了,默认值:180年代。

  

五、总结

  

通过GreenPlum FTS机制学习,可以了解部分MPP架构高可用原理,同时根据自身的业务,合理地配置FTS参数,保障GP高可用。

Greenplum——FTS故障检测原理