Databend 部署与运维概要:本地部署 Meta 服务并利用 Kubernetes 管理 Query 服务
本指南旨在介绍如何部署和运维 Databend ,并且采用结合本地部署 Meta 服务和使用 K8s 管理 Query 服务的形式,以平衡元数据管理持久化和计算资源弹性调度的需求。
由于 Databend 的部署逻辑在单机模式和集群模式下的一致性,部署模式可以从单机轻松拓展到多节点集群,所以本指南中只基于最简单的情况进行介绍,即:一个本地部署的单节点 Meta ,和一个由单机 K8s 集群管理的 Query 副本。
资源准备
在本指南中,我们需要创建两台机器:
- 一台分配给 Meta 服务,以单机部署的形式运行;
- 另一台分配给 Query 服务,需要先创建 K8s 集群,然后使用 Helm Charts 进行部署。
Meta 服务部署
Meta 服务用于元数据管理,应当优先创建 Meta 节点。
下载并运行 Meta 服务
在本地部署 Meta 服务的机器上,我们需要进行以下步骤:
- 创建对应的目录,并更改所有者为当前用户:
sudo mkdir /var/log/databend sudo mkdir /var/lib/databend sudo chown -R $USER /var/log/databend sudo chown -R $USER /var/lib/databend
- 下载 Meta 的二进制发布,这里使用 databend-v1.2.159-nightly 作为示例
curl -LJO https://github.com/datafuselabs/databend/releases/download/v1.2.159-nightly/v1.2.159-nightly-x86_64-unknown-linux-musl.tar.gz tar xzvf databend-v1.2.159-nightly-x86_64-unknown-linux-musl.tar.gz
- 编辑 Meta 服务的配置文件,位于
configs/databend-meta.toml
,参考配置如下:
# Usage: # databend-meta -c databend-meta.toml admin_api_address = "0.0.0.0:28101" grpc_api_address = "0.0.0.0:9191" # databend-query fetch this address to update its databend-meta endpoints list, # in case databend-meta cluster changes. grpc_api_advertise_host = "<your-meta-ip>" [raft_config] id = 1 raft_dir = "/var/lib/databend/raft" raft_api_port = 28103 # Assign raft_{listen|advertise}_host. # This allows you to catch a bug in unit tests when something goes wrong in raft meta nodes communication. raft_listen_host = "<your-meta-ip>" raft_advertise_host = "<your-meta-ip>" # Start up mode: single node cluster single = true
- 使用配置文件运行 Meta 服务
cd bin ./databend-meta -c ../configs/databend-meta.toml > meta.log 2>&1
检查 Meta 服务可用性
- 确保 Meta 服务已经启动
curl -I http://127.0.0.1:28101/v1/health
- 确保外部服务可以访问 Meta 服务
curl -I http://<your-meta-ip>:28101/v1/health
Query 服务部署
Query 服务的部署采用 K8s,以确保其弹性扩展能力。
部署 Kubernetes 环境
在部署 Query 服务的机器上,我们需要建立一个 Kubernetes 环境。为了方便示范,这里我们使用 kubekey 来快速创建一个 K8s 环境,实际生产部署请遵循内部 K8s 部署和管理规范。
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.13 sh - chmod +x kk apt install conntrack socat ./kk create cluster kubectl get pod -A
使用 Helm 部署 Query 服务
- 在部署 Databend 时,我们使用 Helm 来管理 Query 服务。首先,我们需要添加 Databend 的 Helm Charts 。
helm repo add databend https://charts.databend.rs
- 其次我们需要创建一个
values.yaml
文件,用于配置 Query 服务需要的各项参数,相关配置可以参考 文档 | Deploying a Cluster on Kubernetes ,里面的 meta address 和 storage 根据实际情况配置,这里 query 版本目前默认为 v1.2.149-nightly 。下面是一份参考配置:
replicaCount: 1 config: query: clusterId: example_cluster # 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: - "<your-meta-endpoints>:9191" storage: # s3, oss type: oss oss: endpoint_url: "<endpoint_url>" bucket: "<bucket>" access_key_id: "<key>" access_key_secret: "<secret>" # [recommended] enable access from outside cluster service: type: LoadBalancer
- 部署 Query 服务
helm install <your-tenant-name> databend/databend-query \ --namespace databend-query --create-namespace \ --values values.yaml
- 检查服务运行状态
root@queryhelm:~# kubectl -n databend-query get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE <your-tenant-name>-databend-query LoadBalancer 10.233.46.231 <pending> 8080:32579/TCP,8124:30226/TCP,9090:31320/TCP,8900:31846/TCP,8000:30821/TCP,7070:30465/TCP,3307:30968/TCP 31m root@queryhelm:~# kubectl -n databend-query get pods NAME READY STATUS RESTARTS AGE <your-tenant-name>-databend-query-0 1/1 Running 0 7m11s
检查 Query 服务可用性
- 安装客户端。建议客户使用 BendSQL 进行查询。但考虑到通过系统包管理器安装的便利性,也可以使用 MySQL Client 等客户端。
apt install mysql-client
- 利用 Kubectl 转发以确保本地可访问
nohup kubectl port-forward -n databend-query svc/<your-tenant-name>-databend-query 3307:3307 &
- 连接 Query 节点并进行查询
mysql -h127.0.0.1 -udatabend -P3307 -pdatabend mysql> select * from system.clusters; +------------------------+--------------+------+---------------------------------------------------------------------------------+ | name | host | port | version | +------------------------+--------------+------+---------------------------------------------------------------------------------+ | ohzKStkZenhhO3FpoAAcZ5 | 10.233.107.5 | 9090 | v1.2.149-nightly-6397a6af00(rust-1.72.0-nightly-2023-10-09T16:12:52.382486326Z) | +------------------------+--------------+------+---------------------------------------------------------------------------------+ mysql> SELECT avg(number) FROM numbers(100000000); +-------------+ | avg(number) | +-------------+ | 49999999.5 | +-------------+ 1 row in set (0.07 sec) Read 100000000 rows, 762.94 MiB in 0.066 sec., 1.52 billion rows/sec., 11.30 GiB/sec.
注意:Query 服务的外部可访问性建议根据实际部署运维规范进行管理,这里不涉及相关操作。对于在云平台使用 LoadBalancer
的用户,可能会分配对应的公网 IP ,有潜在的安全问题,可以参考 文档 | Step 2. Deploy a Databend Query Cluster 进行处理。
缩放与升级
在升级前特别需要检查 Meta 和 Query 之间的兼容性。
Query 服务的缩放与升级
在部署过程中,如果计划使用其他版本的镜像/其他规模的副本数量,可以直接在 values.yaml
中进行修改:
- replicaCount: 1 + replicaCount: 3 + image: + repository: datafuselabs/databend-query + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "v1.2.216-nightly"
Query 总体上是无状态的,可以简单使用一行命令升级:
helm upgrade --install <your-tenant-name> databend/databend-query \ --namespace databend-query --create-namespace \ --values values.yaml
Meta 服务的缩放与升级
Meta 的节点添加与删除可以参考 文档 | Manage a Databend Meta Service Cluster 进行。如果想要直接部署 Meta 集群,也可以参阅 文档 | Deploying a Databend Cluster 。
Meta 的升级涉及数据迁移,建议联系 Databend 团队进行。
负载均衡
可以根据实际情况使用不同的 hash key 结合 "subset" hashing 等方式组合进行负载均衡。
Databend JDBC 在每次发起请求都会携带一个名为 X-DATABEND-QUERY-ID
的 HTTP Header,如果想要实现同一客户端,多个请求分散打到不同后端实例的效果,可以基于该 HTTP Header 来做 Nginx 的 Hash Key,以达到负载均衡的效果。
使用 Query ID 相关 Header 而不是其他方式的原因:
现在用户使用 SDK 去请求多副本的 Databend Query 由于 Query 会产生回查并且 Query ID 没有持久化,单纯对后端端点做负载均衡可能会出现 query id not found 的错误。
ingress: enabled: true className: "nginx" annotations: nginx.ingress.kubernetes.io/upstream-hash-by: "$http_x_databend_query_id"
参考资料
- 在本地部署 Databend :https://docs.databend.com/guides/deploy/cluster/metasrv-deploy
- 在 K8s 上部署 Databend :https://docs.databend.com/guides/deploy/cluster/deploying-databend-on-kubernetes
- 升级指南:https://docs.databend.com/guides/deploy/upgrade/
- Meta 和 Query 之间的兼容性:https://docs.databend.com/guides/deploy/upgrade/compatibility
- 添加与删除 Meta 节点:https://docs.databend.com/guides/deploy/cluster/metasrv-add-remove-node
- 备份和还原 Meta 服务:https://docs.databend.com/guides/deploy/upgrade/backup-and-restore-schema
- Query 相关集群规模放缩:https://docs.databend.com/guides/deploy/cluster/deploying-databend-on-kubernetes#maintain-databend-query-cluster
- Custom NGINX upstream hashing - Annotations - Ingress-Nginx Controller:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-nginx-upstream-hashing
关于 Databend
Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。
👨💻 Databend Cloud:databend.cn
📖 Databend 文档:databend.rs/
💻 Wechat:Databend
✨ GitHub:github.com/datafuselab…

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
国产化软硬件升级之路:πDataCS 赋能工业软件创新与实践
在国产化浪潮的推动下,基础设施软硬件替换和升级的需求日益增长。全栈国产化软硬件升级替换已成为许多领域中的必选项,也引起了数据库和存储领域的广泛关注。近年来,虽然涌现了许多成功的替换案例,但仍然面临着一些问题。 数据库、存储领域升级替换有哪些重点和难点?如何迎接挑战把握机遇?用户和厂商应该做好哪些准备去面向未来?...... 12月22日,ITPUB 携手各领域专家,举办「国产化软硬件升级替换之路」系列线上主题沙龙,与大家共同探讨国产化软硬件替换的关键问题和解决方案。拓数派作为国产云原生数据库领域的佼佼者,也受邀参与了本次活动,拓数派产品社区总监吴疆于活动中发表了演讲《πDataCS 赋能工业软件创新与实践》。 随着数字化时代的到来,工业领域正经历着巨大的改革,很多企业在工业软件的创新和实践过程中面临一系列挑战。在演讲中,吴疆首先介绍了拓数派旗下的大模型数据计算系统 πDataCS,它以云原生技术重构数据存储和计算,实现全新「一份存储、多引擎数据计算」的云原生架构,全面升级大数据系统至大模型时代 ,赋能行业AI场景应用。 目前πDataCS支持三大计算引擎:云原生虚拟数仓PieCloud...
- 下一篇
openGauss 系新增市场份额达21.9%,跨越生态拐点
[中国,北京,2023年12月28日]以“汇聚数据库创新力量,打造千行万业数据基石”为主题的openGaussSummit2023在北京望京凯悦酒店举办。本次大会由国家工业信息安全发展研究中心软件所、中国软件行业协会、中国计算机学会数据库专业委员会指导,openGauss社区主办。 中国工程院院士郑纬民为大会致辞,他表示:中国数据库行业进入高速发展阶段,openGauss已在国计民生行业规模商用,成为行业首选的国产开源数据库。国内数据库社区进一步可持续发展需加强数据库核心技术研发;建立完善的国产开源数据库生态,打造植根于国内的开源数据库根社区;加强专业数据库技术人才培养。 中国工程院院士郑纬民 中国科学院院士王小云在致辞中表示,数据安全技术的突破,不仅需要科学界解决密码学、共识算法等难题,同时需要与应用场景、基础软件等相结合,以便在千行百业落地,保证国计民生重要数据的全生命周期安全。 中国科学院院士王小云 国家工业信息安全发展研究中心软件所所长潘妍表示,要着力攻克核心技术的卡点短板,加强新型数据库研发布局,强化应用场景的牵引,并打造优质的骨干企业,培育一批数据库龙头企业和创新型的中小企...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启