首批通过分布式安全可靠测评,为关键业务系统打造
ob_cluster_sync_failed 获取 OB 集群信息失败
更新时间:2023-10-18 17:01:04
告警描述
OCP 每 30 秒尝试一次连接 OceanBase 集群,并将集群元数据同步到 OCP,如果同步失败,则触发此告警。
告警原理
该告警的上报通过周期为 1 分钟的定时任务实现,该定时任务的工作原理如下:
OCP-Server 检查 OceanBase 集群是否可连接。
可连接,则继续进行步骤 2。
不可连接,结束检查流程,不触发告警。
若 OCP 记录的 OceanBase 集群状态是 Unavailable,OCP-Server 会尝试更新其状态为 Running。
若更新失败,触发告警。
更新成功,进入第 3 步。
同步集群其他信息包括 zone、cluster、hosts,同步失败触发告警。
规则信息
| 监控指标 | 默认阈值 | 持续时间 | 检测周期 | 消除周期 |
|---|---|---|---|---|
| NA | NA | 0 秒 | 15 秒 | 5 分钟 |
告警信息
| 告警触发方式 | 告警等级 | 范围 |
|---|---|---|
| OCP 定时任务 | 严重 | 集群 |
告警模板
告警概述模板:${alarm_target} ${alarm_name}
告警详情模板:集群:${ob_cluster_name},告警:${alarm_name},集群状态:${ob_cluster_status}, 失败原因:${failed_reason}
告警概述样例: ob_cluster=obcluster-1 OB 集群同步失败
告警详情样例: 集群:obcluster-1,告警:OB 集群同步失败,集群状态:Unavailable,失败原因:some reason
对系统的影响
根据不同的原因有不同的影响。
如果是 OCP 元数据与 OceanBase 集群信息不一致,则可能影响后续 OCP 运维操作。
如果是 OceanBase 集群故障导致的无法同步,则可能影响用户服务。
可能原因
OceanBase 集群维护的 IDC/Region 信息和 OCP 主机维护的 IDC/Region 信息不一致。
OceanBase 集群故障导致的无法同步,此时 ob_cluster_status_check_failed 告警也会产生。
处理方法
根据告警中的失败原因,排除故障,故障排除后 OCP 应恢复集群同步。
确认是否 OceanBase 集群故障导致的无法同步的原因。
若是该原因则会同时上报 ob_cluster_status_check_failed 告警。
此时,可先参照 ob_cluster_status_check_failed OB 集群状态检测失败 告警的处理方法排除故障,等待 5 分钟后,观察告警是否继续上报。
是,则还有其他问题,请继续执行下一步。
否,则问题解决。
检查 OceanBase 集群内 zone 的 IDC/Region 信息在 OCP 元数据中是否存在、以及 IDC/Region 的关联关系和 OCP 元数据是否一致,可参考如下信息进行检查。
OCP 维护主机/Region/IDC 的数据表如下:
compute_host 主机
compute_idc 机房
compute_region 区域
OCP metadb 查询所有 Region/IDC 信息参考的 SQL 命令如下:
-- 查询 OCP metadb 维护的 IDC 和 Region 信息 SELECT r.`name` AS region, i.`name` AS idc FROM compute_region r JOIN compute_idc i ON r.id=i.region_id;OceanBase 集群查询 Zone 的 IDC/Region 信息参考的 SQL 命令如下:
-- 查询 OceanBase 集群内 Zone 的 IDC 和 Region 信息 SELECT `zone`, MAX(CASE `name` WHEN 'region' THEN `info` ELSE '' END ) `region`, MAX(CASE `name` WHEN 'idc' THEN `info` ELSE '' END ) `idc` FROM oceanbase.__all_zone WHERE `zone` <> '' GROUP BY `zone` ;说明
如果 OCP MetaDB 维护的 Region/IDC 关联和 OceanBase 集群内 Zone 的 Region/IDC 有冲突,集群同步就会失败,您需执行下一步;有一种例外是 OceanBase 集群内 Zone 的 IDC 设置为空,此时不影响集群同步。
OceanBase 集群 Zone 的 IDC/Region 等是逻辑上的划分,当 OceanBase 集群中的 IDC/region 信息发生变动之后,需要在 OCP metadb 中手动进行同步。
以下方信息为例:
- IDC 之前的名称为 'old idc',修改之后的名称为 'zue'。
- Region 之前的名称为 'old region',修改之后的名称为 'SHANGHAI'。
使用 ocp metadb 集群(集群名默认为 obcluster) ocp_meta 租户的 root 用户登录 ocp_meta 数据库,查询是否存在修改记录。
查询是否存在名称为 SHANGHAI 的 Region:
select * from compute_region where name='SHANGHAI';查询是否存在名称为 zue 的 IDC:
select * from compute_idc where name='zue';
若不存在,则执行如下命令新增 Region 和 IDC;若存在,则执行下一步。
# 新增 Region insert into compute_region (`name`, `description`) values ('SHANGHAI', 'SHANGHAI region'); # 新增 IDC insert into compute_idc (`name`, `description`, `region_id`) select 'zue', 'zue idc', id from compute_region where name='SHANGHAI';订正 OCP Zone 的 Region 和 IDC 信息。
update ob_zone set idc_id = (select id from compute_idc where name='zue') where name='your zone name' and cluster_id= your cluster id in ocp;订正 OCP compute_host 的 Region 和 IDC 信息:
update compute_host set idc_id = (select id from compute_idc where name='zue') where inner_ip_address in (ips of the hosts);
注意
OCP 元数据中已存在的 Region、IDC 数据可能会被其他 OceanBase 集群所引用。如果您黑屏修改了 OceanBase 集群中的 Region 和 IDC 信息,请先在 OCP 元数据中新增该 Region 和 IDC 信息,然后再关联到该集群的 Zone 和主机数据中。请不要更改 OCP 元数据中已存在的 Region 和 IDC 记录,避免导致其他集群关联到错误的 Region 和 IDC,从而出现故障。