Развёртывание FoundationDB
FoundationDB — распределённая база данных со строгой согласованностью для структурированных данных, распространяемая под открытой лицензией Apache 2.0. Doris использует FoundationDB в качестве хранилища метаданных в режиме разделения вычислений и хранения.
Для развёртывания кластера с разделением вычислений и хранения в Kubernetes необходимо предварительно развернуть сервис FoundationDB. Рекомендуются два способа развёртывания:
-
Развёртывание непосредственно на машинах (в том числе физических). Чтобы развернуть FoundationDB непосредственно на машинах, следуйте разделу Подготовка к развёртыванию в официальной документации Doris по разделению вычислений и хранения. Перед развёртыванием убедитесь, что машины с FoundationDB и кластер Kubernetes, в котором работает Doris, находятся в одной локальной сети.
-
Развёртывание FoundationDB в Kubernetes. FoundationDB официально предоставляет fdb-kubernetes-operator для развёртывания FoundationDB и управления им в Kubernetes.
Развёртывание FoundationDB в Kubernetes
Развёртывание FoundationDB в Kubernetes состоит из 4 шагов:
- Разверните определения ресурсов FoundationDB.
- Разверните сервис fdb-kubernetes-operator.
- Разверните кластер FoundationDB.
- Проверьте состояние FoundationDB.
Шаг 1: Развёртывание определений ресурсов FoundationDB
Примените определения ресурсов FoundationDB с помощью следующих команд:
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
Шаг 2: Развёртывание сервиса fdb-kubernetes-operator
В репозитории fdb-kubernetes-operator приведён пример развёртывания кластера FoundationDB в режиме IP. В репозитории doris-operator приведён пример развёртывания кластера FoundationDB в режиме FQDN. Скачайте подходящий для ваших задач пример.
-
Скачайте пример конфигурации развёртывания
-
Скачивание из официального репозитория fdb-kubernetes-operator По умолчанию fdb-kubernetes-operator развёртывает кластер FoundationDB в режиме IP. Вы можете скачать YAML-файл конфигурации развёртывания fdb-kubernetes-operator по умолчанию. Для развёртывания в режиме 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-kubernetes-operator версии 1.46.0, который можно сразу использовать для развёртывания кластера FoundationDB.
wget https://raw.githubusercontent.com/apache/doris-operator/master/config/operator/fdb-operator.yaml
-
-
Разверните сервис fdb-kubernetes-operator
После настройки YAML-файла развёртывания для
fdb-kubernetes-operatorразверните 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
Шаг 3: Развёртывание кластера FoundationDB
В репозитории fdb-kubernetes-operator приведён пример конфигурации развёртывания FoundationDB. Скачайте его с помощью следующей команды.
-
Скачайте пример конфигурации развёртывания
Скачайте официальный пример конфигурации развёртывания FoundationDB в режиме IP:
wget https://raw.githubusercontent.com/foundationdb/fdb-kubernetes-operator/main/config/samples/cluster.yaml -
Настройте пример конфигурации развёртывания
-
Среда с доступом к dockerhub Настройте желаемое состояние развёртывания согласно руководству пользователя, доступному на официальном сайте. Для развёртывания в режиме FQDN задайте полю
routing.useDNSInClusterFileзначение true. Конфигурация выглядит следующим образом: В официальном репозитории doris-operator приведён пример развёртывания FoundationDB в режиме FQDN, который можно скачать и сразу использовать.spec:
routing:
useDNSInClusterFile: true -
Среда в закрытой сети В закрытой сети, где нет прямого доступа к dockerhub, скачайте необходимые образы из официального репозитория FoundationDB и загрузите их в частный реестр. fdb-kubernetes-operator зависит от foundationdb/fdb-kubernetes-operator и foundationdb/foundationdb-kubernetes-sidecar. Для развёртывания FoundationDB требуется образ fdb-kubernetes-monitor. После загрузки образов в частный реестр выполните настройку согласно разделу Настройка образа FoundationDB в официальной документации fdb-kubernetes-operator. Используйте следующую конфигурацию, чтобы добавить настройки образов из частного реестра:
spec:
mainContainer:
imageConfigs:
- baseImage: foundationdb/fdb-kubernetes-monitor
tag: 7.1.38
sidecarContainer:
imageConfigs:
- baseImage: foundationdb/fdb-kubernetes-monitor
tag: 7.1.38
version: 7.1.38
В репозитории doris-operator представлены 4 варианта развёртывания FoundationDB: минимальное развёртывание с одной репликой, минимальное развёртывание с двумя репликами, развёртывание в производственной среде с двумя репликами и развёртывание в производственной среде с двумя репликами и образами из частного реестра.
-
- При развёртывании FoundationDB необходимо задать поле
.spec.versionресурса FoundationDBCluster, указав номер выпущенной версии FoundationDB. - FoundationDB развёртывается с помощью fdb-kubernetes-operator. Для обеспечения высокой доступности в производственной среде кластер Kubernetes должен включать не менее трёх хостов.
Шаг 4: Проверка состояния FoundationDB
FoundationDB развёртывается с помощью fdb-kubernetes-operator. Вы можете проверить состояние кластера FoundationDB с помощью следующей команды:
kubectl get fdb
Ожидаемый результат. Если AVAILABLE имеет значение true, кластер доступен:
NAME GENERATION RECONCILED AVAILABLE FULLREPLICATION VERSION AGE
test-cluster 1 1 true true 7.1.26 13m
Получение ConfigMap с информацией для доступа к FoundationDB
При развёртывании FoundationDB с помощью fdb-kubernetes-operator в пространстве имён развёртывания создаётся отдельный ConfigMap с информацией для доступа к FoundationDB. Имя этого ConfigMap состоит из имени ресурса развёрнутого FoundationDB и суффикса "-config". Для просмотра ConfigMap используйте следующую команду:
kubectl get configmap
Ожидаемый результат:
test-cluster-config 5 15d
При развёртывании в Kubernetes удаление ресурса FoundationDBCluster приводит к потере метаданных. Обращайтесь с ресурсом FoundationDBCluster осторожно.