部署 Docker 集群

背景说明

本篇将简述如何通过 docker run 或 docker-compose up 命令快速构建一套完整的 Doris 测试集群。

适用场景

建议在 SIT 或者 DEV 环境中使用 Doris Docker 来简化部署的流程。

如在新版本中想测试某一个功能点,可以使用 Doris Docker 部署一个 Playground 环境。或者在调试的过程中要复现某个问题时,也可以使用 docker 环境来模拟。

在生产环境上,当前暂时尽量避免使用容器化的方案进行 Doris 部署。

软件环境

软件 版本
Docker 20.0 及以上
docker-compose 2.10 及以上

硬件环境

配置类型 硬件信息 最大运行集群规模
最低配置 2C 4G 1FE 1BE
推荐配置 4C 16G 3FE 3BE

前期环境准备

需在宿主机执行如下命令

1. sysctl -w vm.max_map_count=2000000

Docker Compose

不同平台需要使用不同 Image 镜像,本篇以 X86_64 平台为例。

网络模式说明

Doris Docker 适用的网络模式有两种。

  1. 适合跨多节点部署的 HOST 模式,这种模式适合每个节点部署 1FE 1BE。
  2. 适合单节点部署多 Doris 进程的子网网桥模式,这种模式适合单节点部署(推荐),若要多节点混部需要做更多组件部署(不推荐)。

为便于展示,本章节仅演示子网网桥模式编写的脚本。

接口说明

从 Apache Doris 1.2.1 Docker Image 版本起,各个进程镜像接口列表如下:

进程名 接口名 接口定义 接口示例
FE BE BROKER FE_SERVERS
FE FE_ID FE 节点 ID 1
BE BE_ADDR BE 节点主要信息 172.20.80.5:9050
BE NODE_ROLE BE 节点类型 computation
BROKER BROKER_ADDR BROKER 节点主要信息 172.20.80.6:8000

注意,以上接口必须填写信息,否则进程无法启动。

FE_SERVERS 接口规则为:FE_NAME:FE_HOST:FE_EDIT_LOG_PORT[,FE_NAME:FE_HOST:FE_EDIT_LOG_PORT]

FE_ID 接口规则为:1-9 的整数,其中 1 号 FE 为 Master 节点。

BE_ADDR 接口规则为:BE_HOST:BE_HEARTBEAT_SERVICE_PORT

NODE_ROLE 接口规则为:computation 或为空,其中为空或为其他值时表示节点类型为 mix 类型

BROKER_ADDR 接口规则为:BROKER_HOST:BROKER_IPC_PORT

脚本模板

Docker Run 命令

1FE & 1BE 命令模板

注意需要修改 ${当前机器的内网IP} 替换为当前机器的内网IP

1. docker run -itd \
2. --name=fe \
3. --env FE_SERVERS="fe1:${当前机器的内网IP}:9010" \
4. --env FE_ID=1 \
5. -p 8030:8030 \
6. -p 9030:9030 \
7. -v /data/fe/doris-meta:/opt/apache-doris/fe/doris-meta \
8. -v /data/fe/log:/opt/apache-doris/fe/log \
9. --net=host \
10. apache/doris:2.0.0_alpha-fe-x86_64

12. docker run -itd \
13. --name=be \
14. --env FE_SERVERS="fe1:${当前机器的内网IP}:9010" \
15. --env BE_ADDR="${当前机器的内网IP}:9050" \
16. -p 8040:8040 \
17. -v /data/be/storage:/opt/apache-doris/be/storage \
18. -v /data/be/log:/opt/apache-doris/be/log \
19. --net=host \
20. apache/doris:2.0.0_alpha-be-x86_64

3FE & 3BE Run 命令模板如有需要点击此处访问下载。

Docker Compose 脚本

1FE & 1BE 模板

注意需要修改 ${当前机器的内网IP} 替换为当前机器的内网IP

1. version: "3"
2. services:
3. fe:
4. image: apache/doris:2.0.0_alpha-fe-x86_64
5. hostname: fe
6. environment:
7. - FE_SERVERS=fe1:${当前机器的内网IP}:9010
8. - FE_ID=1
9. volumes:
10. - /data/fe/doris-meta/:/opt/apache-doris/fe/doris-meta/
11. - /data/fe/log/:/opt/apache-doris/fe/log/
12. network_mode: host
13. be:
14. image: apache/doris:2.0.0_alpha-be-x86_64
15. hostname: be
16. environment:
17. - FE_SERVERS=fe1:${当前机器的内网IP}:9010
18. - BE_ADDR=${当前机器的内网IP}:9050
19. volumes:
20. - /data/be/storage/:/opt/apache-doris/be/storage/
21. - /data/be/script/:/docker-entrypoint-initdb.d/
22. depends_on:
23. - fe
24. network_mode: host

3FE & 3BE Docker Compose 脚本模板如有需要点击此处访问下载。

部署 Doris Docker

部署方式二选一即可:

  1. 执行 docker run 命令创建集群
  2. 保存 docker-compose.yaml 脚本,同目录下执行 docker-compose up -d 命令创建集群

特例说明

MacOS 由于内部实现容器的方式不同,在部署时宿主机直接修改 max_map_count 值可能无法成功,需要先创建以下容器:

1. docker run -it --privileged --pid=host --name=change_count debian nsenter -t 1 -m -u -n -i sh

容器创建成功执行以下命令:

1. sysctl -w vm.max_map_count=2000000

然后 exit 退出,创建 Doris Docker 集群。