openGauss
开源数据库
openGauss社区官网
开源社区
中软国际正式加入openGauss社区
2021 年 6 月,中软国际签署 CLA(公司贡献者许可协议),正式加入 openGauss 社区。

中软国际有限公司是行业领先的全球化软件与信息技术服务企业之一,成立于 2000 年,为香港主板上市公司,致力于使能软件企业引领发展,服务制造企业转型升级。中软国际在服务财富 500 强企业及大中型客户的近二十年里,在电信、政府、制造、金融、公共服务、能源等行业均取得了不斐的成绩。2020 年,中软国际全年销售收入实现双位数增长,连续第四年业绩突破百亿,蝉联 Gartner 全球 IT 服务市场份额 TOP100,已是国内最大的软件与信息技术服务企业之一。
在还没有加入社区之前,中软国际就已经深度参与社区开发,并成功为 openGauss 社区贡献集群管理工具-openGauss Housekeeper。
关于 openGauss Housekeeper
openGauss Housekeeper 不仅为 openGauss 集群实现自动化的高可用主备管理,而且还通过实现浮动 IP,为 openGauss 集群对外呈现统一的浮动 IP 服务,用户只需要通过统一的浮动 IP 访问数据库,而无需了解集群内部组网细节与主备节点切换,从而大大简化了用户对集群的使用。
openGauss Housekeeper 是开源版本,目前是第一个版本,提供了基础服务功能,后续版本将不断进行功能增强。
openGauss Housekeeper 系统架构
openGauss Housekeeper 支持 openGauss 数据库一主多备组网,备节点数量大于或等于二个。
openGauss Housekeeper 包含三个模块,其部署与模块间 SSH 信任关系如下图所示:
. GGHC:openGauss 集群管理端,它运行在独立主机上,定时发起数据库集群健康检测,在发现节点故障时发起自动恢复处理,并在主节点故障需要主备切换时,发起对浮动 IP 漂移的处理。
. GGHS:它是 GGHC 的远端处理代理,部署在高斯集群 omm 账号下。它接受 GGHC 调用,完成集群健康检测操作、节点状态恢复操作、主备切换操作以及浮动 IP 漂移处理。
. Floatip:它是一个 floatip.sh 脚本,实现浮动 IP 启停处理。因为该命令需要 root 权限才能执行,因此还需要在 sudo 文件中配置权限。

图 1 GGHK 系统架构图
说明:开源版本只有 openGauss Housekeeper 核心代码,没有考虑 GGHC 进程可靠性与主机节点的可靠性。实际应用时,建议用户增加对 GGHC 进程的监控,在其出现故障后对其进行拉起,还可以对 GGHC 实现主/备组网,避免单点故障。
openGauss Housekeeper 运行环境
硬件平台:x86 服务器
操作系统:centos7.6
软件环境:python3.6,并安装 paramiko 库
配套 openGauss 版本:openGauss-1.0.1-CentOS-64bit.tar.gz
openGauss Housekeeper 技术指标
openGauss Housekeeper 支持 openGauss 一主 N 备,N 的数量大于等于 2。
openGauss Housekeeper 定时对数据库集群进行健康检测,检测周期可配,默认值 10 秒。若实际检测花费时间小于检测周期,则继续 sleep 到检测周期值后进入下一轮检测,否则立即进行下一轮检测。实际检测花费时间与网络和 openGauss 集群节点负荷有关。
openGauss Housekeeper 基本功能和特性
. 支持 GGHC 通过定时对数据库集群状态进行健康检测,在发现故障 Standby 节点时对其进行恢复。在发现 Primary 节点故障,优先进行恢复处理;若不可恢复,按照高斯集群选择候选 Primary 节点算法选择候选 Primary 节点,并进行主备切换,同时将浮动 IP 随漂移到当前 Primary 节点。
. 支持检测的故障类型包括:openGauss 进程被 kill,被 stop,主机被重启、被关机,网卡故障。
. 支持 openGauss 数据库集群对外呈现统一的浮动 IP 服务。在系统启动时自动检测 Primary 节点是否绑定浮动 IP,未绑定时帮助其绑定。
. 支持主机或网卡故障情况,发生主备故障切换后,gghc 无法通过 openGauss 执行 gs_om -t refreshconf 命令,以及无法通过 gghs 清理故障主节点 postgresql.conf 中的浮动 ip,gghc 能够记录这些状态,并每轮健康检测时检测主机或网卡是否故障恢复,一旦发现恢复,则继续完成之前未完成处理。
. 支持对无法自动修复的故障场景打印 CRITICAL 日志信息,以期人工参与处理
. 支持 openGauss 单网络和双网络平面(对外监听网络平面和内部 SSH 互信及内部主备数据同步网络平面)
特别说明
因为 GGHC 会根据 openGauss 集群当前状态和工作状态的上下文进行切换处理,因此如果需要人工进行集群维护,务必停止 GGHC 进程。待集群状态正常,并且与 GGHC 记录的状态一致时,才启动 GGHC 重新委托其进行维护,否则可能导致 openGauss 集群状态混乱。