Docker单机部署DolphinScheduler与MongoDB:完整指南与最佳实践
2025.09.12 11:09浏览量:0简介:本文详细介绍如何在单机Docker环境中部署DolphinScheduler工作流引擎与MongoDB数据库,涵盖环境准备、镜像选择、配置优化及故障排查等全流程,提供可复制的部署方案与性能调优建议。
一、环境准备与前置条件
1.1 硬件资源要求
单机部署DolphinScheduler与MongoDB时,建议配置不低于4核CPU、8GB内存的物理机或虚拟机。存储空间需预留20GB以上用于数据库文件与日志存储,SSD硬盘可显著提升MongoDB写入性能。Docker运行时需分配至少3GB内存,避免因资源竞争导致容器OOM。
1.2 软件依赖检查
确保主机已安装Docker Engine(版本≥20.10)与Docker Compose(版本≥1.29)。通过docker --version
与docker-compose --version
验证安装。若使用Linux系统,需配置内核参数vm.max_map_count=262144
以支持Elasticsearch(若DolphinScheduler集成ES)。
1.3 网络配置要点
Docker默认使用bridge网络模式,需确保主机防火墙开放以下端口:
- MongoDB:27017(主端口)
- DolphinScheduler API:12345
- DolphinScheduler Master:25333
- DolphinScheduler Worker:25334
建议通过docker network create dolphin-net
创建自定义网络,实现容器间DNS解析与隔离通信。
二、MongoDB单机部署方案
2.1 官方镜像选择
推荐使用MongoDB官方镜像mongo:6.0
,该版本提供稳定的事务支持与WiredTiger存储引擎。通过以下命令快速启动:
docker run -d --name mongodb \
-p 27017:27017 \
-v /data/mongo:/data/db \
--restart unless-stopped \
mongo:6.0 --auth
参数说明:
-v
挂载数据卷实现持久化--auth
启用身份验证(生产环境必需)--restart
策略确保容器异常退出后自动重启
2.2 安全配置实践
进入容器创建管理员账户:
docker exec -it mongodb mongosh
use admin
db.createUser({
user: "admin",
pwd: "SecurePassword123!",
roles: ["root"]
})
修改DolphinScheduler连接配置时,需在application.yaml
中指定认证信息:
spring:
datasource:
url: jdbc:mongodb://mongodb:27017/ds_meta?authSource=admin
username: admin
password: SecurePassword123!
2.3 性能调优建议
针对工作流引擎场景,优化MongoDB配置:
- 修改
/etc/mongod.conf
设置wiredTiger.engineConfig.cacheSizeGB=2
(占总内存25%) - 创建索引加速查询:
use ds_meta
db.process_definition.createIndex({code: 1}, {unique: true})
db.task_instance.createIndex({state: 1, start_time: -1})
三、DolphinScheduler单机部署流程
3.1 镜像版本选择
推荐使用apache/dolphinscheduler:3.1.7
稳定版本,该版本修复了任务依赖解析的并发问题。通过Docker Compose部署可简化网络配置:
version: '3.8'
services:
dolphinscheduler:
image: apache/dolphinscheduler:3.1.7
environment:
DATABASE_HOST: mongodb
DATABASE_PORT: 27017
DS_AUTH_USERNAME: admin
DS_AUTH_PASSWORD: SecurePassword123!
ports:
- "12345:12345"
- "25333:25333"
- "25334:25334"
depends_on:
- mongodb
3.2 核心组件配置
修改dolphinscheduler-env.sh
设置JVM参数:
export JAVA_OPT="-Xms1024m -Xmx2048m -XX:+UseG1GC"
针对MongoDB适配器,需在common.properties
中配置:
spring.data.mongodb.uri=mongodb://admin:SecurePassword123!@mongodb:27017/ds_meta
3.3 初始化数据库
首次启动需执行初始化脚本:
docker exec -it dolphinscheduler /opt/dolphinscheduler/bin/dolphinscheduler-daemon.sh start init-database
验证初始化结果:
docker exec -it mongodb mongosh ds_meta --eval "db.getCollectionNames()"
应返回["process_definition", "task_instance", "schedule"]
等集合。
四、集成部署优化
4.1 容器资源限制
通过--cpus
与--memory
参数限制资源使用:
docker run -d --name dolphinscheduler \
--cpus=2.5 \
--memory=3g \
--memory-swap=4g \
apache/dolphinscheduler:3.1.7
4.2 日志管理方案
配置logback-spring.xml
实现日志滚动:
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/opt/dolphinscheduler/logs/dolphinscheduler.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
4.3 监控告警集成
通过Prometheus采集Docker指标:
# docker-compose.yml片段
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
配置Grafana监控面板,重点关注:
- MongoDB连接数(
mongostat -n 1
) - DolphinScheduler任务队列积压量
- 容器CPU使用率(
docker stats
)
五、故障排查指南
5.1 常见连接问题
现象:DolphinScheduler日志报错Connection refused to mongodb:27017
解决方案:
- 检查Docker网络:
docker network inspect dolphin-net
- 验证MongoDB容器状态:
docker ps -a | grep mongodb
- 测试容器内连通性:
docker exec -it dolphinscheduler ping mongodb
5.2 性能瓶颈分析
使用docker stats
监控资源使用,当Worker容器CPU持续>80%时:
- 调整Worker并发数:修改
worker.properties
中的worker.exec.threads=100
- 优化MongoDB查询:通过
mongotop
分析慢查询 - 升级硬件配置或拆分服务到多节点
5.3 数据备份方案
实施MongoDB定期备份:
docker exec mongodb mongodump --out /backup/$(date +%Y%m%d) \
--uri "mongodb://admin:SecurePassword123!@localhost:27017"
配置Cron任务每日凌晨执行,备份文件通过-v /backup:/backup
挂载到宿主机。
六、进阶部署建议
6.1 多版本共存方案
通过不同网络命名空间实现:
docker network create dolphin-v3
docker network create dolphin-v2
# 启动v3版本
docker run -d --name ds-v3 --network dolphin-v3 ...
# 启动v2版本
docker run -d --name ds-v2 --network dolphin-v2 ...
6.2 灰度发布策略
- 在测试环境部署新版本容器
- 通过Nginx反向代理分流50%流量:
upstream dolphinscheduler {
server ds-v2:12345 weight=50;
server ds-v3:12345 weight=50;
}
- 监控错误率,逐步调整权重至100%
6.3 混合架构设计
对于高并发场景,建议:
- MongoDB部署为副本集(1主2从)
- DolphinScheduler拆分为独立Master/Worker节点
- 引入Redis作为分布式锁服务
通过以上方案,可在单机环境实现DolphinScheduler与MongoDB的高效稳定运行,为后续集群扩展奠定基础。实际部署时需根据具体业务场景调整参数配置,并建立完善的监控告警体系。
发表评论
登录后可评论,请前往 登录 或 注册