跳到主要内容
版本:0.4.x

扩缩容

ByConity可以容器化、模块化部署,支持弹性的扩缩容,能够实时、按需的对计算资源进行扩缩容,保证资源的高效利用。这里介绍在kubenetes集群上如何做ByConity的扩缩容。

通过配置文件扩容

假设希望添加 2 计算组,其中5 个副本用于 my-new-vw-default 读取,2 个副本用于 my-new-vw-write 写入。

  • 修改 values.yaml 文件
byconity:
virtualWarehouses:
...

- <<: *defaultWorker
name: my-new-vw-default
replicas: 5
- <<: *defaultWorker
name: my-new-vw-write
replicas: 2
  • 使用 helm 更新ByConity集群
helm upgrade --install --create-namespace --namespace byconity -f ./your/custom/values.yaml byconity ./chart/byconity
  • 运行CREATE WAREHOUSE 数据定义语言 在 Byconity 创建逻辑虚拟仓库
CREATE WAREHOUSE IF NOT EXISTS `my-new-vw-default` SETTINGS num_workers = 0, type = 'Read';
CREATE WAREHOUSE IF NOT EXISTS `my-new-vw-write` SETTINGS num_workers = 0, type = 'Write';
  • 创建一个表并使用新虚拟数据仓库
-- Create a table with SETTINGS cnch_vw_default = 'my-new-vw-default', cnch_vw_write = 'my-new-vw-write'
CREATE DATABASE IF NOT EXISTS test;
CREATE TABLE test.lc2 (b LowCardinality(String)) engine=CnchMergeTree
ORDER BY b
SETTINGS cnch_vw_default = 'my-new-vw-default', cnch_vw_write = 'my-new-vw-write';

-- Check if the table has the new settings
SHOW CREATE TABLE test.lc2;

##通过kubectl扩容

假设有一个 my-new-vw-default,希望扩容增加 2 个 worker,可以直接更新 Kubernetes 的资源对象 statefulset:

  • 首先使用如下命令,获取当前 Kubernetes 集群中所有 StatefulSet 资源的名称
kubectl get statefulset
  • 然后,找到并打开该配置,做如下修改

  • 把配置"replicas: 1" 变更为 "replicas: 2"
spec:
podManagementPolicy: OrderedReady
replicas: 2 #由1变更为2
revisionHistoryLimit: 10
selector:
matchLabels:
app.kubernetes.io/instance: byconity
app.kubernetes.io/name: byconity
byconity-role: worker
byconity-vw: vw_default
serviceName: my-new-vw-default

更新完后使用 kubectl 可以查看 VirtualWarehouse 已经扩容包含 2 个 woker