基于Docker的集群部署教程
本页提供《基于Docker的集群部署教程》的标题、作者署名与发布日期等基础信息。
Source: https://dolphindb.cn/blogs/6
What this page covers
- Docker 背景与集群部署目标(4 个容器、5 节点拓扑)。
- License 与节点规模限制及放置路径要求。
- 虚拟子网固定 IP 与 controller/agent/datanode 配置示例。
- Docker 虚拟网络下 UDP 限制与 lanCluster=0 配置。
- 前置环境:docker 与 docker-compose 安装与版本查看。
- 下载部署包、构建镜像与查看镜像信息的步骤。
- docker-compose 启动容器与输出结果(网络、容器)。
技能认证特训营第二期报名推广
页面顶部包含活动报名引导,并提供限时报名链接。
- 提供“技能认证特训营第二期”的报名入口链接。
- 报名链接指向 qingsuyun.com 的活动页面。
基于Docker的集群部署教程(标题、作者与日期)
本节给出文章标题、作者署名与发布日期信息。
- 作者署名为 liang.lin。
- 发布日期为 2021-05-14。
背景与目标:使用 Docker 部署 DolphinDB 分布式集群
介绍 Docker 与 DolphinDB 的 docker 集群部署包,并说明以 4 个 CentOS 容器搭建 5 节点多机集群的目标与拓扑。
- Docker 被描述为可为应用创建轻量级可移植容器的开源引擎。
- DolphinDB 提供基于 docker 的分布式集群部署包。
- 本文部署目标为使用 4 个 CentOS 容器搭建集群。
- 目标拓扑为 5 节点多机集群(含 controller 与多个 datanode)。
License 与节点规模限制说明
社区版 license 不支持目标节点规模,并要求使用支持 6+ 节点的企业版 license 放到指定目录。
- 免费社区版 license 无法支持 5 个数据节点和 1 个控制器节点。
- 需申请支持 6 个以上节点的企业版 license。
- 企业版 license 文件 dolphindb.lic 需放到 ./cfg 目录下。
网络与端口配置:controller/agent/datanode 与虚拟子网
部署包通过容器虚拟子网为 4 个容器分配固定 IP,并给出 controller、agent 与节点列表的配置示例。
- 需要分别配置 controller、agent、datanode 的网络 IP 和端口。
- 容器虚拟子网为 4 个容器分配 10.5.0.2 到 10.5.0.5 的固定 IP。
- 部署包内置包含 IP/端口信息的配置文件(无需手工逐一配置)。
- controller.cfg 示例包含 localSite=10.5.0.5:8888:master。
- agent1.cfg 示例包含 mode=agent 与 controllerSite=10.5.0.5:8888:master。
UDP 在 Docker 虚拟网络的限制与 lanCluster 配置
UDP 在 docker 虚拟网络环境中无法正常工作,需要设置 lanCluster=0,且部署包已默认添加。
- 在 Docker 虚拟网络环境中,UDP 协议无法正常工作。
- agent.cfg 与 cluster.cfg 需要添加 lanCluster=0。
- 部署包配置文件已默认添加 lanCluster=0。
前置环境:安装 docker 与 docker-compose、查看版本
提供 docker 与 docker-compose 安装参考链接,并给出查询版本号的命令。
- 部署前需要搭建 docker 环境并安装 docker-compose。
- 提供 Docker 安装教程链接:https://docs.docker.com/install/。
- 提供 docker-compose 安装教程链接:https://docs.docker.com/compose/install/#install-compose。
- Docker 版本查询命令为 docker -v。
- docker-compose 版本查询命令为 docker-compose --version。
步骤 1:下载并编译 DolphinDB docker 集群部署包
说明下载部署包、通过修改 DockerFile 版本参数构建镜像,并展示构建与查看镜像的命令与示例输出。
- 文中给出部署包下载链接(Gitee)。
- 解压后可修改 Dockerbuild/DockerFile 的 dolphindb_version 参数。
- 文中给出 Release Notes 查询链接:https://github.com/dolphindb/release。
- DockerFile 示例包含 ARG dolphindb_version = "DolphinDB_Linux64_V1.00.10.zip"。
- 构建镜像命令示例为 docker build -t ddb:latest ./(在指定目录执行)。
- 示例镜像信息包含 ddb:latest 的大小为 420MB。
步骤 2:使用 docker-compose 创建并启动 controller 与 agent 容器
使用 docker-compose up -d 启动容器,并展示创建网络与容器的输出。
- 启动容器命令示例为 docker-compose up -d(在指定目录执行)。
- 默认启动脚本会自动启动 controller 与 agent 节点。
- 示例输出包含创建的网络名称 20190121-dolphindb-docker-compose_dbnet(bridge)。
- 示例输出包含容器名称 ddbcontroller、ddbagent1、ddbagent2、ddbagent3。
步骤 3:查看集群与 Web 管理界面
完成创建与初始化后可访问本地 8888 端口的集群管理 Web 页面并启动数据节点;本节还包含截图与说明块。
- 创建结果包含 1 个 controller 容器与 3 个 agent 容器。
- 集群管理 Web 页面访问地址为 http://localhost:8888/。
- 可在管理界面全选并启动数据节点。
- 说明块提到左侧列表显示三个代理节点已连接(低置信度)。
- 说明块提到表格包含一个控制器节点与五个数据节点(低置信度)。
- 说明块提到节点状态为绿色勾选标记表示正常运行(低置信度)。
步骤 4:自定义 docker 集群(端口/IP 与集群配置文件)
通过修改 docker-compose.yml 与 ./cfg 目录下配置文件来自定义网络与集群参数,并提供文件清单与帮助文档链接。
- 自定义 docker 网络端口与 IP 需要修改 docker-compose.yml。
- 自定义 DolphinDB 集群配置需要修改 ./cfg/ 下各配置文件。
- 提供集群配置帮助文档链接(ClusterSetup)。
- cluster.nodes 用于配置所有代理节点和数据节点的位置。
- controller.cfg、cluster.cfg 与 agent*.cfg 分别用于对应节点的配置参数。
步骤 5:如何升级版本
给出升级流程:下载新包、删除 license、复制覆盖容器目录并重启容器。
- 下载最新 server 安装包并解压。
- 删除 server 目录下的 dolphindb.lic 文件。
- 使用 docker cp 覆盖每个容器的 /data/ddb/server 目录。
- 重启 docker 容器以完成升级。
步骤 6:常见问题(tzdata、机器指纹)
列出 tzdata 缺失导致的启动错误及解决方法,以及 docker 中机器指纹获取失败导致的 license 校验问题与解决方法。
- 某些镜像(如 ubuntu:latest)可能不包含 tzdata,导致启动报错。
- tzdata 缺失的解决方法为 apt-get install tzdata。
- 正式 license 需要校验服务器硬件信息,docker 中可能无权限获取。
- 报错日志示例包含 “Failed to retrieve machine fingerprint”。
- 解决方法示例为映射宿主机 /etc/ 到容器 /dolphindb/etc(-v /etc:/dolphindb/etc)。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 技能认证特训营第二期 | 报名链接 | https://www.qingsuyun.com/h5/e/217471/5/ | high |
| 基于Docker的集群部署教程 | 发布日期 | 2021-05-14 | high |
| 基于Docker的集群部署教程 | 作者署名 | liang.lin | high |
| Docker | 定义/描述 | Docker 是一个开源的引擎,可以为应用创建轻量级、可移植、自给自足的容器。 | high |
| DolphinDB database | 提供内容 | 提供基于 docker 的分布式集群部署包,便于部署 DolphinDB 分布式集群。 | high |
| 本文部署目标 | 容器数量与类型 | 通过 4 个 centos 容器搭建集群。 | high |
| 本文部署目标 | 节点规模与拓扑 | 5 节点多机集群:agent1 上 2 个 datanodes;controller;agent2 上 2 个 datanodes;agent3 上 1 个 datanode。 | high |
| 免费社区版 license | 节点支持限制 | 无法支持 5 个数据节点和 1 个控制器节点。 | high |
| 企业版 license | 节点支持要求 | 需申请支持 6 个以上节点的企业版 license。 | high |
| 企业版 license 文件 dolphindb.lic | 放置路径要求 | 放到 ./cfg 文件目录下。 | high |
| 分布式集群部署配置 | 需要配置的节点类型 | 需要分别配置 controller、agent、datanode 的网络 IP 和端口。 | high |
| 本文部署包 | 网络配置方式 | 通过 docker 容器间构建虚拟子网,为 4 个容器分别指定从 10.5.0.2 到 10.5.0.5 的固定 IP。 | high |
| 本文部署包 | 配置文件预置 | 包含 IP/端口信息的配置文件已内置到部署包中,用户无需手工逐一配置。 | medium |
| controller.cfg | 示例配置项 | localSite=10.5.0.5:8888:master | high |
| agent1.cfg | 示例配置项 | mode=agent;localSite=10.5.0.2:8710:P1-agent,agent;controllerSite=10.5.0.5:8888:master | high |
| cluster.nodes | 节点清单示例(localSite,mode) | 10.5.0.2:8710:P1-agent,agent;10.5.0.2:8711:P1-node1,datanode;10.5.0.2:8712:P1-node2,datanode;10.5.0.3:8810:P2-agent,agent;10.5.0.3:8811:P2-node1,datanode;10.5.0.3:8812:P2-node2,datanode;10.5.0.4:8910:P3-agent,agent;10.5.0.4:8911:P3-node1,datanode | high |
| Docker 虚拟网络环境 | UDP 工作情况 | UDP 协议无法正常工作。 | high |
| agent.cfg 与 cluster.cfg | 必须添加的配置项 | 需要加上 lanCluster=0。 | high |
| 本文部署包配置文件 | lanCluster=0 默认状态 | 已默认添加 lanCluster=0。 | high |
| 部署前置环境 | 需要安装的软件 | 需要先搭建 docker 环境并安装 docker-compose。 | high |
| Docker 安装教程 | 参考链接 | https://docs.docker.com/install/ | high |
| docker-compose 安装教程 | 参考链接 | https://docs.docker.com/compose/install/#install-compose | high |
| Docker 版本查询 | 命令 | docker -v | high |
| docker-compose 版本查询 | 命令 | docker-compose --version | high |
| DolphinDB docker 集群部署包 | 下载链接(文中给出的链接) | https://gitee.com/dolphindb/Tutorials_CN/blob/master/docker/DolphinDB-Docker-Compose.zip | high |
| Dockerbuild/DockerFile | 可修改参数 | 解压后可修改 dolphindb_version 参数以在 build 时更新到指定的 DolphinDB server 版本。 | high |
| Release Notes | 查询链接(文中给出的链接) | https://github.com/dolphindb/release | high |
| DockerFile 示例 | dolphindb_version 示例值 | ARG dolphindb_version = "DolphinDB_Linux64_V1.00.10.zip" | high |
| 构建镜像 | 命令(路径与标签) | cd ./DolphinDB-Docker-Compose/Dockerbuild 然后 docker build -t ddb:latest ./ | high |
| docker images 示例输出 | 镜像大小 | 420MB(示例中 ddb:latest) | medium |
| docker images 示例输出 | IMAGE ID | 4268ac618977(示例中 ddb:latest) | medium |
| docker images 示例输出 | CREATED | 5 seconds ago(示例中 ddb:latest) | medium |
| 启动容器 | 命令 | cd ./DolphinDB-Docker-Compose 然后 docker-compose up -d | high |
| 容器默认启动脚本 | 自动启动的节点 | 会自动启动控制器节点(controller)和代理节点(agent)。 | medium |
| docker-compose up -d 示例输出 | 创建的网络名称 | 20190121-dolphindb-docker-compose_dbnet(bridge) | medium |
| docker-compose up -d 示例输出 | 创建的容器名称 | ddbcontroller、ddbagent2、ddbagent3、ddbagent1 | medium |
| 集群创建结果 | 包含的容器类型与数量 | 包含 1 个 controller 容器和 3 个 agent 容器。 | high |
| 集群管理 Web 页面 | 访问地址 | http://localhost:8888/ | high |
| 集群管理界面操作 | 对数据节点的操作 | 在界面全选并启动数据节点。 | high |
| 截图说明(AI 说明块) | 界面左侧列表显示的代理节点 | 三个代理节点(P1-agent、P2-agent、P3-agent)已正常连接。 | low |
| 截图说明(AI 说明块) | 界面右侧主表格包含的节点 | 包含一个控制器节点(master)和五个数据节点(如 P1-node1、P2-node1 等)。 | low |
| 截图说明(AI 说明块) | 节点状态 | 所有节点 State 栏为绿色勾选标记,表示集群正常运行。 | low |
| 自定义 docker 网络端口及 IP 配置 | 需修改文件 | docker-compose.yml | high |
| 自定义 DolphinDB 集群配置 | 需修改目录 | ./cfg/ 目录下各配置文件 | high |
| 集群配置帮助文档 | 参考链接 | https://www.dolphindb.cn/cn/help/index.html?ClusterSetup.html | high |
| controller.cfg | 用途 | 集群控制器的配置参数 | high |
| cluster.nodes | 用途 | 配置所有代理节点和数据节点的位置 | high |
| cluster.cfg | 用途 | 集群数据节点的配置参数 | high |
| agent1.cfg | 用途 | 代理节点1配置参数 | high |
| agent2.cfg | 用途 | 代理节点2配置参数 | high |
| agent3.cfg | 用途 | 代理节点3配置参数 | high |
| 新增容器及配置对应节点 | 需要修改内容 | 需要修改如下几处(原文未展开具体项)。 | low |
| 升级版本 | 步骤 | 下载最新 server 安装包并解压后,删除 server 目录下 dolphindb.lic 文件。 | high |
| 升级版本 | 步骤 | 使用 docker cp 拷贝 server 目录覆盖每个容器的 /data/ddb/server 目录。 | high |
| 升级版本 | 步骤 | 重启 docker 容器。 | high |
| 某些 docker 镜像(例如 ubuntu:latest) | 问题 | 不包含 tzdata 包,导致 dolphindb 启动报错:Can't find time zone database. Please use parameter tzdb to set the root directory of time zone database. | high |
| tzdata 缺失问题 | 解决方法 | 安装 tzdata:apt-get install tzdata | high |
| docker 中 license 校验(机器指纹) | 问题原因 | 正式 license 需要校验服务器硬件信息,而 docker 中没有权限获取此信息。 | high |
| docker 中机器指纹获取 | 报错日志 | <ERROR> : Failed to retrieve machine fingerprint | high |
| 机器指纹问题 | 解决方法 | 映射宿主机 /etc/ 到容器 /dolphindb/etc(docker run 添加参数:-v /etc:/dolphindb/etc)。 | high |