Skip to content

Commit

Permalink
Merge pull request #210 from intelligentfu/disaggregated
Browse files Browse the repository at this point in the history
disaggregated readme
  • Loading branch information
catpineapple authored Jul 29, 2024
2 parents a60f4a0 + 2fbb68f commit 4883d65
Show file tree
Hide file tree
Showing 16 changed files with 15,681 additions and 487 deletions.
71 changes: 71 additions & 0 deletions AGGREGATED-README-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
中文 | [English](AGGREGATED-README.md)
# 存算分离模式部署
存算分离是 Doris 从 3.0.0 开始提供的一种架构模式。存储和计算分离能够显著降低存储成本,在基本不降低性能的情况下将数据存储到价格更低廉的对象存储中,降低成本的同时也能更好地应对计算资源需求剧烈变化的场景。
## 资源简介
Doris 存算分离包括以下组件:fdb, ms, recycler, fe, be 。 Doris-Operator 使用 `DorisDiaggregatedMetaService` 资源部署 fdb, ms, recycler 。使用 `DorisDisaggregatedCluster` 资源部署 fe,计算资源组(be)。
## 环境要求
- Kubernetes 1.19+
- 宿主机的能够使用的 open files 大于等于 65535 (ulimit -n)

>[!NOTICE]
>K8s worker 所有节点总资源量大于部署 doris 需要的资源总量。
>worker 单个节点的资源量需要大于一个 fe 或 be 所需要的最大资源量。fe 或 be 默认最低启动配置 4c 4Gi。
## 安装 Operator
1. 下发资源定义:
```
kubectl create -f https://raw.githubusercontent.com/selectdb/doris-operator/master/config/crd/bases/crds.yaml
```
预期结果:
```
customresourcedefinition.apiextensions.k8s.io/foundationdbclusters.apps.foundationdb.org created
customresourcedefinition.apiextensions.k8s.io/dorisdisaggregatedclusters.disaggregated.cluster.doris.com created
customresourcedefinition.apiextensions.k8s.io/dorisdisaggregatedmetaservices.disaggregated.metaservice.doris.com created
```
2. 部署 Operator 以及下发其依赖的相关权限:
```
kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/master/config/operator/disaggregated-operator.yaml
```
预期结果:
```
kubectl -n doris get pods
NAME READY STATUS RESTARTS AGE
doris-operator-fdb-manager-d75574c47-b2sqx 1/1 Running 0 11s
doris-operator-5b667b4954-d674k 1/1 Running 0 11s
```
## 快速部署存算分离集群
[部署案例](./doc/examples/disaggregated/cluster) 中提供了常见配置的部署样例。以下使用最简单模式快速搭建拥有 1 套计算集群的 Doris 存算分离数据仓库:
1. 下发 `DorisDisaggregatedMetaService` 资源:
```
kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/master/doc/examples/disaggregated/metaservice/ddm-sample.yaml
```
预期结果:
```
kubectl get ddm
NAME FDBSTATUS MSSTATUS RECYCLERSTATUS
meta-service-release Available Ready Ready
```
2. 下发包含对象存储信息的 ConfigMap 资源:
存算分离以对象存储作为后端存储,需要提前规划好使用的对象存储。按照 [Doris 存算分离接口](https://doris.apache.org/zh-CN/docs/dev/compute-storage-decoupled/creating-cluster#%E5%86%85%E7%BD%AE%E5%AD%98%E5%82%A8%E5%90%8E%E7%AB%AF)接口格式将对象存储信息配置成 json 格式,以 `instance.conf` 为 key , json 格式的对象存储信息作为 value 配置到 ConfigMap 的 data 中。
```
kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/master/doc/examples/disaggregated/cluster/object-store-info.yaml
```
预期结果:
```
configmap/vault-test created
```

> [!NOTICE]
> 1. 部署存算分离集群需要预先规划好使用的对象存储,将对象存储信息通过 ConfigMap 配置到 doris 存算分离集群需要部署的 Namespace 空间。
> 2. 案例中的配置主要为展示对象存储的基本配置所需信息,所有的值均为虚构不能用于真实场景,如果需要搭建真实可用集群请使用真实数据填写。
3. 下发 `DorisDisaggregatedCluster` 资源部署集群:
```
kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/master/doc/examples/disaggregated/cluster/ddc-sample.yaml
```
预期结果:
```
kubectl get ddc
NAME CLUSTERHEALTH FEPHASE CGCOUNT CGAVAILABLECOUNT CGFULLAVAILABLECOUNT
test-disaggregated-cluster green Ready 1 1 1
```
4 changes: 4 additions & 0 deletions AGGREGATED-README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
English | [中文](AGGREGATED-README-CN.md)

#Doris Compute and Storage Decoupled
Doris-OP
9 changes: 6 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,12 @@ manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and Cust
$(CONTROLLER_GEN) rbac:roleName=manager-doris crd:generateEmbeddedObjectMeta=true webhook paths="./api/doris/..." output:crd:artifacts:config=config/crd/bases
$(CONTROLLER_GEN) rbac:roleName=manager-doris crd:generateEmbeddedObjectMeta=true webhook paths="./api/doris/..." output:crd:artifacts:config=helm-charts/doris-operator/crds
$(CONTROLLER_GEN) rbac:roleName=manager-doris crd:generateEmbeddedObjectMeta=true webhook paths="./api/disaggregated/..." output:crd:artifacts:config=config/crd/bases
cat config/crd/bases/apps.foundationdb.org_foundationdbclusters.yaml > config/crd/bases/doris.disaggregated.cluster.yaml
cat config/crd/bases/disaggregated.cluster.doris.com_dorisdisaggregatedclusters.yaml >> config/crd/bases/doris.disaggregated.cluster.yaml
cat config/crd/bases/disaggregated.metaservice.doris.com_dorisdisaggregatedmetaservices.yaml >> config/crd/bases/doris.disaggregated.cluster.yaml
cat config/crd/bases/apps.foundationdb.org_foundationdbclusters.yaml > config/crd/bases/crds.yaml
cat config/crd/bases/apps.foundationdb.org_foundationdbbackups.yaml >> config/crd/bases/crds.yaml
cat config/crd/bases/apps.foundationdb.org_foundationdbrestores.yaml >> config/crd/bases/crds.yaml
cat config/crd/bases/doris.selectdb.com_dorisclusters.yaml >> config/crd/bases/crds.yaml
cat config/crd/bases/disaggregated.cluster.doris.com_dorisdisaggregatedclusters.yaml >> config/crd/bases/crds.yaml
cat config/crd/bases/disaggregated.metaservice.doris.com_dorisdisaggregatedmetaservices.yaml >> config/crd/bases/crds.yaml


.PHONY: generate
Expand Down
9 changes: 5 additions & 4 deletions README-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/$(cur
```
kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/$(curl -s https://api.github.com/repos/selectdb/doris-operator/releases/latest | grep tag_name | cut -d '"' -f4)/doc/examples/doriscluster-sample.yaml
```
[doriscluster-sample-storageclass.yaml](./doc/examples/doriscluster-sample-storageclass.yaml) 展示使用 [StorageClass](https://kubernetes.io/docs/concepts/storage/storage-classes/) 模式提供存储卷部署 doris 的样例。
## 注意
1. 目前 Doris-operator 限定 Doris 在 Kubernetes 上必须使用 FQDN 模式启动和通信。 在使用 [DockerHub selectdb](https://hub.docker.com/?namespace=selectdb) 组织下的官方镜像部署时,`enable_fqdn_mode` 会被默认设置为 `true`。其他方式使用镜像时, fqdn 默认仍然是 false 。详细配置请参考文档 [example/doriscluster-sample-configmap.yaml](./doc/examples/doriscluster-sample-configmap.yaml)
2. 服务正常运行时,可以通过 `kubectl -n doris logs -f {pod_name}` 命令查看日志,也可以到容器内部的 `/opt/apache-doris/fe/log``/opt/apache-doris/be/log` 中查看日志。当 k8s 上没有日志处理系统时,建议为日志目录挂载存储盘,便于追溯较早的大量运行日志。为日志挂载存储盘可以参考文档 [example/doriscluster-sample-storageclass.yaml](./doc/examples/doriscluster-sample-storageclass.yaml)
[doriscluster-sample-storageclass.yaml](./doc/examples/doriscluster-sample-storageclass.yaml) 展示使用 [StorageClass](https://kubernetes.io/docs/concepts/storage/storage-classes/) 模式提供存储卷部署 doris 的样例。

> [!WARNING]
> 1. 目前 Doris-operator 限定 Doris 在 Kubernetes 上必须使用 FQDN 模式启动和通信。 在使用 [DockerHub selectdb](https://hub.docker.com/?namespace=selectdb) 组织下的官方镜像部署时,`enable_fqdn_mode` 会被默认设置为 `true`。其他方式使用镜像时, fqdn 默认仍然是 false 。详细配置请参考文档 [example/doriscluster-sample-configmap.yaml](./doc/examples/doriscluster-sample-configmap.yaml)
> 2. 服务正常运行时,可以通过 `kubectl -n doris logs -f {pod_name}` 命令查看日志,也可以到容器内部的 `/opt/apache-doris/fe/log``/opt/apache-doris/be/log` 中查看日志。当 k8s 上没有日志处理系统时,建议为日志目录挂载存储盘,便于追溯较早的大量运行日志。为日志挂载存储盘可以参考文档 [example/doriscluster-sample-storageclass.yaml](./doc/examples/doriscluster-sample-storageclass.yaml)
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
DorisCluster | [DorisDisaggregatedCluster](doris_aggregated_cluster.md)
DorisCluster | [DorisDisaggregatedCluster](AGGREGATED-README)

English | [中文](README-CN.md)
# doris-operator
Doris-operator for doris creates, configures and manages doris cluster running on kubernetes. Operator provide deploy and manage fe, be, cn,broker components.
Doris-Operator for doris creates, configures and manages doris cluster running on kubernetes. Operator provide deploy and manage fe, be, cn,broker components.
Users custom `DorisCluster` CRD to deploy doris as demand.

## Features
Expand Down
Loading

0 comments on commit 4883d65

Please sign in to comment.