集群管理与高可用
功能描述
GaussDB(DWS)提供集群管理CM(Cluster Manager)模块,负责管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。CM可分为主CM和备CM两部分。正常情况下,只由主CM提供GaussDB(DWS)集群管理服务;当主CM发生故障时,备CM会主动升为主CM提供集群管理服务。
技术原理
集群管理模块由CMServer,CMAgent和Monitor组件组成,并提供集群状态查询、集群起停、主备切换、实例重建等工具。CMServer只部署在主备CM上,作为整个GaussDB(DWS)集群的大脑,负责处理CMAgent上报的各种状态信息,并决定是否需要状态变更。CMAgent部署于所有节点,作为实例代理进程,负责上报CN/DN/GTM等实例状态至CMServer,并接收和执行CMServer下发的命令。Monitor部署于所有节点,作为定时任务,在CMAgent停止的情况下将其重启。
Hang检测
集群管理模块通过短连接机制,检测实例进程是否处在网络故障、磁盘IO阻塞、进程/线程僵死等异常状态,必要时触发DN/GTM主备切换或CN剔除流程。
以DN为例,默认情况下CMAgent每隔180秒新建实例连接,若失败则每隔84秒进行重试。如果连续5次均连接失败,则触发DN主备切换流程。完整的hang检测周期大约为600秒。
CN Retry
GaussDB(DWS)提供CN Retry功能用于SQL语句执行异常时的自动重试,提高业务的连续性。
CN在语句执行报错时触发retry机制。对于可重试的错误类型,将已执行的操作进行回滚,然后重新执行该语句;如果依然无法成功,则将错误信息上报给客户端。
用户不感知SQL语句的重试执行过程。