跳到主要内容
跳到主要内容

部署 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 集群样例,可以按需下载。

  1. 下载部署样例:
  • 从 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
  1. 部署 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 的部署样例,通过如下命令直接下载使用

  1. 下载部署样例:

    从 FDB 官方下载 IP 模式部署样例:

wget https://raw.githubusercontent.com/foundationdb/fdb-kubernetes-operator/main/config/samples/cluster.yaml
  1. 定制化部署样例:
  • 环境可访问 dockerhub

    根据官网提供的用户手册定制化部署终态。如果使用 FQDN 部署,请将 routing.useDNSInClusterFile 字段设置为 true ,配置如下:
    doris-operator 的官方仓库中提供了使用 FQDN 部署 FDB 的部署样例可直接下载使用。

spec:
routing:
useDNSInClusterFile: true
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

预期结果如下,若 AVAILABLEtrue 则代表集群可用:

NAME           GENERATION   RECONCILED   AVAILABLE   FULLREPLICATION   VERSION   AGE
test-cluster 1 1 true true 7.1.26 13m