作者:尚卓燃(github.com/PsiACE),Dat… 研制工程师,Apache OpenDAL (Incubating) PPMC。

前言

Databend 是一款彻底面向云目标存储的新一代云原生数据库房,专为弹性和高效设计,为您的大规模剖析需求保驾护航。Databend 一起是一款符合 Apache-2.0 协议的开源软件,除了拜访云服务(app.databend.com/)之外,用户还能够自己… Databend 出产集群以满足作业负载需求。

Databend 的典型运用场景包括:

  • 实时剖析渠道,日志的快速查询与可视化。
  • 云数据库房,前史订单数据的多维度剖析和报表生成。
  • 混合云架构,统一办理和处理不同来历和格式的数据。
  • 本钱和性能灵敏的 OLAP 场景,动态调整存储和核算资源。

KubeSphere 是在 Kubernetes 之上构建的以运用为中心的多租户容器渠道,供给全栈的 IT 自动化运维的能力,能够办理多个节点上的容器化运用,供给高可用性、弹性扩缩容、服务发现、负载均衡等功用。

运用 KubeSphere 布置和办理 Databend 具有以下优点:

  • 运用 Helm Charts 布置 Databend 集群,简化运用办理、布置进程和参数设置。
  • 运用 Kubernetes 的特性来实现 Databend 集群的自动康复、水平扩展、负载均衡等。
  • 与 Kubernetes 上的其他服务或运用轻松集成和交互,如 MinIO、Prometheus、Grafana 等。

本文将会介绍怎么运用 KubeSphere 创立和布置 Databend 高可用集群,并运用 QingStor 作为底层存储服务。

装备目标存储

目标存储是一种存储模型,它把数据作为目标来办理和拜访,而不是文件或块。目标存储的优点包括:可扩展性、低本钱、高可用性等。

Databend 彻底面向目标存储而设计,在减少复杂性和本钱的一起提高灵敏性和功率。Databend 支撑多种目标存储服务,如 AWS S3、Azure Blob、Google Cloud Storage、HDFS、Alibaba Cloud OSS、Tencent Cloud COS 等。您能够依据事务的需求和偏好挑选合适的服务来寄存你的数据。

这儿咱们以青云 QingStor 为例,介绍与 S3 兼容的目标存储相关装备的预先准备作业。

创立 Bucket

目标存储服务(QingStor)供给了一个无限容量的在线文件存储和拜访渠道。每个用户可创立多个存储空间(Bucket);您能够将任意类型文件通过操控台或 QingStor API 上传至一个存储空间(Bucket)中;存储空间(Bucket)支撑拜访操控,您能够将自己的存储空间(Bucket)敞开给指定的用户,或一切用户。

登录青云操控台,选中目标存储服务,新建用于验证的 bucket 。

需求重视的是 bucket 的名字 <bucket> 和其所在的可用区 <region>

由于这儿运用 s3 兼容服务,所以最终衔接的 endpoint_url 是 s3.<bucket>.<region>.qingstor.com

创立 API 密钥

API 密钥(Access Key)能够让您通过发送 API 指令来拜访青云的服务。API 密钥 ID 须作为参数包含在每一个恳求中发送;而 API 密钥的私钥担任生成 API 恳求串的签名,私钥需求被妥善保管,切勿外传。默认一切 IP 地址都可运用此密钥调用 API,设置 IP 白名单后只有白名单范围内的 IP 地址才可运用此密钥。

点击右上方菜单,选中 API 密钥,创立新的密钥用于 API 拜访。

下载文件中的 qy_access_key_id 对应 access_key_idqy_secret_access_key 对应 secret_access_key

准备 KubeSphere 环境

KubeSphere(kubesphere.io)是在 Kubernetes 之上构建的开源容器渠道,供给全栈的 IT 自动化运维的能力,简化企业的 DevOps 作业流。KubeSphere 已被海内外数万家企业选用。此外, KubeSphere 还拥有极为敞开的生态,KubeSphere 在 OpenPitrix 的基础上,为用户供给了一个根据 Helm 的运用商铺,用于运用生命周期办理。KubeSphere 运用商铺让 ISV、开发者和用户能够在一站式服务中只需点击几下就能够上传、测验、装置和发布运用。现在 Databend 已入驻 KubeSphere 运用商铺。

KubeSphere 环境建立

All-in-One 形式布置测验环境

参阅官方文档 。

在 Azure 上 Spot 一台机器:

Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.4.0-1089-azure x86_64)
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
  System information as of Tue Sep  6 02:09:16 UTC 2022
  System load:  0.15              Processes:           376
  Usage of /:   4.8% of 28.89GB   Users logged in:     0
  Memory usage: 0%                IP address for eth0: 10.0.0.4
  Swap usage:   0%

以 All-In-One 形式布置:

留意,需求在 root 下运转。

