从零构建高可用DolphinScheduler集群2 Master 3 Worker实战指南在数据驱动决策的时代任务调度系统已成为企业数据流水线的核心枢纽。Apache DolphinScheduler作为开源的分布式可视化工作流调度平台凭借其易用性和稳定性正在取代传统调度工具成为技术团队的新宠。本文将带您从零开始在真实服务器环境中部署一套具备生产级可靠性的DolphinScheduler 3.2.0集群采用2个Master节点和3个Worker节点的高可用架构。1. 环境规划与系统准备1.1 硬件资源配置建议对于中小规模生产环境推荐以下服务器配置方案节点类型CPU核心数内存磁盘空间网络带宽数量Master节点8核16GB100GB千兆2Worker节点16核32GB500GB千兆3Zookeeper节点4核8GB50GB千兆3注意实际配置应根据任务并发量和数据量调整。Worker节点资源需特别充足因为实际任务执行都发生在此类节点上。1.2 软件环境清单在开始部署前请确保所有节点已安装以下基础组件JDK 1.8推荐OpenJDK 11MySQL 5.7/PostgreSQL 8.2元数据存储Zookeeper 3.8集群服务注册与发现SSH服务节点间通信# 快速验证Java环境 java -version # 检查MySQL连接 mysql -h 192.168.10.102 -u root -p # 测试Zookeeper状态 echo stat | nc 192.168.10.102 21812. 集群架构设计与原理2.1 核心组件拓扑我们的目标架构包含以下服务分布[Master Node A] —— [Zookeeper集群] —— [Master Node B] | | | [Worker 1] [Worker 2] [Worker 3]双Master采用Active-Standby模式通过Zookeeper实现故障自动转移三Worker横向扩展任务执行能力支持200并发任务分离部署AlertServer和ApiServer可独立部署提升稳定性2.2 关键配置文件映射理解这些配置文件的关系对故障排查至关重要install_env.sh —— 部署拓扑定义 ↓ dolphinscheduler_env.sh —— 环境变量配置 ↓ application.yaml —— 运行时参数 ↓ Zookeeper —— 服务注册中心3. 分步部署实战3.1 数据库初始化创建专用数据库用户并设置复杂密码-- 创建数据库用户 CREATE USER dscheduler% IDENTIFIED BY Pssw0rd!DS; -- 创建元数据库 CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 授权 GRANT ALL PRIVILEGES ON dolphinscheduler.* TO dscheduler%; FLUSH PRIVILEGES;将MySQL驱动放置到指定位置# 在所有服务节点的libs目录放置驱动 cp mysql-connector-j-8.3.0.jar \ api-server/libs/ \ alert-server/libs/ \ master-server/libs/ \ worker-server/libs/ \ tools/libs/3.2 关键配置调整install_env.sh 核心参数示例# 集群节点IP列表 ips192.168.10.102,192.168.10.103,192.168.10.104 # Master节点列表 masters192.168.10.102,192.168.10.103 # Worker节点配置 workers192.168.10.102:default,192.168.10.103:default,192.168.10.104:default # 安装路径 installPath/opt/dolphinschedulerdolphinscheduler_env.sh 数据库连接配置export DATABASEmysql export SPRING_DATASOURCE_URLjdbc:mysql://192.168.10.102:3306/dolphinscheduler?useUnicodetruecharacterEncodingUTF-8useSSLfalse export SPRING_DATASOURCE_USERNAMEdscheduler export SPRING_DATASOURCE_PASSWORDPssw0rd!DS3.3 集群启动与验证执行自动化部署脚本./bin/install.sh检查各节点服务状态# 查看Master节点日志 tail -f /opt/dolphinscheduler/master-server/logs/master-server.log # 验证Worker注册情况 curl http://localhost:12345/dolphinscheduler/api/cluster/list4. 高可用性保障措施4.1 Master故障转移测试停止Active Master服务观察Zookeeper选举日志验证Standby Master自动接管# 手动触发故障转移 zkCli.sh create /dolphinscheduler/failover/force 14.2 Worker负载均衡策略通过修改worker.properties实现智能调度# 按CPU负载分配任务 worker.selector.typeLOAD_BASED worker.selector.load.threshold0.74.3 日常维护命令集服务启停# 单个节点操作 ./bin/dolphinscheduler-daemon.sh start master-server # 集群批量操作 pssh -h hosts.txt -i /opt/dolphinscheduler/bin/dolphinscheduler-daemon.sh restart worker-server日志分析技巧# 实时错误监控 multitail -s 2 /opt/dolphinscheduler/*/logs/*.log5. 性能调优实战5.1 Master节点参数优化调整master-server/conf/application.yamlmaster: # 提高任务抓取批量大小 fetch-command-num: 50 # 优化线程池配置 exec-threads: 100 dispatch-threads: 505.2 Worker节点资源控制在worker-server/conf/worker.properties中设置# 限制单个Worker并发任务数 worker.exec.threads50 # 设置任务超时告警 worker.task.warn.timeout30m5.3 数据库连接池优化所有服务的application.yaml中调整hikari: maximum-pool-size: 30 connection-timeout: 30000 idle-timeout: 6000006. 安全加固方案6.1 网络隔离策略使用iptables限制访问端口iptables -A INPUT -p tcp --dport 12345 -s 192.168.10.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 12345 -j DROP6.2 审计日志配置在api-server/conf/application.yaml启用审计security: audit: enabled: true log-dir: /var/log/ds-audit6.3 定期备份方案设置cron任务自动备份元数据0 2 * * * mysqldump -h192.168.10.102 -udscheduler -pPssw0rd!DS \ dolphinscheduler | gzip /backup/ds_meta_$(date \%Y\%m\%d).sql.gz
从零开始:用DolphinScheduler 3.2.0搭建大数据任务调度平台(2 Master + 3 Worker配置)
从零构建高可用DolphinScheduler集群2 Master 3 Worker实战指南在数据驱动决策的时代任务调度系统已成为企业数据流水线的核心枢纽。Apache DolphinScheduler作为开源的分布式可视化工作流调度平台凭借其易用性和稳定性正在取代传统调度工具成为技术团队的新宠。本文将带您从零开始在真实服务器环境中部署一套具备生产级可靠性的DolphinScheduler 3.2.0集群采用2个Master节点和3个Worker节点的高可用架构。1. 环境规划与系统准备1.1 硬件资源配置建议对于中小规模生产环境推荐以下服务器配置方案节点类型CPU核心数内存磁盘空间网络带宽数量Master节点8核16GB100GB千兆2Worker节点16核32GB500GB千兆3Zookeeper节点4核8GB50GB千兆3注意实际配置应根据任务并发量和数据量调整。Worker节点资源需特别充足因为实际任务执行都发生在此类节点上。1.2 软件环境清单在开始部署前请确保所有节点已安装以下基础组件JDK 1.8推荐OpenJDK 11MySQL 5.7/PostgreSQL 8.2元数据存储Zookeeper 3.8集群服务注册与发现SSH服务节点间通信# 快速验证Java环境 java -version # 检查MySQL连接 mysql -h 192.168.10.102 -u root -p # 测试Zookeeper状态 echo stat | nc 192.168.10.102 21812. 集群架构设计与原理2.1 核心组件拓扑我们的目标架构包含以下服务分布[Master Node A] —— [Zookeeper集群] —— [Master Node B] | | | [Worker 1] [Worker 2] [Worker 3]双Master采用Active-Standby模式通过Zookeeper实现故障自动转移三Worker横向扩展任务执行能力支持200并发任务分离部署AlertServer和ApiServer可独立部署提升稳定性2.2 关键配置文件映射理解这些配置文件的关系对故障排查至关重要install_env.sh —— 部署拓扑定义 ↓ dolphinscheduler_env.sh —— 环境变量配置 ↓ application.yaml —— 运行时参数 ↓ Zookeeper —— 服务注册中心3. 分步部署实战3.1 数据库初始化创建专用数据库用户并设置复杂密码-- 创建数据库用户 CREATE USER dscheduler% IDENTIFIED BY Pssw0rd!DS; -- 创建元数据库 CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 授权 GRANT ALL PRIVILEGES ON dolphinscheduler.* TO dscheduler%; FLUSH PRIVILEGES;将MySQL驱动放置到指定位置# 在所有服务节点的libs目录放置驱动 cp mysql-connector-j-8.3.0.jar \ api-server/libs/ \ alert-server/libs/ \ master-server/libs/ \ worker-server/libs/ \ tools/libs/3.2 关键配置调整install_env.sh 核心参数示例# 集群节点IP列表 ips192.168.10.102,192.168.10.103,192.168.10.104 # Master节点列表 masters192.168.10.102,192.168.10.103 # Worker节点配置 workers192.168.10.102:default,192.168.10.103:default,192.168.10.104:default # 安装路径 installPath/opt/dolphinschedulerdolphinscheduler_env.sh 数据库连接配置export DATABASEmysql export SPRING_DATASOURCE_URLjdbc:mysql://192.168.10.102:3306/dolphinscheduler?useUnicodetruecharacterEncodingUTF-8useSSLfalse export SPRING_DATASOURCE_USERNAMEdscheduler export SPRING_DATASOURCE_PASSWORDPssw0rd!DS3.3 集群启动与验证执行自动化部署脚本./bin/install.sh检查各节点服务状态# 查看Master节点日志 tail -f /opt/dolphinscheduler/master-server/logs/master-server.log # 验证Worker注册情况 curl http://localhost:12345/dolphinscheduler/api/cluster/list4. 高可用性保障措施4.1 Master故障转移测试停止Active Master服务观察Zookeeper选举日志验证Standby Master自动接管# 手动触发故障转移 zkCli.sh create /dolphinscheduler/failover/force 14.2 Worker负载均衡策略通过修改worker.properties实现智能调度# 按CPU负载分配任务 worker.selector.typeLOAD_BASED worker.selector.load.threshold0.74.3 日常维护命令集服务启停# 单个节点操作 ./bin/dolphinscheduler-daemon.sh start master-server # 集群批量操作 pssh -h hosts.txt -i /opt/dolphinscheduler/bin/dolphinscheduler-daemon.sh restart worker-server日志分析技巧# 实时错误监控 multitail -s 2 /opt/dolphinscheduler/*/logs/*.log5. 性能调优实战5.1 Master节点参数优化调整master-server/conf/application.yamlmaster: # 提高任务抓取批量大小 fetch-command-num: 50 # 优化线程池配置 exec-threads: 100 dispatch-threads: 505.2 Worker节点资源控制在worker-server/conf/worker.properties中设置# 限制单个Worker并发任务数 worker.exec.threads50 # 设置任务超时告警 worker.task.warn.timeout30m5.3 数据库连接池优化所有服务的application.yaml中调整hikari: maximum-pool-size: 30 connection-timeout: 30000 idle-timeout: 6000006. 安全加固方案6.1 网络隔离策略使用iptables限制访问端口iptables -A INPUT -p tcp --dport 12345 -s 192.168.10.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 12345 -j DROP6.2 审计日志配置在api-server/conf/application.yaml启用审计security: audit: enabled: true log-dir: /var/log/ds-audit6.3 定期备份方案设置cron任务自动备份元数据0 2 * * * mysqldump -h192.168.10.102 -udscheduler -pPssw0rd!DS \ dolphinscheduler | gzip /backup/ds_meta_$(date \%Y\%m\%d).sql.gz