Doris 在 K8S 之上的扩缩容可通过修改 DorisCluster 资源对应组件的 replicas 字段来实现。修改可直接编辑对应的资源,也可通过命令的方式。
获取 DorisCluster 资源
使用命令 kubectl --namespace {namespace} get doriscluster
获取已部署 DorisCluster (简称 dcr ) 资源的名称。本文中,我们以 doris 为 namespace.
$ kubectl --namespace doris get doriscluster
NAME FESTATUS BESTATUS CNSTATUS BROKERSTATUS
doriscluster-sample available available
扩缩容资源
K8S 所有运维操作通过修改资源为最终状态,由 Operator 服务自动完成运维。扩缩容操作可通过 kubectl --namespace {namespace} edit doriscluster {dcr_name}
直接进入编辑模式修改对应 spec 的 replicas 值,保存退出后 Doris-Operator 完成运维,也可以通过如下命令实现不同组件的扩缩容。
FE 扩容
1. 查看当前 FE 服务数量
$ kubectl --namespace doris get pods -l "app.kubernetes.io/component=fe"
NAME READY STATUS RESTARTS AGE
doriscluster-sample-fe-0 1/1 Running 0 10d
2. 扩容 FE
$ kubectl --namespace doris patch doriscluster doriscluster-sample --type merge --patch '{"spec":{"feSpec":{"replicas":3}}}'
3. 检测扩容结果
$ kubectl --namespace doris get pods -l "app.kubernetes.io/component=fe"
NAME READY STATUS RESTARTS AGE
doriscluster-sample-fe-2 1/1 Running 0 9m37s
doriscluster-sample-fe-1 1/1 Running 0 9m37s
doriscluster-sample-fe-0 1/1 Running 0 8m49s
BE 扩容
1. 查看当前 BE 服务数量
$ kubectl --namespace doris get pods -l "app.kubernetes.io/component=be"
NAME READY STATUS RESTARTS AGE
doriscluster-sample-be-0 1/1 Running 0 3d2h
2. 扩容 BE
$ kubectl --namespace doris patch doriscluster doriscluster-sample --type merge --patch '{"spec":{"beSpec":{"replicas":3}}}'
3. 检测扩容结果
$ kubectl --namespace doris get pods -l "app.kubernetes.io/component=be"
NAME READY STATUS RESTARTS AGE
doriscluster-sample-be-0 1/1 Running 0 3d2h
doriscluster-sample-be-2 1/1 Running 0 12m
doriscluster-sample-be-1 1/1 Running 0 12m
节点缩容
关于节点缩容问题,Doris-Operator 目前并不能很好的支持节点安全下线,在这里仍能够通过减少集群组件的 replicas 属性来实现减少 FE 或 BE 的目的,这里是直接 stop 节点来实现节点下线,当前版本的 Doris-Operator 并未能实现 decommission 安全转移副本后下线。由此可能引发一些问题及其注意事项如下
- 表存在单副本情况下贸然下线 BE 节点,一定会有数据丢失,尽可能避免此操作。
- FE Follower 节点尽量避免随意下线,可能带来元数据损坏影响服务。
- FE Observer 类型节点可以随意下线,并无风险。
- CN 节点不持有数据副本,可以随意下线,但因此会损失存在于该 CN 节点的远端数据缓存,导致数据查询短时间内存在一定的性能回退。