Linux环境下部署DolphinScheduler 分布式工作流调度平台

Linux环境下部署DolphinScheduler 分布式工作流调度平台

系统教程

DolphinScheduler分布式部署核心难点在于角色协同与状态一致性:ZooKeeper集群未真正运行会导致Master选主失败;Worker注册失败主因是masters配置错误或监听地址为127.0.0.1;MySQL 8.0+需适配tx_isolation参数及驱动版本;所有节点须统一IP或hosts解析,且务必验证进程存活与日志输出。

DolphinScheduler 分布式部署在 Linux 上,核心难点不在安装步骤本身,而在角色协同与状态一致性——Master 选主失败、Worker 注册不上、ZooKeeper 连接闪断这三类问题占了实际排障的 80% 以上。

Master 启动后不选举 Leader,zkServer.sh status 显示 Mode: standalone

这不是 DolphinScheduler 的问题,而是 ZooKeeper 集群没真正跑起来。哪怕你写了三个节点地址,只要其中任意一个连不通或端口被占,ZooKeeper 就会退化为单机模式,导致 DolphinScheduler 的 Master 节点无法完成分布式协调。

  • 先确认所有 ZooKeeper 节点都运行着:ps -ef | grep zookeeper,不能只看 zkServer.sh status
  • 检查每个节点的 conf/zoo.cfg:必须有且仅有奇数个 server.x=ip:port1:port2 条目,且 myid 文件内容(在 dataDir 下)要和 server.x 中的 x 严格一致
  • telnet zk-node1 2181 逐台测试连通性,防火墙常会放行 22/80 却拦掉 2181
  • 如果用了 Docker 部署 ZooKeeper,注意宿主机时间与容器时间偏差超过 30 秒也会触发选主失败

worker-server.log 反复打印 register to master failed

Worker 启动后连不上 Master,90% 是配置错位或网络策略问题,不是权限或路径错误。

Visily

适合每个人的UI设计工具,支持草图转原型图、截图转线框图以及文生图

下载

  • 检查 conf/common.propertiesmasters 配置项:它不是填 ZooKeeper 地址,而是填所有 Master 节点的 host:port(默认 12345),例如 masters=node1:12345,node2:12345
  • 确认 Master 节点上 netstat -tuln | grep 12345 真实监听的是 0.0.0.0:12345,不是 127.0.0.1:12345 —— 后者会导致 Worker 从外部无法连接
  • Worker 节点的 conf/common.propertieszk.quorum 必须和 Master 完全一致,否则 Worker 会向 ZooKeeper 注册错误的元数据
  • 避免混用主机名和 IP:全部统一用 IP,或确保所有节点的 /etc/hosts 对主机名解析完全一致

MySQL 初始化后 UI 登录报 Unknown system variable 'tx_isolation'

这是 MySQL 8.0.3+ 默认禁用旧变量导致的兼容性问题,DolphinScheduler 3.1.3 和 3.2.0 的 JDBC 连接字符串未适配新版本行为。

  • 修改 conf/common.properties 中的 datasource.url,在连接参数末尾追加:&sessionVariables=tx_isolation='READ-COMMITTED'
  • 或者降级兼容性:执行 SQL SET GLOBAL tx_isolation = 'READ-COMMITTED';(需 root 权限,重启 MySQL 后失效)
  • 更稳妥的做法是把驱动升级到 mysql-connector-java-8.0.33 或更高,并在 URL 中显式指定 useSSL=false&serverTimezone=Asia/Shanghai
  • 别忽略时区:MySQL 服务端时区和 JVM 时区不一致,会导致任务定时不准,建议统一设为 Asia/Shanghai

最易被忽略的一点:DolphinScheduler 的 master-serverworker-server 启动脚本默认使用 nohup 后台运行,但日志缓冲区未刷新,出错时看似“启动成功”,实则进程已退出。每次改完配置,务必用 ps -ef | grep dolphinscheduler 确认进程存活,再查对应 logs/*.log 的最新几行,而不是只看控制台输出。

本文地址:https://www.sztg.com.cn/article/629263.html

如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!

猜您喜欢