apt install socat conntrack containerd
systemctl daemon-reload
systemctl enable --now containerd
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.2 sh -
chmod +x kk
./kk create cluster --with-kubernetes v1.22.12 --with-kubesphere v3.3.1
+------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------------+------------+-------------+------------------+--------------+
| name | sudo | curl | openssl | ebtables | socat | ipset | ipvsadm | conntrack | chrony | docker | containerd       | nfs client | ceph client | glusterfs client | time         |
+------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------------+------------+-------------+------------------+--------------+
| ks   | y    | y    | y       | y        | y     |       |         | y         | y      |        | 1.5.9-0ubuntu3.1 |            |             |                  | UTC 02:53:56 |
+------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------------+------------+-------------+------------------+--------------+

假如提示依赖缺失,能够依据需求装置,sudo apt install <name> ,这儿只装置前两个。

Kubernetes Version ≥ 1.18
socat Required
conntrack Required
ebtables Optional but recommended
ipset Optional but recommended
ipvsadm Optional but recommended

拜访 KubeSphere 操控面板。

履行下面命令检查关于登录的信息:

Collecting installation results ...
#####################################################
###              Welcome to KubeSphere!           ###
#####################################################
Console: http://10.0.0.4:30880
Account: admin
Password: P@88w0rd
NOTES:
  1. After you log into the console, please check the
     monitoring status of service components in
     "Cluster Management". If any service is not
     ready, please wait patiently until all components
     are up and running.
  2. Please change the default password after login.
#####################################################
https://kubesphere.io             2022-09-06 15:41:44
#####################################################

拜访 30880 端口,并运用用户名密码登录,就能够拜访 KubeSphere 。为确保能够拜访 KubeSphere 和其他服务,请依据实际情况在云渠道操控面板为相应端口添参加站出站规矩。

KubeSphere Cloud 创立演示环境

创立轻量集群服务:

注册并登录 kubesphere.cloud 之后,能够轻松创立轻量集群服务。

在 KubeSphere 中开启新一代云原生数仓 Databend

运用默认装备创立免费版集群即可尝鲜体会,个人用户每月有 10 小时免费额度。

拜访 KubeSphere 操控面板。

点击进入 KubeSphere,运用临时帐号密码登录。

在 KubeSphere 中开启新一代云原生数仓 Databend

插件启用

登录后的界面,如下图所示:

在 KubeSphere 中开启新一代云原生数仓 Databend

如需运用运用商铺,能够参阅 KubeSphere 文档 – 在装置后启用运用商铺 启用。

敞开后能够在运用商铺中查找找到 Databend ,成果相似下图。

在 KubeSphere 中开启新一代云原生数仓 Databend

企业空间与项目办理

点击渠道办理进入拜访操控页面,选中企业空间,点击创立,在称号一栏填写你想运用的称号,比方 databend

在侧边栏选中项目,点击创立,分别创立为 databend-metadatabend-query 准备的项目。创立后效果如图所示:

在 KubeSphere 中开启新一代云原生数仓 Databend

布置 Databend

运用模板载入

虽然运用商铺中已经有 Databend 可供选用,但版别较旧(v0.8.122-nightly),新的 PR(v1.0.3-nightly)需求等合并之后才可用,所以主张增加 Databend 官方维护的 helm-charts 作为运用模板。

Databend 官方供给了 Helm Charts ,而 KubeSphere 也支撑运用 Helm Charts 运用模板。

运用模板是用户上传、交给和办理运用的一种方法。一般来说,依据一个运用的功用以及与外部环境通信的方法,它能够由一个或多个 Kubernetes 作业负载(例如布置、有状况副本集和看护进程集)和服务组成。作为运用模板上传的运用根据 Helm 包构建。 能够将 Helm Chart 交给至 KubeSphere 的公共库房,或许导入私有运用库房来供给运用模板。 kubesphere.io/zh/docs/v3.…

在企业空间侧边栏选中 运用办理 ,点击 运用库房 ,增加 Databend 官方维护的 Helm Charts 。

在 KubeSphere 中开启新一代云原生数仓 Databend

待状况变为成功后,就能够根据模板装置布置新的 Databend 运用。

在 KubeSphere 中开启新一代云原生数仓 Databend

Databend 布置模型

参阅文档。

典型的 Databend 集群架构如下图所示,需求分别布置多个 Meta 和 Query 节点:

在 KubeSphere 中开启新一代云原生数仓 Databend

在集群形式下布置 Databend 时,首要需求发动一个 Meta节点,然后设置并发动其他 Meta 节点以参加第一个 Meta 节点,构成集群。在成功发动一切 Meta 节点后,逐一发动 Query 节点。每个 Query 节点在发动后自动注册到 Meta 节点以构成集群。

在 KubeSphere 中开启新一代云原生数仓 Databend

Meta 高可用集群布置

选中 databend-meta 项目。点击侧边栏运用负载,选中运用。点击创立,并选中从运用模板。 下拉栏中选中之前增加的 Databend ,效果如图:

在 KubeSphere 中开启新一代云原生数仓 Databend

选中 databend-meta,点击装置,设定运用称号及版别,咱们引荐总是运用最新版别,以取得更好的体会。

在 KubeSphere 中开启新一代云原生数仓 Databend

