部署具有 Datanode 组的 GreptimeDB 集群
在本指南中,你将学习如何在 Kubernetes 上部署具有 datanode 组的 GreptimeDB 集群,该组由多个 datanode 实例组成。
先决条 件
- Docker >= v23.0.0
- kubectl >= v1.18.0
- Helm >= v3.0.0
- GreptimeDB Operator >= v0.3.0
升级 operator
安装 GreptimeDB Operator,将镜像版本设置为大于或等于 v0.3.0
。
有关升级 operator 的详细说明,请参阅 GreptimeDB Operator 管理指南。
Datanode 组配置
在企业版中,你可以配置 datanode 组来将读写工作负载分离到不同的组中。
datanode 接受 workload_types
字段来区分其工作负载类型。支持的类型有 hybrid
、query
和 ingest
:
hybrid
是默认值,作为query
和ingest
的超集,允许 datanode 处理两种工作负载。query
为读负载优化,datanode 只处理读负载。ingest
为写负载优化,datanode 只处理写负载。
虽然 hybrid
很方便,但在同一个 datanode 上同时进行读写操作可能会相互干扰,例如,一个大查询可能占用过多资源,从而影响在线写入。为了获得最佳性能,建议将读写工作负载分离到不同的 datanode 组中。
在配置 datanode 组时,确保每个组都包含 name
字段。以下 values.yaml
示例展示了如何定义单独的 datanode 组:
danodata:
enabled: false
datanodeGroups:
- name: write
replicas: 1
config: |
workload_types = ["ingest"]
template:
main:
resources:
requests:
cpu: 4
memory: 8Gi
storage:
fs:
storageClassName: ${storageClassName}
storageSize: 100Gi
- name: read
replicas: 1
config: |
workload_types = ["query"]
template:
main:
resources:
limits:
cpu: 8
memory: 16Gi
meta:
replicas: 1
backendStorage:
etcd:
endpoints:
- "etcd.etcd-cluster.svc.cluster.local:2379"
frontend:
replicas: 1
有关为 Metasrv 配置替代元数据存储后端的指导,请参阅元数据存储配置文档。
你可以使用以下命令应用上述配置:
helm upgrade --install ${release-name} greptime/greptimedb-cluster --namespace ${namespace} -f values.yaml
校验安装
检查 Pod 的状态:
kubectl get pods -n default
NAME READY STATUS RESTARTS AGE
weny-cluster-datanode-read-0 1/1 Running 0 30s
weny-cluster-datanode-write-0 1/1 Running 0 30s
weny-cluster-frontend-774c76cffc-znvrw 1/1 Running 0 30s
weny-cluster-meta-58977b7897-8k2sf 1/1 Running 0 90s
后续步骤
-
为了获得最佳性能,建议配置 frontend 组,这确保读写流量的完全分离,实现最大隔离。
-
为你的表添加读副本,请参阅读副本。