基于 Rainbond 云原生应用管理平台一键部署 DolphinScheduler 高可用集群
【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler
本文是一份基于 Rainbond 云原生应用管理平台一键部署 Apache DolphinScheduler 高可用集群的实战指南。文中以 Rainbond 部署指南 为主线,完整覆盖了从应用商店检索、安装参数填写、集群拓扑确认,到 API/Master/Worker 多实例伸缩、共享配置管理和 Python/Hadoop/Spark/DataX 等运行时能力扩展的完整链路。读完本文,你将掌握一条无需直接接触 Kubernetes 底层细节、即可在几分钟内获得一套生产可用 DolphinScheduler 高可用集群的部署路径,并能结合仓库源码理解其存储、配置与环境变量机制。
为什么选择 Rainbond 部署 DolphinScheduler
DolphinScheduler 在生产环境中通常由 API Server、Master Server、Worker Server、Alert Server 四个角色组成,原生 Kubernetes 部署方式(参见 Kubernetes 部署指南)要求使用者熟悉 Helm Chart、StatefulSet、ConfigMap 等一批概念,对不太了解 Kubernetes 和容器化技术的用户存在明显门槛。
Rainbond 是一款云原生应用管理平台,它将 K8s 上的"应用"抽象为可视化的组件与拓扑关系,支持通过开源应用商店以点选方式安装完整应用。DolphinScheduler 官方已将应用发布到 Rainbond 开源应用商店,用户只需三步——搜索、填表、等待——即可完成部署,安装完成后还能在拓扑视图中直接对 API、Master、Worker 组件进行伸缩与配置管理。这正是本文所选方案的适用场景:面向不熟悉容器底层技术、但需要快速获得高可用编排平台的中小团队与个人用户。
前提条件
开始部署前,需要准备一个可用的 Rainbond 云原生应用管理平台。若尚未安装,请先参照 Rainbond 官方"快速安装"文档完成平台的初始化(一般需要一台可访问的 Linux 服务器,并确保 80/443 等端口可被外部访问)。平台就绪后,即可进入下述一键部署流程。
DolphinScheduler 集群一键部署
整个安装过程在 Rainbond 控制台中完成,无需编写任何 YAML 或 Helm 命令,具体步骤如下。
1. 在开源应用商店中搜索应用
进入 Rainbond 的平台管理 -> 应用市场 -> 开源应用商店,在搜索框中输入dolphinscheduler,即可找到 DolphinScheduler 应用条目。
2. 填写安装信息
点击应用右侧的安装按钮,进入应用安装页面。需要填写的关键信息如下:
| 选择项 | 说明 |
|---|---|
| 团队名称 | 用户自建的工作空间,以命名空间隔离 |
| 集群名称 | 选择 DolphinScheduler 被部署到哪一个 K8s 集群 |
| 选择应用 | 选择 DolphinScheduler 被部署到哪一个应用,应用中包含有若干有关联的组件 |
| 应用版本 | 选择 DolphinScheduler 的版本 |
其中"选择应用"即 Rainbond 的应用聚合概念,DolphinScheduler 的 API、Master、Worker、Alert 等组件会被集中纳入所选应用名下,便于统一查看拓扑与日志。确认无误后点击确定,平台会自动跳转至应用视图并开始安装。
3. 等待安装完成
安装过程需要拉取镜像、初始化元数据库、创建服务组件,一般等待几分钟后即可完成。安装完成后,应用视图中可以看到由 API、Master、Worker、Alert 等组件组成的完整拓扑关系图,各组件之间的依赖关系一目了然。
说明:应用商店中发布的镜像与仓库 dolphinscheduler-dist 的 Dockerfile 保持一致,各组件容器统一以
/opt/dolphinscheduler为安装目录,并通过start.sh脚本启动服务。
4. 通过默认域名访问
点击应用内 DolphinScheduler-API 组件的访问按钮,即可通过 Rainbond 默认分配的域名访问 DolphinScheduler Web 控制台。默认登录账号为:
- 用户名:
admin - 密码:
dolphinscheduler123
安全提示:首次登录后请务必在"安全中心"中修改默认管理员密码。默认账号信息仅用于初始体验,生产环境应通过 安全认证配置(PASSWORD/LDAP/Casdoor 等)接入企业账号体系。
API / Master / Worker 节点伸缩:让集群真正"高可用"
DolphinScheduler 的 API、Master、Worker 三个角色都支持多实例部署,多个实例通过注册中心(默认 Zookeeper)协调,实现调度与执行的故障转移,从而保证整个集群的高可用性。在 Rainbond 中,伸缩操作被简化为"设置副本数"。
以 Worker 为例,进入 Worker 组件内部 ->伸缩页面,设置实例数量为大于 1 的值(例如 3),平台会自动完成副本的调度与负载均衡。
验证伸缩是否生效:进入 DolphinScheduler UI ->监控中心 -> Worker页面,即可看到所有已注册的 Worker 节点及其心跳状态、负载信息。
从源码角度看,这种高可用能力建立在注册中心机制之上。各服务通过 Zookeeper 等注册中心完成节点注册、心跳上报与故障发现(参见 注册中心相关配置 中的registry.zookeeper.*参数族),Master 节点会根据 Worker 的动态负载(CPU/内存/线程池使用率,见master.worker-load-balancer-configuration-properties.type=DYNAMIC_WEIGHTED_ROUND_ROBIN)将任务分发到负载最低的 Worker。因此,当某个 Master 或 Worker 实例宕机时,其余实例会自动接管其任务,这正是"多副本 = 高可用"的底层逻辑。
配置管理:理解共享的 common.properties
Rainbond 部署的应用内组件共享同一个持久化数据卷。具体到 DolphinScheduler:
- API 和 Worker 服务共用
/opt/dolphinscheduler/conf/common.properties,修改配置时只需修改 API 服务的配置文件即可,修改后更新组件即可让 Worker 同步生效。 - 仓库 docker-compose.yml 中同样体现了这一共享思想:API、Master、Worker 组件都挂载了
dolphinscheduler-shared-local:/opt/soft(共享软件目录,如 DataX 等)与dolphinscheduler-resource-local:/dolphinscheduler(资源中心本地存储),Worker 还额外挂载了dolphinscheduler-worker-data:/tmp/dolphinscheduler(任务执行临时目录)。
common.properties是 DolphinScheduler 的公共服务配置(存储、Hadoop/Yarn 等),各角色的默认位置与完整参数说明见 配置文件详解。以下是 Rainbond 场景下最常涉及的几个关键参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
data.basedir.path | /tmp/dolphinscheduler | 本地工作目录,用于存放临时文件 |
resource.storage.type | NONE | 资源文件存储类型:HDFS、S3、OSS、GCS、ABS、NONE |
resource.upload.path | /dolphinscheduler | 资源文件存储路径 |
hdfs.root.user | hdfs | 存储类型为 HDFS 时,需配置拥有对应操作权限的用户 |
fs.defaultFS | hdfs://mycluster:8020 | HDFS 请求地址;若为 S3,形如s3a://dolphinscheduler |
support.hive.oneSession | false | 设置 Hive SQL 是否在同一个 session 中执行 |
sudo.enable | true | 是否开启 sudo |
其中resource.storage.type的底层读取逻辑可在 Constants.java 中看到(RESOURCE_STORAGE_TYPE = "resource.storage.type"),各存储类型的完整对接方式(本地文件系统、AWS S3、阿里云 OSS、华为云 OBS、腾讯云 COS)可参考 资源中心配置详情。例如对接 S3 时需在 API 与 Worker 两侧的common.properties中同时配置,否则"上传可用但工作流无法执行"。
如何支持 Python 3?
Worker 服务默认已在镜像中安装了 Python3,因此开箱即用。使用时只需为 Worker 组件添加环境变量:
PYTHON_LAUNCHER=/usr/bin/python3该环境变量的作用机制在源码中清晰可见:Python 任务类型在执行时会优先使用PYTHON_LAUNCHER指定的解释器。见 PythonTask.java 的buildPythonExecuteCommand方法——它通过${PYTHON_LAUNCHER}占位符拼接出实际的 Python 执行命令;同理,DataX 任务也是通过"${PYTHON_LAUNCHER} ${DATAX_LAUNCHER} ..."组合出提交命令(见 DataxTask.java)。
这与你用bin/env/dolphinscheduler_env.sh设置export PYTHON_LAUNCHER=${PYTHON_LAUNCHER:-/opt/soft/python}(见 环境变量配置)的效果一致——在 Rainbond 中只是把"改脚本"换成了"加环境变量",更直观也更容易回滚。
如何支持 Hadoop、Spark、DataX 等?
这些外部计算引擎并不内置于 DolphinScheduler 镜像,需要在 Worker 上提前准备运行环境。以 DataX 为例,推荐使用 Rainbond 的通用数据初始化插件在 Worker 组件初始化时自动下载并解压:
- 安装插件:Rainbond 团队视图 -> 插件 -> 从应用商店安装插件 -> 搜索
通用数据初始化插件并安装。 - 开通插件:进入 Worker 组件内 -> 插件 -> 开通
通用数据初始化插件,并修改配置:FILE_URL:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gzFILE_PATH:/opt/softLOCK_PATH:/opt/soft
- 更新组件:初始化插件会自动下载 DataX 并解压到
/opt/soft目录。
之所以解压到/opt/soft,正是因为它对应上文提到的共享数据卷dolphinscheduler-shared-local:/opt/soft——该目录会被 API、Master、Worker 组件共同挂载。与此同时,还需要为 Worker 配置相应的环境变量或修改dolphinscheduler_env.sh(如export DATAX_LAUNCHER=/opt/soft/datax/bin/datax.py、export HADOOP_HOME=...、export SPARK_HOME=...等),使PATH中包含各引擎的可执行文件。Hadoop、Spark、Flink、Hive 等引擎的初始化方式与 DataX 完全一致:下载引擎包到/opt/soft并配置对应环境变量即可。
总结
通过 Rainbond 开源应用商店部署 DolphinScheduler,将原本需要熟悉 Helm、K8s 概念的专业操作压缩为"搜索 -> 安装 -> 伸缩"三个可视化动作,大幅降低了容器化部署门槛;而 API/Master/Worker 的多副本伸缩与 Rainbond 应用级共享存储,又保证了集群的高可用性与配置一致性。理解common.properties、PYTHON_LAUNCHER环境变量与/opt/soft共享目录三者的关系,就能在 Rainbond 上把 Python、Hadoop、Spark、DataX 等运行时能力顺畅地接入 DolphinScheduler,构建出真正贴近生产环境的低代码数据编排平台。
【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考