运用示例设置,创立 3 副本的 databend-meta 节点构成集群。出产环境下引荐至少运用 3 副本高可用集群,能够参阅 Databend 官方文档进行装备。

bootstrap: true
replicaCount: 3
persistence:
  size: 5Gi # 考虑到宿主机资源有限,仅供演示
serviceMonitor:
  enabled: true

Query 集群布置

在 Meta 节点的一切副本就绪之后,就能够开始布置 Query 集群。

Query 节点布置的前置过程与 Meta 节点相似。进入 databend-query 项目,模仿之前的过程选中 databend-query 运用模板进行创立即可。

在 KubeSphere 中开启新一代云原生数仓 Databend

装备中需求重视的部分是:

  • databend-meta 衔接:这儿的地址取决于之前布置的 Meta 集群的相关信息。
  • 存储方法:本示例衔接的是 QingStor ,运用 S3 兼容协议,所以需求特别重视 endpoint_url
  • 内置用户创立:创立一个名为 databend 密码为 databend 的内置用户,以便利在非 localhost 情况下拜访。

这儿发动的是一个单副本的 Query 集群,实际情况下能够依据作业负载规模灵敏调整。

replicaCount: 1
config:
  query:
    clsuterId: default
    # add builtin user
    users:
      - name: databend
        # available type: sha256_password, double_sha1_password, no_password, jwt
        authType: double_sha1_password
        # echo -n "databend" | sha1sum | cut -d' ' -f1 | xxd -r -p | sha1sum
        authString: 3081f32caef285c232d066033c89a78d88a6d8a5
  meta:
    # Set endpoints to use remote meta service
    # depends on previous deployed meta service、namespace and nodes
    endpoints:
      - "databend-meta-0.databend-meta.databend-meta.svc:9191"
      - "databend-meta-1.databend-meta.databend-meta.svc:9191"
      - "databend-meta-2.databend-meta.databend-meta.svc:9191"
  storage:
    # s3, oss
    type: s3
    s3:
      bucket: "<bucket>"
      endpoint_url: "https://s3.<region>.qingstor.com" # for qingstor
      access_key_id: "<key>"
      secret_access_key: "<secret>"
# [recommended] enable monitoring service
serviceMonitor:
  enabled: true
# [recommended] enable access from outside cluster
service:
  type: LoadBalancer

KubeSphere 监控

KubeSphere 观测作业负载

待状况变为运转中即可,这时能够很便利运用 KubeSphere 观测作业负载。

资源状况

  • databend-meta

在 KubeSphere 中开启新一代云原生数仓 Databend

  • databend-query

在 KubeSphere 中开启新一代云原生数仓 Databend

监控

  • databend-meta

在 KubeSphere 中开启新一代云原生数仓 Databend

  • databend-query

在 KubeSphere 中开启新一代云原生数仓 Databend

可拜访性测验

节点状况检测

假如是在 All-in-One 形式下布置,咱们能够轻松运用容器组 IP 地址来测验节点状况。

psiace@ks:~$ curl 10.233.107.113:8080/v1/health
{"status":"pass"}

而运用 KubeSphere Cloud 布置时,能够在 KubeSphere Cloud 操控面板,挑选网络以创立拜访规矩。

在 KubeSphere 中开启新一代云原生数仓 Databend

这儿以 8080(Admin API)和 8000(Query HTTP Handler)端口为例:

在 KubeSphere 中开启新一代云原生数仓 Databend

创立后的成果如下图所示:

在 KubeSphere 中开启新一代云原生数仓 Databend

相同咱们能够运用 curl 来检查节点状况。

psiace@ks:~$ curl https://admin-gfkyzxaz.c.kubesphere.cloud:30443/v1/health
{"status":"pass"}

履行查询

bendsql 是一个非常便利的命令行界面工具,能够帮助您顺利高效地运用 Databend 。bendsql 也支撑衔接 Databend Cloud ,办理核算集群和运转 SQL 查询。

装置 bendsql

$ go install github.com/databendcloud/bendsql/cmd/bendsql@latest

衔接 databend 集群(以 KubeSphere Cloud 为例)

$ bendsql connect -H query-gfkyzxaz.c.kubesphere.cloud -P 30443 -u databend -p databend --ssl
Connected to Databend on Host: query-gfkyzxaz.c.kubesphere.cloud
Version: DatabendQuery v0.9.57-nightly-df858a1(rust-1.68.0-nightly-2023-03-01T01:23:11.56066902Z)

测验履行查询

$ bendsql query
Connected with driver databend (DatabendQuery v0.9.57-nightly-df858a1(rust-1.68.0-nightly-2023-03-01T01:23:11.56066902Z))
Type "help" for help.
dd:databend@query-gfkyzxaz/default=> SELECT avg(number) FROM numbers(1000);
+-------------+
| avg(number) |
+-------------+
| 499.5       |
+-------------+
(1 row)

总结

本文介绍了怎么运用 KubeSphere 创立和布置 Databend 高可用集群,后端存储服务选用 QingStor ,最终运用 bendsql 演示衔接集群和履行查询。

本文由博客一文多发渠道 OpenWrite 发布!