均衡扩容后的 Storage 数据¶
用户在扩容 Storage 服务后,可以自主决定是否均衡 Storage 服务中的数据。本文介绍如何设置均衡 Storage 数据。
Nebula Graph 的 Storage 服务的扩容分为两个阶段,第一个阶段等待所有扩容的 Pods 为Ready
的状态;第二个阶段执行BALANCE DATA
和BALANCE LEADER
命令均衡数据。这两个阶段将控制器副本的扩容过程与均衡数据过程解耦,使用户可以选择在低流量时进行均衡数据操作,有效降低数据迁移对在线服务的影响。
用户可以在集群的 CR 实例的配置文件中通过参数enableAutoBalance
来控制是否自动均衡数据。
前提条件¶
已使用 K8s 创建一个集群。具体步骤,参见使用 Kubectl 创建 Nebula Graph 集群。
操作步骤¶
以下示例使用名为nebula
的集群、名为nebula_cluster.yaml
的 YAML 配置文件,说明如何设置enableAutoBalance
:
-
执行以下命令进入
nebula
集群的编辑页面。kubectl edit nebulaclusters.apps.nebula-graph.io nebula
-
在 YAML 文件的
spec.storaged
配置项中,添加enableAutoBalance
并设置其值为true
。apiVersion: apps.nebula-graph.io/v1alpha1 kind: NebulaCluster metadata: name: nebula spec: graphd: image: vesoft/nebula-graphd logVolumeClaim: resources: requests: storage: 2Gi storageClassName: fast-disks replicas: 1 resources: limits: cpu: "1" memory: 1Gi requests: cpu: 500m memory: 500Mi version: v2.6.2 imagePullPolicy: IfNotPresent metad: dataVolumeClaim: resources: requests: storage: 2Gi storageClassName: fast-disks image: vesoft/nebula-metad logVolumeClaim: resources: requests: storage: 2Gi storageClassName: fast-disks replicas: 1 resources: limits: cpu: "1" memory: 1Gi requests: cpu: 500m memory: 500Mi version: v2.6.2 nodeSelector: nebula: cloud reference: name: statefulsets.apps version: v1 schedulerName: default-scheduler storaged: enableAutoBalance: true //将其值设置为 true 时表示扩容后自动均衡 Storage 数据。 dataVolumeClaim: resources: requests: storage: 2Gi storageClassName: fast-disks image: vesoft/nebula-storaged logVolumeClaim: resources: requests: storage: 2Gi storageClassName: fast-disks replicas: 3 resources: limits: cpu: "1" memory: 1Gi requests: cpu: 500m memory: 500Mi version: v2.6.2 ...
- 当设置
enableAutoBalance
的值为true
时,表示扩容后自动均衡 Storage 数据。
- 当设置
enableAutoBalance
的值为false
时,表示扩容后不会均衡 Storage 数据。
- 当不设置
enableAutoBalance
参数时,默认扩容 Storage 后系统不会自动均衡 Storage 数据。
- 当设置
-
执行
kubectl apply -f nebula_cluster.yaml
使上述更新生效。
最后更新:
March 7, 2023