在 CentOS 上为 DolphinScheduler 配置负载均衡
一 名词澄清与总体思路
- 若你指的是 Apache DolphinScheduler(分布式工作流调度),其任务调度由 Master 节点基于算法将任务分配给 Worker 节点,支持三种算法:加权随机(random)、平滑轮询(roundrobin)、线性负载(lowerweight,默认)。你可以在 master.properties 中通过 master.host.selector 切换算法,并为各 Worker 设置 worker.weight 权重;Worker 启动后有约 10 分钟预热,权重会逐步升至设定值。若你指的是 Dolphin(KDE 文件管理器),它是桌面程序,不存在“负载均衡”的配置场景。
二 在 DolphinScheduler 内部调整调度算法与权重
- 修改算法
- 在所有 Master 节点编辑配置文件 conf/master.properties,将算法切换为所需值(不区分大小写):
- 随机:master.host.selector=random
- 平滑轮询:master.host.selector=roundrobin
- 线性加权(默认):master.host.selector=lowerweight
- 保存后重启 Master 服务,使配置生效。
- 配置 Worker 权重
- 在每个 Worker 节点编辑 conf/worker.properties,设置 worker.weight(默认值为 100,可按机器性能调高或调低)。权重越高,被分配到的任务相对越多。
- 预热与生效
- Worker 启动后权重会按 预热机制 在约 10 分钟内逐步达到设定值;在此期间,调度会较为平滑,避免冷启动带来的瞬时高负载。
三 在 CentOS 层面对接入流量做负载均衡(可选)
- 场景与拓扑
- 面向用户或外部系统的访问(如 API/Web UI)可在前端放置 Nginx/HAProxy,对后端 Master 节点做 L4/L7 负载均衡与健康检查,提升可用性与吞吐。生产建议:2 个 Master(Active/Standby)+ N 个 Worker(≥3),并配 3 节点 Zookeeper 做服务发现与健康监测。
- Nginx 示例(HTTP 反向代理)
- 安装:yum install -y nginx
- 配置片段(/etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ds.conf):
- upstream ds_masters { server master1:12345 max_fails=3 fail_timeout=30s; server master2:12345 backup; }
- server { listen 80; location / { proxy_pass http://ds_masters; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 60s; proxy_read_timeout 300s; } }
- 启动:systemctl enable --now nginx;如启用防火墙,放行 80/tcp:firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload
- HAProxy 示例(TCP 或 HTTP)
- 安装:yum install -y haproxy
- 配置片段(/etc/haproxy/haproxy.cfg):
- frontend ds_front *:80
- mode http
- default_backend ds_masters
- backend ds_masters
- mode http
- balance roundrobin
- server master1 master1:12345 check
- server master2 master2:12345 check backup
- 启动:systemctl enable --now haproxy;如启用防火墙,放行 80/tcp。
四 验证与运维要点
- 验证调度算法与权重
- 观察不同 Worker 的任务分配情况是否与 worker.weight 和所选算法(random/roundrobin/lowerweight)预期一致;注意 预热约 10 分钟的影响。
- 验证接入层负载均衡
- 对 Nginx/HAProxy 前端发起请求,确认请求在 Master 节点间按策略分发;停掉某台 Master 验证 健康检查 与 故障切换 是否正常。
- 监控与告警
- 建议接入 Prometheus + Grafana 统一采集 Master/Worker 指标并设置告警;对 Nginx/HAProxy 暴露状态页或指标端点,结合告警策略保障稳定性。