logo

Docker环境下DolphinScheduler与MongoDB单机部署全攻略

作者:菠萝爱吃肉2025.09.17 11:04浏览量:0

简介:本文详细介绍在Docker单机环境下,如何通过容器化技术部署DolphinScheduler工作流引擎与MongoDB数据库,覆盖从环境准备到配置优化的全流程。

一、环境准备与Docker基础配置

1.1 硬件资源评估与Docker安装

在单机部署场景下,需根据业务规模评估资源需求。DolphinScheduler建议配置为4核8GB内存,MongoDB建议2核4GB内存,实际部署时可动态分配资源。Docker安装需选择稳定版本(如24.0.7),通过官方脚本或包管理器完成安装,验证安装后运行docker version确认服务状态。

1.2 网络模式选择与存储规划

Docker网络配置推荐使用bridge模式,通过docker network create ds-mongo-net创建专用网络,确保容器间通信效率。存储方面,MongoDB需配置持久化卷,DolphinScheduler则需挂载配置目录与日志目录。示例命令:

  1. docker volume create mongo-data
  2. docker volume create ds-config

二、MongoDB单机容器化部署

2.1 镜像选择与参数配置

选用官方MongoDB镜像(mongo:6.0),启动时需配置认证参数与数据目录挂载:

  1. docker run -d --name mongo-ds \
  2. --network ds-mongo-net \
  3. -v mongo-data:/data/db \
  4. -e MONGO_INITDB_ROOT_USERNAME=admin \
  5. -e MONGO_INITDB_ROOT_PASSWORD=your_password \
  6. mongo:6.0 --auth

关键参数说明:

  • --auth:启用认证模式
  • -v:挂载数据卷实现持久化
  • 环境变量:设置管理员账号密码

2.2 数据库初始化与连接测试

进入容器创建专用数据库:

  1. docker exec -it mongo-ds mongosh -u admin -p your_password
  2. use dolphinscheduler;
  3. db.createUser({user:"ds_user",pwd:"ds_pass",roles:[{role:"readWrite",db:"dolphinscheduler"}]});

验证连接:

  1. mongosh "mongodb://ds_user:ds_pass@localhost:27017/dolphinscheduler"

三、DolphinScheduler容器化部署

3.1 镜像获取与配置文件准备

从Apache官方仓库获取镜像(apache/dolphinscheduler:3.1.7),需准备以下配置文件:

  • application.yml:修改数据库连接为mongodb://ds_user:ds_pass@mongo-ds:27017/dolphinscheduler
  • common.properties:配置master/worker节点内存参数
  • quartz.properties:调整定时任务线程数

3.2 多容器编排部署

采用docker-compose实现服务编排,核心配置示例:

  1. version: '3.8'
  2. services:
  3. dolphin-master:
  4. image: apache/dolphinscheduler:3.1.7
  5. environment:
  6. - DATABASE_TYPE=mongodb
  7. - SPRING_DATASOURCE_URL=mongodb://ds_user:ds_pass@mongo-ds:27017/dolphinscheduler
  8. volumes:
  9. - ds-config:/opt/dolphinscheduler/conf
  10. depends_on:
  11. - mongo-ds
  12. dolphin-worker:
  13. image: apache/dolphinscheduler:3.1.7
  14. environment:
  15. - WORKER_EXEC_THREADS=100
  16. - WORKER_MEM_USAGE_CHECK_INTERVAL=60
  17. volumes:
  18. - ds-logs:/opt/dolphinscheduler/logs
  19. volumes:
  20. ds-config:
  21. ds-logs:

四、系统调优与故障排查

4.1 性能优化策略

  • MongoDB调优:设置wiredTigerCacheSizeGB参数控制缓存大小
  • DolphinScheduler调优:调整worker.prefetch.queue.size参数优化任务队列
  • 资源限制:通过--cpus--memory参数控制容器资源使用

4.2 常见问题解决方案

  1. 连接超时:检查网络配置与防火墙规则,确保27017端口开放
  2. 认证失败:验证MongoDB用户权限,确认密码无特殊字符转义问题
  3. 任务堆积:增加worker节点数量或调整线程池配置
  4. 日志缺失:检查卷挂载路径权限,确保容器有写入权限

五、运维监控体系构建

5.1 监控指标收集

  • MongoDB监控:使用mongostatmongotop工具
  • DolphinScheduler监控:通过Prometheus收集JMX指标
  • 容器监控:配置cAdvisor收集资源使用数据

5.2 备份恢复方案

MongoDB备份:

  1. docker exec mongo-ds mongodump --out /backup/ --db dolphinscheduler

DolphinScheduler配置备份:

  1. docker cp dolphin-master:/opt/dolphinscheduler/conf ./backup/

六、扩展性考虑

6.1 水平扩展方案

  • MongoDB分片集群:通过mongos路由节点实现水平扩展
  • DolphinScheduler集群:增加worker节点并配置负载均衡

6.2 混合部署建议

对于资源有限的单机环境,可采用时序复用策略:

  • 非高峰期运行数据分析任务
  • 高峰期优先保障实时工作流
  • 通过docker update动态调整资源限制

本方案通过容器化技术实现了DolphinScheduler与MongoDB的高效部署,在保证系统稳定性的同时,提供了灵活的扩展能力。实际部署时需根据具体业务场景调整参数配置,建议通过CI/CD管道实现自动化部署,进一步提升运维效率。对于生产环境,建议增加高可用配置,如MongoDB副本集和DolphinScheduler多主节点部署。

相关文章推荐

发表评论