乐趣区

关于云计算:在-KubeSphere-中开启新一代云原生数仓-Databend

作者:尚卓燃(https://github.com/PsiACE),Databend 研发工程师,Apache OpenDAL (Incubating) PPMC。

前言

Databend 是一款齐全面向云对象存储的新一代云原生数据仓库,专为弹性和高效设计,为您的大规模剖析需要保驾护航。Databend 同时是一款合乎 Apache-2.0 协定的开源软件,除了拜访云服务(https://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(https://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 创立演示环境

创立轻量集群服务:

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

应用默认配置创立免费版集群即可尝鲜体验,个人用户每月有 10 小时收费额度。

拜访 KubeSphere 控制面板。

点击 进入 KubeSphere,应用长期帐号密码登录。

插件启用

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

如需应用利用商店,能够参考 KubeSphere 文档 – 在装置后启用利用商店 启用。

开启后能够在利用商店中搜寻找到 Databend,后果相似下图。

企业空间与项目管理

点击 平台治理 进入 访问控制 页面,选中 企业空间 ,点击 创立 ,在 名称 一栏填写你想应用的名称,比方 databend

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

部署 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 的公共仓库,或者导入公有利用仓库来提供利用模板。
https://kubesphere.io/zh/docs/v3.3/workspace-administration/upload-helm-based-application/

在企业空间侧边栏选中 利用治理 ,点击 利用仓库,增加 Databend 官网保护的 Helm Charts。

待状态变为胜利后,就能够基于模板装置部署新的 Databend 利用。

Databend 部署模型

参考文档。

典型的 Databend 集群架构如下图所示,须要别离部署多个 Meta 和 Query 节点:

在集群模式下部署 Databend 时,首先须要启动一个 Meta 节点,而后设置并启动其余 Meta 节点以退出第一个 Meta 节点,造成集群。在胜利启动所有 Meta 节点后,一一启动 Query 节点。每个 Query 节点在启动后主动注册到 Meta 节点以造成集群。

Meta 高可用集群部署

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

选中 databend-meta,点击 装置,设定利用名称及版本,咱们举荐总是应用最新版本,以取得更好的体验。

应用示例设置,创立 3 正本的 databend-meta 节点造成集群。生产环境下举荐至多应用 3 正本高可用集群,能够参考 Databend 官网文档进行配置。

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

Query 集群部署

在 Meta 节点的所有正本就绪之后,就能够开始部署 Query 集群。

Query 节点部署的前置步骤与 Meta 节点相似。进入 databend-query 我的项目,仿照之前的步骤选中 databend-query 利用模板进行创立即可。

配置中须要关注的局部是:

  • 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
  • databend-query

监控

  • databend-meta
  • databend-query

可拜访性测试

节点状态检测

如果是在 All-in-One 模式 下部署,咱们能够轻松应用容器组 IP 地址来测试节点状态。

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

而应用 KubeSphere Cloud 部署时,能够在 KubeSphere Cloud 控制面板,抉择 网络 以创立拜访规定。

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

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

同样咱们能够应用 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 公布!

退出移动版