OB 集群节点变更机房属性

问题背景

使用 OCP 部署或接管了一个 OB 业务集群。集群的节点(服务器 10.0.0.61)的机房属性没有设置对,想调整过来,便于后期统一管理。
要求不删除 OB 节点,不中断 OB 集群服务。

问题现象

OB 集群里节点 的 IDC 信息为空。

SELECT * FROM `__all_zone` az
WHERE name ='idc'
gmt_create gmt_modified zone name value info
2023-05-16 12:32:49.662 2023-05-16 12:32:49.662 zone1 idc 0

OCP 里元数据库(租户:ocp_meta, db: ocp) 里节点 的 IDC 信息也为空。

SELECT ch.name , ch.inner_ip_address ,ch.status ,ch.alias , ci.name ,ci.description
FROM compute_host ch , compute_idc ci
WHERE ch.idc_id = ci.id
ORDER BY ch.id
name inner_ip_address status alias name description
server064 10.0.0.64 ONLINE BJ
server061 10.0.0.61 ONLINE

问题分析

完整的 OB 部署路径是先在 OCP 里录入服务器信息(包括 区域 REGION 和 机房 IDC 属性)。这份信息在 OCP 元数据库里会存储一份。后期使用这些机器部署 OB 集群的时候,相应的 REGION 和 IDC 属性也会带入到 OB 集群内部元数据中。
所以,修改机房信息要一并修改。

因为节点(10.0.0.61)已经被 OB 集群使用,所以通过 OCP 平台是无法变更这个节点的 IDC 信息。

解决方法

  1. 修改 OCP 元数据。
    元数据在 OCP 元数据库集群里,数据库连接方式参考
mysql -h10.0.0.64 -uroot@ocp_meta#ocpcluster -P2883 -p -c -A ocp

修改 OCP 的表里的记录。

UPDATE ocp.compute_idc SET name='HZ' WHERE region_id=2;
  1. 修改 OB 集群内部节点所属 ZONE 的 IDC 属性。
    登录业务 OB 集群的 SYS 租户。
ALTER SYSTEM MODIFY ZONE 'zone1' SET  idc='HZ';
  1. OCP 里确认节点的机房属性变更正确。

6666, 这个场景很多人遇到过