跳到主要内容

集群运维操作

整体介绍

信息

集群运维资源是 ob-operator v2.2.2 及以上版本中新增的功能。

为了简化 OceanBase 集群的运维操作并保留短期运维记录,ob-operator 提供了集群运维资源 OBClusterOperation,用于执行集群运维操作。

通过创建 OBClusterOperation 资源,您可以执行以下集群运维操作:

  • AddZones:向集群添加可用区
  • DeleteZones:从集群删除可用区
  • AdjustReplicas:调整可用区的副本数
  • Upgrade:升级 OceanBase 集群版本
  • RestartOBServers:重启指定的 OceanBase 服务器
  • DeleteOBServers:删除指定的 OceanBase 服务器
  • ModifyOBServers:修改指定 OceanBase 服务器的配置,包括 CPU、内存、存储类、存储容量、监控部署和 NFS 备份卷挂载
  • SetParameters:设置 OceanBase 集群参数

OBClusterOperation 资源是一个自定义资源,包含以下字段:

apiVersion: oceanbase.oceanbase.com/v1alpha1
kind: OBClusterOperation
metadata:
generateName: <op-name>- # OBClusterOperation 资源的名称将由 `kubectl create` 自动生成
namespace: <namespace>
spec:
obcluster: <obcluster-name> # 要操作的 OBCluster 资源的名称
type: <operation-type> # 操作类型,包括 AddZones、DeleteZones、AdjustReplicas、Upgrade、RestartOBServers、DeleteOBServers、ModifyOBServers、SetParameters
force: <force> # 是否强制执行操作,默认为 false
ttlDays: <ttlDays> # 保留操作记录的天数,默认为 7 天
<configuration-for-operation>: # 操作的具体配置,不同操作类型的配置不同。字段名与操作类型相同,但需要将第一个大写字母替换为小写字母。例如,AddZones 操作的配置字段为 addZones
field1: value1
field2: value2
# ...

需要注意的是,只有与操作类型匹配的具体配置才会生效,也就是说,如果操作类型为 AddZones,则只有 addZones 字段会生效,其他的具体配置字段会被忽略。

OBClusterOperation 资源是一次性资源,这意味着操作完成后资源将自动删除。操作记录将保留 ttlDays 字段指定的时间。我们建议使用 kubectl create 命令创建 OBClusterOperation 资源,以避免应用重复名称的资源。该命令可以使用 generateName 字段自动生成资源名称,例如:

kubectl create -f path/to/obclusteroperation.yaml

运维操作示例

增加 OBZone

AddZones 类型操作的配置如下:

apiVersion: oceanbase.oceanbase.com/v1alpha1
kind: OBClusterOperation
metadata:
generateName: op-add-zones-
spec:
obcluster: test
type: AddZones
addZones:
- zone: zone2
replica: 1
- zone: zone3
replica: 1

删除 OBZone

DeleteZones 类型操作的配置如下:

apiVersion: oceanbase.oceanbase.com/v1alpha1
kind: OBClusterOperation
metadata:
generateName: op-delete-zones-
spec:
obcluster: test
type: DeleteZones
deleteZones:
- zone2

调整 OBZone 内节点数

AdjustReplicas 类型操作的配置如下:

apiVersion: oceanbase.oceanbase.com/v1alpha1
kind: OBClusterOperation
metadata:
generateName: op-adjust-replicas-
spec:
obcluster: test
type: AdjustReplicas
adjustReplicas:
- zones: [zone1]
to: 2

集群升级

Upgrade 类型操作的配置如下:

apiVersion: oceanbase.oceanbase.com/v1alpha1
kind: OBClusterOperation
metadata:
generateName: op-upgrade-
spec:
obcluster: test
type: AdjustReplicas
upgrade:
image: xxx/xxxxx

重启指定 OBServer

RestartOBServers 类型操作的配置如下:

apiVersion: oceanbase.oceanbase.com/v1alpha1
kind: OBClusterOperation
metadata:
generateName: op-restart-observers-
spec:
obcluster: test
type: RestartOBServers
restartOBServers:
observers: # 要重启的服务器,默认为空
- observer-xxx-1
- observer-xxx-5
obzones: # 服务器所属的可用区,默认为空
- zone1
- zone2
all: false # 是否重启集群中的所有服务器,默认为 false

删除指定 OBServer

DeleteOBServers 类型操作的配置如下:

apiVersion: oceanbase.oceanbase.com/v1alpha1
kind: OBClusterOperation
metadata:
generateName: op-delete-observers-
spec:
obcluster: test
type: AdjustReplicas
observers:
- observer-xxx-1
- observer-xxx-5

修改 OBServer 资源配置

备注

ModifyOBServers 类型的操作将逐个滚动替换集群中的服务器。所有服务器替换完成后,操作才算完成。只有在前一个 observer 成功替换后,才会替换下一个 observer。

ModifyOBServers 类型操作的配置如下:

apiVersion: oceanbase.oceanbase.com/v1alpha1
kind: OBClusterOperation
metadata:
generateName: op-modify-observers-
spec:
obcluster: test
type: ModifyOBServers
modifyOBServers:
resource: # 要修改的资源配置,默认为空
cpu: 3
memory: 13Gi
expandStorageSize: # 要扩展的存储容量,默认为空
dataStorage: 100Gi
logStorage: 50Gi
redoLogStorage: 100Gi
modifyStorageClass: # 要修改的存储类,默认为空
dataStorage: new-storage-class
logStorage: new-storage-class
redoLogStorage: new-storage-class
addingMonitor: # 要添加的监控,默认为空
image: xxx/obagent:xxx
resource:
cpu: 1
memory: 1Gi
removeMonitor: true # 是否移除监控,默认为 false
addingBackupVolume: # 要添加的备份卷,默认为空
volume:
name: backup
nfs:
server: 1.2.3.4
path: /opt/nfs
readOnly: false
removeBackupVolume: true # 是否移除备份卷,默认为 false

修改集群参数

SetParameters 类型操作的配置如下:

apiVersion: "oceanbase.oceanbase.com/v1alpha1"
kind: OBClusterOperation
metadata:
generateName: op-set-parameters-
spec:
obcluster: test
type: SetParameters
setParameters: # 要修改的参数配置
- name: __min_full_resource_pool_memory
value: "3221225472"
- name: enable_syslog_recycle
value: "True"