部署 Docker 集群

背景说明

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

适用场景

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

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

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

软件环境

软件版本
Docker20.0 及以上
docker-compose2.10 及以上

硬件环境

配置类型硬件信息最大运行集群规模
最低配置2C 4G1FE 1BE
推荐配置4C 16G3FE 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\BROKERFE_SERVERSFE 节点主要信息
FEFE_IDFE 节点 ID1
BEBE_ADDRBE 节点主要信息172.20.80.5:9050
BENODE_ROLEBE 节点类型computation
BROKERBROKER_ADDRBROKER 节点主要信息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 命令

创建子网网桥

  1. docker network create --driver bridge --subnet=172.20.80.0/24 doris-network

1FE & 1BE 命令模板

  1. docker run -itd \
  2. --name=fe \
  3. --env FE_SERVERS="fe1:172.20.80.2: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/conf:/opt/apache-doris/fe/conf \
  9. -v /data/fe/log:/opt/apache-doris/fe/log \
  10. --network=doris-network \
  11. --ip=172.20.80.2 \
  12. apache/doris:1.2.1-fe-x86_64
  13. docker run -itd \
  14. --name=be \
  15. --env FE_SERVERS="fe1:172.20.80.2:9010" \
  16. --env BE_ADDR="172.20.80.3:9050" \
  17. -p 8040:8040 \
  18. -v /data/be/storage:/opt/apache-doris/be/storage \
  19. -v /data/be/conf:/opt/apache-doris/be/conf \
  20. -v /data/be/log:/opt/apache-doris/be/log \
  21. --network=doris-network \
  22. --ip=172.20.80.3 \
  23. apache/doris:1.2.1-be-x86_64

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

Docker Compose 脚本

1FE & 1BE 模板

  1. version: '3'
  2. services:
  3. docker-fe:
  4. image: "apache/doris:1.2.1-fe-x86_64"
  5. container_name: "doris-fe"
  6. hostname: "fe"
  7. environment:
  8. - FE_SERVERS=fe1:172.20.80.2:9010
  9. - FE_ID=1
  10. ports:
  11. - 8030:8030
  12. - 9030:9030
  13. volumes:
  14. - /data/fe/doris-meta:/opt/apache-doris/fe/doris-meta
  15. - /data/fe/conf:/opt/apache-doris/fe/conf
  16. - /data/fe/log:/opt/apache-doris/fe/log
  17. networks:
  18. doris_net:
  19. ipv4_address: 172.20.80.2
  20. docker-be:
  21. image: "apache/doris:1.2.1-be-x86_64"
  22. container_name: "doris-be"
  23. hostname: "be"
  24. depends_on:
  25. - docker-fe
  26. environment:
  27. - FE_SERVERS=fe1:172.20.80.2:9010
  28. - BE_ADDR=172.20.80.3:9050
  29. ports:
  30. - 8040:8040
  31. volumes:
  32. - /data/be/storage:/opt/apache-doris/be/storage
  33. - /data/be/conf:/opt/apache-doris/be/conf
  34. - /data/be/script:/docker-entrypoint-initdb.d
  35. - /data/be/log:/opt/apache-doris/be/log
  36. networks:
  37. doris_net:
  38. ipv4_address: 172.20.80.3
  39. networks:
  40. doris_net:
  41. ipam:
  42. config:
  43. - subnet: 172.20.80.0/16

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 集群。

未尽事项

  1. Compose Demo List