在 KubeSphere 中開啟新一代云原生數倉 Databend
?前言
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_id? ,qy_secret_access_key? 對應 secret_access_key 。
準備 KubeSphere 環境
KubeSphere[1](https://kubesphere.io)是在 Kubernetes 之上構建的開源容器平臺,提供全棧的 IT 自動化運維的能力,簡化企業的 DevOps 工作流。KubeSphere 已被海內外數萬家企業采用。此外, KubeSphere 還擁有極為開放的生態,KubeSphere 在 OpenPitrix 的基礎上,為用戶提供了一個基于 Helm 的應用商店,用于應用生命周期管理。KubeSphere 應用商店讓 ISV、開發者和用戶能夠在一站式服務中只需點擊幾下就可以上傳、測試、安裝和發布應用。目前 Databend 已入駐 KubeSphere 應用商店。
KubeSphere 環境搭建
All-in-One 模式部署測試環境
參考官方文檔[2] 。
在 Azure 上 Spot 一臺機器:
以 All-In-One 模式部署:
注意,需要在 root 下運行。
如果提示依賴缺失,可以根據需要安裝,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 控制面板。
執行下面命令查看關于登錄的信息:
訪問 30880 端口,并使用用戶名密碼登錄,就可以訪問 KubeSphere 。為確保能夠訪問 KubeSphere 和其他服務,請根據實際情況在云平臺控制面板為相應端口添加入站出站規則。
KubeSphere Cloud 創建演示環境
創建輕量集群服務:
注冊并登錄 https://kubesphere.cloud[3] 之后,可以輕松創建輕量集群服務。
使用默認配置創建免費版集群即可嘗鮮體驗,個人用戶每月有 10 小時免費額度。
訪問 KubeSphere 控制面板。
點擊進入 KubeSphere,使用臨時帳號密碼登錄。
插件啟用
登錄后的界面,如下圖所示:
如需使用應用商店,可以參考 KubeSphere 文檔 - 在安裝后啟用應用商店[4] 啟用。
開啟后可以在應用商店中搜索找到 Databend ,結果類似下圖。
企業空間與項目管理
點擊平臺管理?進入訪問控制?頁面,選中企業空間?,點擊創建?,在名稱?一欄填寫你想使用的名稱,比如 databend。
在側邊欄選中項目?,點擊創建?,分別創建為 databend-meta? 和 databend-query 準備的項目。創建后效果如圖所示:
部署 Databend
應用模板載入
雖然應用商店中已經有 Databend 可供選用,但版本較舊(v0.8.122-nightly),新的 PR[5](v1.0.3-nightly)需要等合并之后才可用,所以建議添加 Databend 官方維護的 helm-charts 作為應用模板。
Databend 官方提供了 Helm Charts ,而 KubeSphere 也支持使用 Helm Charts 應用模板。
?
應用模板是用戶上傳、交付和管理應用的一種方式。一般來說,根據一個應用的功能以及與外部環境通信的方式,它可以由一個或多個 Kubernetes 工作負載(例如部署[6]、有狀態副本集[7]和守護進程集[8])和服務[9]組成。作為應用模板上傳的應用基于 Helm[10] 包構建。可以將 Helm Chart 交付至 KubeSphere 的公共倉庫,或者導入私有應用倉庫來提供應用模板。https://kubesphere.io/zh/docs/v3.3/workspace-administration/upload-helm-based-application/[11]
在企業空間側邊欄選中 應用管理 ,點擊 應用倉庫 ,添加 Databend 官方維護的 Helm Charts[12] 。
待狀態變為成功后,就可以基于模板安裝部署新的 Databend 應用。
Databend 部署模型
參考 Databend 官方文檔 - Understanding Deployment Modes 文檔[13]。
典型的 Databend 集群架構如下圖所示,需要分別部署多個 Meta 和 Query 節點:
在集群模式下部署 Databend 時,首先需要啟動一個 Meta 節點,然后設置并啟動其他 Meta 節點以加入第一個 Meta 節點,形成集群。在成功啟動所有 Meta 節點后,逐個啟動 Query 節點。每個 Query 節點在啟動后自動注冊到 Meta 節點以形成集群。
Meta 高可用集群部署
選中 databend-meta? 項目。點擊側邊欄應用負載?,選中應用?。點擊創建?,并選中從應用模板。下拉欄中選中之前添加的 Databend ,效果如圖:
選中 databend-meta?,點擊安裝,設定應用名稱及版本,我們推薦總是使用最新版本,以獲得更好的體驗。
使用示例設置,創建 3 副本的 databend-meta 節點形成集群。生產環境下推薦至少使用 3 副本高可用集群,可以參考 Databend 官方文檔進行配置。
Query 集群部署
在 Meta 節點的所有副本就緒之后,就可以開始部署 Query 集群。
Query 節點部署的前置步驟與 Meta 節點類似。進入 databend-query 項目,仿照之前的步驟選中 databend-query 應用模板進行創建即可。
配置中需要關注的部分是:
- databend-meta 連接:這里的地址取決于之前部署的 Meta 集群的相關信息。
- 存儲方式:本示例連接的是 QingStor ,使用 S3 兼容協議,所以需要特別關注 endpoint_url 。
- 內置用戶創建:創建一個名為 databend? 密碼為 databend 的內置用戶,以方便在非 localhost 情況下訪問。
這里啟動的是一個單副本的 Query 集群,實際情況下可以根據工作負載規模靈活調整。
KubeSphere 監控
KubeSphere 觀測工作負載
待狀態變為運行中即可,這時可以很方便使用 KubeSphere 觀測工作負載。
資源狀態
- databend-meta
- databend-query
監控
- databend-meta
- databend-query
可訪問性測試
節點狀態檢測
如果是在 All-in-One 模式下部署,我們可以輕松使用容器組 IP 地址來測試節點狀態。
而使用 KubeSphere Cloud 部署時,可以在 KubeSphere Cloud 控制面板,選擇網絡以創建訪問規則。
這里以 8080(Admin API)和 8000(Query HTTP Handler)端口為例:
創建后的結果如下圖所示:
同樣我們可以使用 curl 來檢查節點狀態。
執行查詢
bendsql 是一個十分方便的命令行界面工具,可以幫助您順暢高效地使用 Databend 。bendsql 也支持連接 Databend Cloud ,管理計算集群和運行 SQL 查詢。
安裝 bendsql
連接 databend 集群(以 KubeSphere Cloud 為例)
嘗試執行查詢
總結
本文介紹了如何使用 KubeSphere 創建和部署 Databend 高可用集群,后端存儲服務采用 QingStor ,最后使用 bendsql 演示連接集群和執行查詢。
引用鏈接
[1]KubeSphere: https://github.com/kubesphere/kubesphere
[2]官方文檔: https://kubesphere.io/zh/docs/v3.3/quick-start/all-in-one-on-linux/
[3]https://kubesphere.cloud: https://kubesphere.cloud/
[4]KubeSphere 文檔 - 在安裝后啟用應用商店: https://kubesphere.io/zh/docs/v3.3/pluggable-components/app-store/#%E5%9C%A8%E5%AE%89%E8%A3%85%E5%90%8E%E5%90%AF%E7%94%A8%E5%BA%94%E7%94%A8%E5%95%86%E5%BA%97
[5]PR: https://github.com/kubesphere/helm-charts/pull/288
[6]部署: https://kubesphere.io/zh/docs/v3.3/project-user-guide/application-workloads/deployments/
[7]有狀態副本集: https://kubesphere.io/zh/docs/v3.3/project-user-guide/application-workloads/statefulsets/
[8]守護進程集: https://kubesphere.io/zh/docs/v3.3/project-user-guide/application-workloads/daemonsets/
[9]服務: https://kubesphere.io/zh/docs/v3.3/project-user-guide/application-workloads/services/
[10]Helm: https://helm.sh/
[11]https://kubesphere.io/zh/docs/v3.3/workspace-administration/upload-helm-based-application/: https://kubesphere.io/zh/docs/v3.3/workspace-administration/upload-helm-based-application/
[12]Helm Charts: https://charts.databend.rs/
[13] https://databend.rs/doc/deploy/understanding-deployment-modes