问题背景
使用 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 信息。
解决方法
- 修改 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;
- 修改 OB 集群内部节点所属 ZONE 的 IDC 属性。
登录业务 OB 集群的 SYS 租户。
ALTER SYSTEM MODIFY ZONE 'zone1' SET idc='HZ';
- OCP 里确认节点的机房属性变更正确。