部署 FoundationDB
FDB 是 Apple 公司开发的分布式强一致性存储结构化数据的数据库。Doris 存算分离模式使用 FDB 作为元数据存储,通过 meta-service 组件来管理 FDB 中的元数据。Kubernetes 上部署存算分离集群需要提前部署 FDB 服务,推荐两种部署方式:在虚机 (包括物理机) 上直接部署; 使用 fdb-kubernetes-operator 部署 FDB。 虚机部署请参考 Doris 存算分离官方文档部署前准备部分搭建 FDB 集群。部署前请确保 FDB 有被 Doris 部署的 Kubernetes 集群访问的能力,即 Kubernetes 的 Node 与 FDB 部署的机器在同一个子网。FDB 官方提供 Kubernetes 上部署运维管理服务 fdb-kubernetes-operator 。
以下简述使用 fdb-kubernetes-operator 最新版本部署 FDB 使用样例。
部署 FDB 相关资源定义
kubectl apply -f https://raw.githubusercontent.com/FoundationDB/fdb-kubernetes-operator/main/config/crd/bases/apps.foundationdb.org_foundationdbclusters.yaml
kubectl apply -f https://raw.githubusercontent.com/FoundationDB/fdb-kubernetes-operator/main/config/crd/bases/apps.foundationdb.org_foundationdbbackups.yaml
kubectl apply -f https://raw.githubusercontent.com/FoundationDB/fdb-kubernetes-operator/main/config/crd/bases/apps.foundationdb.org_foundationdbrestores.yaml
预期结果:
kubectl apply -f https://raw.githubusercontent.com/FoundationDB/fdb-kubernetes-operator/main/config/crd/bases/apps.foundationdb.org_foundationdbclusters.yaml
customresourcedefinition.apiextensions.k8s.io/foundationdbclusters.apps.foundationdb.org created
kubectl apply -f https://raw.githubusercontent.com/FoundationDB/fdb-kubernetes-operator/main/config/crd/bases/apps.foundationdb.org_foundationdbbackups.yaml
customresourcedefinition.apiextensions.k8s.io/foundationdbbackups.apps.foundationdb.org created
kubectl apply -f https://raw.githubusercontent.com/FoundationDB/fdb-kubernetes-operator/main/config/crd/bases/apps.foundationdb.org_foundationdbrestores.yaml
customresourcedefinition.apiextensions.k8s.io/foundationdbrestores.apps.foundationdb.org created
部署 fdb-kubernetes-operator 服务
fdb-kubernetes-operator 仓库提供了以 IP 模式部署 FDB 集群的部署样例。在 doris-operator 仓库中提供了以 FQDN 模式部署的 FDB 集群样例,可以按需下载。
- 下载部署样例:
从 fdb-kubernetes-operator 官方仓库下载:
fdb-kuberentes-operator 默认情况下使用 IP 模式部署 FDB Cluster,可以下载 fdb-kubernetes-operator 默认部署 yaml。如果使用 FQDN 部署模式,请按照官方文档使用 DNS 部分进行定制化使用域名模式。
wget -O fdb-operator.yaml https://raw.githubusercontent.com/foundationdb/fdb-kubernetes-operator/main/config/samples/deployment.yaml
从 doris-operator 仓库下载:
doris-operator 仓库中制定化了以 fdb-kuberentes-operator 1.46.0 版本为基础的部署示例,可直接使用部署 FDB cluster。
wget https://raw.githubusercontent.com/apache/doris-operator/master/config/operator/fdb-operator.yaml
部署 fdb-kubernetes-operator 服务:
定制化
fdb-kubernetes-operator
的部署 yaml 后,使用如下命令部署 fdb-kubernetes-operator:
kubectl apply -f fdb-operator.yaml
预期结果:
serviceaccount/fdb-kubernetes-operator-controller-manager created
clusterrole.rbac.authorization.k8s.io/fdb-kubernetes-operator-manager-clusterrole created
clusterrole.rbac.authorization.k8s.io/fdb-kubernetes-operator-manager-role created
rolebinding.rbac.authorization.k8s.io/fdb-kubernetes-operator-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/fdb-kubernetes-operator-manager-clusterrolebinding created
deployment.apps/fdb-kubernetes-operator-controller-manager created
部署 FDB 集群
在 fdb-kubernetes-operator 仓库中提供了部署 FDB 的部署样例,通过如下命令直接下载使用
下载部署样例:
从 FDB 官方下载 IP 模式部署样例:
wget https://raw.githubusercontent.com/foundationdb/fdb-kubernetes-operator/main/config/samples/cluster.yaml
- 定制化部署样例:
环境可访问 dockerhub
根据官网提供的用户手册定制化部署终态。如果使用 FQDN 部署,请将
routing.useDNSInClusterFile
字段设置为 true ,配置如下:
doris-operator 的官方仓库中提供了使用 FQDN 部署 FDB 的部署样例可直接下载使用。
spec:
routing:
useDNSInClusterFile: true
私网环境
在私网环境下,如果不能直接访问 dockerhub 可从 FDB 的官方仓库中将需要的镜像下载,并推到私有仓库中。fdb-kubernetes-operator 依赖 foundationdb/fdb-kubernetes-operator, foundationdb/foundationdb-kubernetes-sidecar 。
部署 FDB 依赖的镜像包括:foundationdb/foundationdb , foundationdb/foundationdb-kubernetes-sidecar。
推到私有仓库后,按照 fdb-kubernetes-operator 官方文档定制化镜像配置说明进行配置。可参考如下配置添加私有仓库镜像配置:
spec:
mainContainer:
imageConfigs:
- baseImage: foundationdb/foundationdb
tag: 7.1.38
sidecarContainer:
imageConfigs:
- baseImage: foundationdb/foundationdb-kubernetes-sidecar
tag: 7.1.36-1
version: 7.1.38
- 私有环境下,FDB 推到私有仓库时,tag 必须与官方保持一致,比如:7.1.38。
- 部署 FDB 时,FoundationDBCluster 资源,.spec.version 必须配置。
- FDB 基于 fdb-kubernetes-operator 部署,至少需要三个宿主机才可满足生产环境高可用要求。
确认 FDB 状态
FDB 基于 fdb-kubernetes-operator 部署,可以通过如下命令查看 FDB 集群状态:
kubectl get fdb
预期结果如下,若 AVAILABLE
为 true
则代表集群可用:
NAME GENERATION RECONCILED AVAILABLE FULLREPLICATION VERSION AGE
test-cluster 1 1 true true 7.1.26 13m