Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。
Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。 解决数据研发ETL依赖错综复杂,无法监控任务健康状态的问题。 DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。
操作系统 | 版本 |
---|---|
Red Hat Enterprise Linux | 7.0 及以上 |
CentOS | 7.0 及以上 |
Oracle Enterprise Linux | 7.0 及以上 |
Ubuntu LTS | 16.04 及以上 |
注意: 以上 Linux 操作系统可运行在物理服务器以及 VMware、KVM、XEN 主流虚拟化环境上
DolphinScheduler 支持运行在 Intel x86-64 架构的 64 位通用硬件服务器平台。对生产环境的服务器硬件配置有以下建议:
对于生产环境配置要求建议:
CPU | 内存 | 硬盘类型 | 网络 | 实例数量 |
---|---|---|---|---|
4核+ | 8 GB+ | SAS | 千兆网卡 | 3 |
注意:
- 以上建议配置为部署 DolphinScheduler 的最低配置,生产环境强烈推荐使用更高的配置
- 硬盘大小配置建议 50GB+ ,系统盘和数据盘分开
DolphinScheduler正常运行提供如下的网络端口配置:
组件 | 默认端口 | 说明 |
---|---|---|
MasterServer | 5678 | 非通信端口,只需本机端口不冲突即可 |
WorkerServer | 1234 | 非通信端口,只需本机端口不冲突即可 |
ApiApplicationServer | 12345 | 提供后端通信端口 |
注意:
- MasterServer 和 WorkerServer 不需要开启网络间通信,只需本机端口不冲突即可
- 管理员可根据实际环境中 DolphinScheduler 组件部署方案,在网络侧和主机侧开放相关端口
DolphinScheduler 推荐 Chrome浏览器 以及使用 Chromium 内核的较新版本浏览器访问前端可视化操作界面
流程定义
流程实例
任务实例
任务类型
调度方式
定时调度
依赖
优先级
邮件告警
失败策略
补数
服务 | 说明 |
---|---|
MasterServer | 主要负责 DAG的切分和任务状态的监控 |
WorkerServer/LoggerServer | 主要负责任务的提交、执行和任务状态的更新。LoggerServer 用于 Rest Api 通过 RPC 查看日志 |
ApiServer | 提供 Rest Api 服务,供 UI 进行调用 |
AlertServer | 提供告警服务 |
UI | 前端页面展示 |
本次部署相关安装包以及依赖组件安装文件均汇总在网盘:
链接:https://pan.baidu.com/s/1RLZr2BJRhWl7zFVD98j1mg?pwd=7y8o
提取码:7y8o
- mysql目录
- 用于MySQL应用部署,如果已经有了MySQL5.7环境可以不用下载
- apache-dolphinscheduler-3.1.1-bin.tar.gz
- 用于部署dolphinscheduler-3.1.1版本安装包
- apache-zookeeper-3.5.7-bin.tar.gz
- 用于部署zookeeper服务
- jdk-8u171-linux-x64.tar.gz
- 用于部署java1.8环境,如果不是新服务器,一般都已经有java1.8环境
- mysql-connector-java-8.0.20.jar
- 用于应用与MySQL之间的连接jdbc协议
服务器IP | 主机名 | CPU/内存/磁盘 | 操作系统 |
---|---|---|---|
172.28.54.210 | dolphinscheduler01 | 4c/8g/100g | CentOS 7.4 |
172.28.54.211 | dolphinscheduler02 | 4c/8g/100g | CentOS 7.4 |
172.28.54.212 | dolphinscheduler03 | 4c/8g/100g | CentOS 7.4 |
# 设置3台机器主机名
172.28.54.210 # hostnamectl set-hostname dolphinscheduler01
172.28.54.211 # hostnamectl set-hostname dolphinscheduler02
172.28.54.212 # hostnamectl set-hostname dolphinscheduler03
[root@dolphinscheduler01 ~]# vim /etc/selinux/config
SELINUX=disabled
# 本次关闭
[root@dolphinscheduler01 ~]# systemctl stop firewalld.service
# 开机不自启动
[root@dolphinscheduler01 ~]# systemctl disable firewalld.service
[root@dolphinscheduler01 ~]# vim /etc/security/limits.conf
# End of file
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
[root@dolphinscheduler01 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# dolphinscheduler_cluster
172.28.54.210 dolphinscheduler01
172.28.54.211 dolphinscheduler02
172.28.54.212 dolphinscheduler03
JDK:下载JDK (1.8+),安装并配置 JAVA_HOME 环境变量,并将其下的 bin 目录追加到 PATH 环境变量中。如果环境中已存在,可以跳过这步
# 网盘下载安装包 jdk-8u171-linux-x64.tar.gz
#链接:https://pan.baidu.com/s/1RLZr2BJRhWl7zFVD98j1mg?pwd=7y8o
#提取码:7y8o
# 上传至服务器
# 解压jdk安装包
[root@dolphinscheduler01 ~]# tar -xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
# 配置环境变量
[root@dolphinscheduler01 ~]# vim /etc/profile
# JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_171
export PATH=$PATH:$JAVA_HOME/bin
# 引用环境变量
[root@dolphinscheduler01 ~]# source /etc/profile
# 验证jdk安装环境是否正常
[root@dolphinscheduler01 ~]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
# 分发至dolphinscheduler02、dolphinscheduler03
[root@dolphinscheduler01 ~]# scp -r /usr/local/jdk1.8.0_171 dolphinscheduler02:/usr/local/
[root@dolphinscheduler01 ~]# scp -r /usr/local/jdk1.8.0_171 dolphinscheduler03:/usr/local/
# 分别在dolphinscheduler02、dolphinscheduler03上配置、引用环境变量并验证,方法同dolphinscheduler01
数据库:PostgreSQL (8.2.15+) 或者 MySQL (5.7+),两者任选其一即可,如 MySQL 则需要 JDBC Driver 8.0.16 +
如果已经有MySQL实例,可以跳过这步
建议MySQL部署在相对稳定的机器上
大多数用户都可以yum安装或者生产环境有专门的MySQL实例,如是纯离线环境又没有现成的,可以在网盘中下载MySQL安装rpm包,按照顺序安装即可
# 如果有MySQL残留文件则remove卸载
[root@dolphinscheduler01 mysql]# yum remove mysql-libs -y
[root@dolphinscheduler01 mysql]# rpm -ivh 01_mysql-community-common-5.7.29-1.el7.x86_64.rpm
[root@dolphinscheduler01 mysql]# rpm -ivh 02_mysql-community-libs-5.7.29-1.el7.x86_64.rpm
[root@dolphinscheduler01 mysql]# rpm -ivh 03_mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
[root@dolphinscheduler01 mysql]# rpm -ivh 04_mysql-community-client-5.7.29-1.el7.x86_64.rpm
[root@dolphinscheduler01 mysql]# rpm -ivh 05_mysql-community-server-5.7.29-1.el7.x86_64.rpm
[root@dolphinscheduler01 mysql]# systemctl start mysqld
# 安装完毕后初始密码在 cat /var/log/mysqld.log | grep password
[root@dolphinscheduler01 mysql]# mysql -uroot -pwQIhYE7v2l6Jg6Y6
# 将root初始密码设置为方便易用的密码
mysql> SET PASSWORD=PASSWORD('123456');
Query OK, 0 rows affected (0.00 sec)
# 退出mysql
mysql> exit;
Bye
注册中心:ZooKeeper (3.4.6+)
# 网盘下载安装包 apache-zookeeper-3.5.7-bin.tar.gz
# 或者自行官方网站下载:
# [root@dolphinscheduler01 ~]# wget http://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
# 解压安装、分发安装包
[root@dolphinscheduler01 ~]# tar -xf apache-zookeeper-3.5.7-bin.tar.gz -C /usr/local/
[root@dolphinscheduler01 ~]# scp -r /usr/local/apache-zookeeper-3.5.7-bin dolphinscheduler02:/usr/local/
[root@dolphinscheduler01 ~]# scp -r /usr/local/apache-zookeeper-3.5.7-bin dolphinscheduler03:/usr/local/
# 配置服务器编号
# 配置服务器编号-01
[root@dolphinscheduler01 ~]# cd /usr/local/apache-zookeeper-3.5.7-bin/
[root@dolphinscheduler01 apache-zookeeper-3.5.7-bin]# mkdir -p tmp/zookeeper
[root@dolphinscheduler01 apache-zookeeper-3.5.7-bin]# cd tmp/zookeeper
[root@dolphinscheduler01 zookeeper]# echo 1 > myid
# 配置服务器编号-02
[root@dolphinscheduler02 ~]# cd /usr/local/apache-zookeeper-3.5.7-bin/
[root@dolphinscheduler02 apache-zookeeper-3.5.7-bin]# mkdir -p tmp/zookeeper
[root@dolphinscheduler02 apache-zookeeper-3.5.7-bin]# cd tmp/zookeeper
[root@dolphinscheduler02 zookeeper]# echo 2 > myid
# 配置服务器编号-03
[root@dolphinscheduler03 ~]# cd /usr/local/apache-zookeeper-3.5.7-bin/
[root@dolphinscheduler03 apache-zookeeper-3.5.7-bin]# mkdir -p tmp/zookeeper
[root@dolphinscheduler03 apache-zookeeper-3.5.7-bin]# cd tmp/zookeeper
[root@dolphinscheduler03 zookeeper]# echo 3 > myid
# 配置zoo.cfg
[root@dolphinscheduler01 zkData]# cd /usr/local/apache-zookeeper-3.5.7-bin/conf/
[root@dolphinscheduler01 conf]# mv zoo_sample.cfg zoo.cfg
[root@dolphinscheduler01 conf]# vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
# dataDir 中的值改成 dataDir=./tmp/zookeeper,不然启动dolphinscheduler服务会报错
dataDir=./tmp/zookeeper
clientPort=2181
server.1=dolphinscheduler01:2888:3888
server.2=dolphinscheduler02:2888:3888
server.3=dolphinscheduler03:2888:3888
# 分发配置zoo.cfg
[root@dolphinscheduler01 conf]# scp zoo.cfg dolphinscheduler02:/usr/local/apache-zookeeper-3.5.7-bin/conf/
[root@dolphinscheduler01 conf]# scp zoo.cfg dolphinscheduler03:/usr/local/apache-zookeeper-3.5.7-bin/conf/
# 配置环境变量【3台机器都要操作】
[root@dolphinscheduler01 conf]# vim /etc/profile
# ZK_home
export ZOOKEEPER_HOME=/usr/local/apache-zookeeper-3.5.7-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin
[root@dolphinscheduler01 conf]# source /etc/profile
【注意】:
- server.1 / server.2 / server.3 中的 1 2 3 对应的就是zkData目录中myid中的值
- server后面的dolphinscheduler01 / dolphinscheduler02 / dolphinscheduler03 没采用IP地址是因为配置了/etc/hosts的解析
配置cluster信息解读:
server.A=B:C:D [ server.1=dolphinscheduler01:2888:3888 ( A=1 , B=dolphinscheduler01 , C=2888, D=3888)
A 是一个数字,表示这个是第几号服务器;
集群模式下配置一个文件myid,这个文件在配置的data目录下,这个文件里面数值就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
B 是这个服务器的地址;
C 是这个服务器Follower与集群中的Leader服务器交换信息的端口;
D 是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
# 启动zk服务
[root@dolphinscheduler01 ~]# zkServer.sh start
[root@dolphinscheduler02 ~]# zkServer.sh start
[root@dolphinscheduler03 ~]# zkServer.sh start
# 查看集群状态
# 01
[root@dolphinscheduler01 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
# 02
[root@dolphinscheduler02 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
# 03
[root@dolphinscheduler03 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
# 解压安装包
[root@dolphinscheduler01 ~]# tar -xf apache-dolphinscheduler-3.1.1-bin.tar.gz -C /usr/local/
创建部署用户,并且一定要配置 sudo 免密。以创建 dolphinscheduler 用户为例
每台服务器均需要执行
# 创建用户需使用 root 登录
[root@dolphinscheduler01 ~]# useradd dolphinscheduler
# 添加密码
[root@dolphinscheduler01 ~]# echo "dolphinscheduler" | passwd --stdin dolphinscheduler
# 配置 sudo 免密
[root@dolphinscheduler01 ~]# sed -i '$adolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' /etc/sudoers
[root@dolphinscheduler01 ~]# sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers
# 修改目录权限,使得部署用户对二进制包解压后的 apache-dolphinscheduler目录有操作权限
[root@dolphinscheduler01 ~]# chown -R dolphinscheduler:dolphinscheduler /usr/local/apache-dolphinscheduler-3.1.1-bin/
由于安装的时候需要向不同机器发送资源,所以要求各台机器间能实现SSH免密登陆。配置免密登陆的步骤如下
# 3台机器操作方式相同,02,03自行操作
[root@dolphinscheduler01 ~]# su - dolphinscheduler
[dolphinscheduler@dolphinscheduler01 ~]$ ssh-keygen -t rsa
[dolphinscheduler@dolphinscheduler01 ~]$ ssh-copy-id dolphinscheduler01
[dolphinscheduler@dolphinscheduler01 ~]$ ssh-copy-id dolphinscheduler02
[dolphinscheduler@dolphinscheduler01 ~]$ ssh-copy-id dolphinscheduler03
文件 install_env.sh 描述了哪些机器将被安装 DolphinScheduler 以及每台机器对应安装哪些服务。您可以在路径
bin/env/install_env.sh
中找到此文件,可通过以下方式更改env变量,export=,配置详情如下
[dolphinscheduler@dolphinscheduler01 ~]$ vim /usr/local/apache-dolphinscheduler-3.1.1-bin/bin/env/install_env.sh
ips="dolphinscheduler01,dolphinscheduler02,dolphinscheduler03"
sshPort="22"
masters="dolphinscheduler01,dolphinscheduler02,dolphinscheduler03"
workers="dolphinscheduler01:default,dolphinscheduler02:default,dolphinscheduler03:default"
alertServer="dolphinscheduler01"
apiServers="dolphinscheduler01"
installPath="/opt/dolphinscheduler"
deployUser="dolphinscheduler"
zkRoot=${zkRoot:-"/dolphinscheduler"}
[dolphinscheduler@dolphinscheduler01 ~]$ vim /usr/local/apache-dolphinscheduler-3.1.1-bin/bin/env/dolphinscheduler_env.sh
export JAVA_HOME="/usr/local/jdk1.8.0_171"
export DATABASE="mysql"
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://dolphinscheduler01:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true"
export SPRING_DATASOURCE_USERNAME="dolphinscheduler"
export SPRING_DATASOURCE_PASSWORD="dolphinscheduler"
export SPRING_CACHE_TYPE="none"
export SPRING_JACKSON_TIME_ZONE="Asia/Shanghai"
export MASTER_FETCH_COMMAND_NUM="10"
export REGISTRY_TYPE="zookeeper"
export REGISTRY_ZOOKEEPER_CONNECT_STRING="dolphinscheduler01:2181,dolphinscheduler02:2181,dolphinscheduler03:2181"
注意:
JAVA_HOME根据自己实际情况配置修改正确路径
最后的配置,这里没有列出来的,暂时可以不配置
DolphinScheduler 元数据存储在关系型数据库中,目前支持 PostgreSQL 和 MySQL
如果使用 MySQL 需要手动下载 mysql-connector-java 驱动 (8.0.16+) 并移动到 DolphinScheduler 的每个模块的 libs 目录下,其中包括 api-server/libs 和 alert-server/libs 和 master-server/libs 和 worker-server/libs和tools/libs
依赖包已经在分享的云盘中
[dolphinscheduler@dolphinscheduler01 ~]$ cp mysql-connector-java-8.0.20.jar /usr/local/apache-dolphinscheduler-3.1.1-bin/api-server/libs/
[dolphinscheduler@dolphinscheduler01 ~]$ cp mysql-connector-java-8.0.20.jar /usr/local/apache-dolphinscheduler-3.1.1-bin/alert-server/libs/
[dolphinscheduler@dolphinscheduler01 ~]$ cp mysql-connector-java-8.0.20.jar /usr/local/apache-dolphinscheduler-3.1.1-bin/master-server/libs/
[dolphinscheduler@dolphinscheduler01 ~]$ cp mysql-connector-java-8.0.20.jar /usr/local/apache-dolphinscheduler-3.1.1-bin/worker-server/libs/
[dolphinscheduler@dolphinscheduler01 ~]$ cp mysql-connector-java-8.0.20.jar /usr/local/apache-dolphinscheduler-3.1.1-bin/tools/libs/
# 这里的配置增加项都和/usr/local/apache-dolphinscheduler-3.1.1-bin/bin/env/dolphinscheduler_env.sh中配置匹配上
[dolphinscheduler@dolphinscheduler01 ~]# mysql -uroot -p
# 新建dolphinscheduler库
mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%';
mysql> CREATE USER 'dolphinscheduler'@'localhost' IDENTIFIED BY 'dolphinscheduler';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit;
Bye
完成上述步骤后,已经为 DolphinScheduler 创建一个新数据库dolphinscheduler,现在可以通过快速的 Shell 脚本来初始化数据库,用来建应用使用的各类table表
[dolphinscheduler@dolphinscheduler01 ~]$ cd /usr/local/apache-dolphinscheduler-3.1.1-bin/
[dolphinscheduler@dolphinscheduler01 apache-dolphinscheduler-3.1.1-bin]$ bash tools/bin/upgrade-schema.sh
如果MySQL连接异常,这一步则会执行失败,如果报错可以查看MySQL的相关配置和操作
也可以到MySQL的dolphinscheduler库下去查看是否创建表成功:
[dolphinscheduler@dolphinscheduler01 ~]$ mysql -udolphinscheduler -pdolphinscheduler mysql> use dolphinscheduler; mysql> show tables like '%version%'; +----------------------------------------+ | Tables_in_dolphinscheduler (%version%) | +----------------------------------------+ | t_ds_version | +----------------------------------------+ 1 row in set (0.00 sec) mysql> select * from t_ds_version; +----+---------+ | id | version | +----+---------+ | 1 | 3.1.1 | +----+---------+ 1 row in set (0.00 sec)
install.sh安装启动dolphinscheduler
[dolphinscheduler@dolphinscheduler01 apache-dolphinscheduler-3.1.1-bin]$ bash ./bin/install.sh
注意:只有第一次是使用bash ./bin/install.sh,成功部署完毕后,以后都是用bash ./bin/stop-all.sh和bash ./bin/start-all.sh
install.sh可以理解成会把/usr/local/apache-dolphinscheduler-3.1.1-bin/目录下修改的文件分发到各个机器,然后逐个去启动
查看服务角色分布情况:
[dolphinscheduler@dolphinscheduler01 ~]$ for i in dolphinscheduler01 dolphinscheduler02 dolphinscheduler03;do echo "=== $i ===" && ssh $i "/usr/local/jdk1.8.0_171/bin/jps";done
=== dolphinscheduler01 ===
31120 AlertServer
31041 MasterServer
31157 ApiApplicationServer
31081 WorkerServer
=== dolphinscheduler02 ===
25048 MasterServer
25085 WorkerServer
=== dolphinscheduler03 ===
25008 WorkerServer
24971 MasterServer
后续通过URL访问连接则对应的是dolphinscheduler01服务器的ApiApplicationServer服务,对应端口是12345
浏览器访问地址 http://localhost:12345/dolphinscheduler/ui 即可登录系统UI。
默认的用户名和密码是 :admin / dolphinscheduler123
Apache DolphinScheduler 首页可让您查看用户所有项目的任务状态统计、工作流状态统计和项目统计。 这是观察整个系统状态以及深入各个进程以检查任务和任务日志的每个状态的最佳方式
# 一键停止集群所有服务
bash ./bin/stop-all.sh
# 一键开启集群所有服务
bash ./bin/start-all.sh
# 启停 Master
bash ./bin/dolphinscheduler-daemon.sh stop master-server
bash ./bin/dolphinscheduler-daemon.sh start master-server
# 启停 Worker
bash ./bin/dolphinscheduler-daemon.sh start worker-server
bash ./bin/dolphinscheduler-daemon.sh stop worker-server
# 启停 Api
bash ./bin/dolphinscheduler-daemon.sh start api-server
bash ./bin/dolphinscheduler-daemon.sh stop api-server
# 启停 Alert
bash ./bin/dolphinscheduler-daemon.sh start alert-server
bash ./bin/dolphinscheduler-daemon.sh stop alert-server
点击"项目管理"进入项目管理页面,点击“创建项目”按钮,输入项目名称,项目描述,点击“提交”,创建新的项目。
项目创建完成后,点击项目名称即可进入到指定项目的首页
添加 Shell 任务的参数设置:
按照Node_test_A方式再创建Node_test_B和Node_test_C,这时候画板中的A、B、C 三个节点都是相互独立的,并没有关联
实时任务的依赖关系
删除依赖关系
执行策略:
- 并行:如果对于同一个工作流定义,同时有多个工作流实例,则并行执行工作流实例
- 串行等待:如果对于同一个工作流定义,同时有多个工作流实例,则并行执行工作流实例
- 串行抛弃:如果对于同一个工作流定义,同时有多个工作流实例,则抛弃后生成的工作流实例并杀掉正在跑的实例
- 串行优先:如果对于同一个工作流定义,同时有多个工作流实例,则按照优先级串行执行工作流实例
点击项目管理->工作流->工作流定义,进入工作流定义页面,如下图所示:
工作流定义列表的操作功能如下:
编辑:只能编辑"下线"的工作流定义。工作流DAG编辑同创建工作流定义
上线: 工作流状态为"下线"时,上线工作流,只有"上线"状态的工作流能运行,但不能编辑。
下线: 工作流状态为"上线"时,下线工作流,下线状态的工作流可以编辑,但不能运行。
运行: 只有上线的工作流能运行。运行操作步骤见运行工作流
定时: 只有上线的工作流能设置定时,系统自动定时调度工作流运行。创建定时后的状态为"下线",需在定时管理页面上线定时才生效。定时操作步骤见工作流定时
定时管理: 定时管理页面可编辑、上线/下线、删除定时。
删除: 删除工作流定义。在同一个项目中,只能删除自己创建的工作流定义,其他用户的工作流定义不能进行删除,如果需要删除请联系创建用户或者管理员。
下载: 下载工作流定义到本地。
工作流树形图: 以树形结构展示任务节点的类型及任务状态
点击项目管理->工作流->工作流定义,进入工作流定义页面,如下图所示,点击"上线"按钮,上线工作流。
点击”运行“按钮,弹出启动参数设置弹框,如下图所示,设置启动参数,点击弹框中的"运行"按钮,工作流开始运行,工作流实例页面生成一条工作流实例
工作流运行参数说明:
yyyy-MM-dd HH:mm:ss
的日期。点击运行工作流,选择并行补数模式:例如同时执行7月9号到7月10号的工作流定义,同时在流程实例页面生成两条流程实例(执行策略为串行时流程实例按照策略执行)运行任务需要新加一个租户:
安全中心后面展开介绍,这里先跑通流程
点击确定后,则工作流会开始运行
创建定时:点击项目管理->工作流->工作流定义,进入工作流定义页面,上线工作流,点击"定时"按钮,弹出定时参数设置弹框
选择起止时间。在起止时间范围内,定时运行工作流;不在起止时间范围内,不再产生定时工作流实例
在定义完时间后可以点击运行时间,查看验证后续执行的时间清单
失败策略、通知策略、流程优先级、Worker 分组、通知组、收件人、抄送人同工作流运行参数
定时上线:点击"定时管理"按钮,进入定时管理页面,点击"上线"按钮,定时状态变为"上线"
点击操作中的导出,可以导出一个json文件到本地
workflow_1668875701525.json
点击操作上的删除按钮,点击确定即可
点击项目管理->工作流->工作流定义,进入工作流定义页面,点击"导入工作流"按钮,导入本地工作流文件,工作流定义列表显示导入的工作流,状态为下线。
将导入的工作流wf_test_for_ABC_import_20221120004014956点击运行,工作流中的单个任务点击运行,产生一些运行实例
点击项目管理->工作流->工作流实例,进入工作流实例页面
点击工作流名称,进入DAG查看页面,查看任务执行状态
点击项目管理->工作流->工作流实例,进入工作流实例页面,在操作中有各类常用常用按钮
点击项目管理->工作流->任务实例,进入任务实例页面,如下图所示,点击工作流实例名称,可跳转到工作流实例DAG图查看任务状态
查看日志:点击操作列中的“查看日志”按钮,可以查看任务执行的日志情况
使用 Apache DolphinScheduler 3.0.0 此前版本,用户如果想要操作任务,需要先找到对应的工作流,并在工作流中定位到任务的位置之后才能编辑。然而,当工作流数量变多或单个工作流有较多的任务时,找到对应任务的过程将会变得非常痛苦,这不是 Apache DolphinScheduler 所追求的 easy to use 理念。所以,我们在 3.0.0 中增加了任务定义页面,让用户可以通过任务名称快速定位到任务,并对任务进行操作,轻松实现批量任务变更。
批量任务定义允许用户在基于任务级别而不是在工作流中操作修改任务。再此之前,我们已经有了工作流级别的任务编辑器,可以在工作流定义 单击特定的工作流,然后编辑任务的定义,并不是这里可以一次性创建很多新任务的意思。
在该视图中,可以通过单击 操作 列中的相关按钮来进行创建、查询、更新、删除任务定义。可以通过通配符进行全部任务查询,当只记得任务名称但忘记它属于哪个工作流时是非常有用的。也支持通过任务名称结合使用 任务类型 或 工作流程名称进行查询
dolphinscheduler有非常丰富的任务类型插件,几乎可以覆盖全部的数据处理任务的场景,这里简单介绍一下任务的描述,具体每个任务类型的使用是一个漫长的学习过程和经验积累。
Shell
sub_process
Dependent
stored-procedure
SQL
Spark
MapReduce
Python
Flink
HTTP
DataX
${DATAX_HOME}/bin/datax.py
来解析传入的 json 文件Pigeon
Conditions
Switch
SeaTunnel
Amazon EMR
Zeppelin
Jupyter
Hive Cli
kubernetes
MLflow
OpenMLDB
DVC
Dinky
ChunJun
Pytorch
针对每一个任务类型,可以在官方项目文档中找到对应的任务插件的详细介绍使用
变量名 | 声明方式 | 含义 |
---|---|---|
system.biz.date | ${system.biz.date} | 日常调度实例定时的定时时间前一天,格式为 yyyyMMdd |
system.biz.curdate | ${system.biz.curdate} | 日常调度实例定时的定时时间,格式为 yyyyMMdd |
system.datetime | ${system.datetime} | 日常调度实例定时的定时时间,格式为 yyyyMMddHHmmss |
作用域
使用方式
创建shell任务
在某个工作流下创建任务时,需要将此工作流选为下线状态
注意:
- 这里定义的 dt 参数可以被其它任一节点的局部参数引用
通过自定义参数使用
创建一个新任务Node_test_E
参数说明:
可以看到在工作流中定义的dt为前一天的变量并未影响到子任务中的定义,优先使用的为任务定义中的变量
通过 setValue export 本地参数
如果你想简单 export 参数然后在下游任务中使用它们,你可以在你的任务中使用 setValue,你可以将参数统一在一个任务中管理。在 Shell 任务中使用语法 echo ‘${setValue(wow=20230123)}’(不要忘记单引号) 并添加新的 OUT 自定义参数来 export 它
创建任务Node_test_F
创建任务Node_test_G
在工作流中将F任务和G任务形成上下游关系
此时运行任务,验证G任务是否可以打印出echo '${wow}'
,取到F任务中定义的变量
DolphinScheduler 提供参数间相互引用的能力,包括:本地参数引用全局参数、上下游参数传递。因为有引用的存在,就涉及当参数名相同时,参数的优先级问题
注意:若节点之间没有依赖关系,则局部参数无法通过上游传递
DolphinScheduler 中所涉及的参数值的定义可能来自三种类型:
因为参数的值存在多个来源,当参数名相同时,就需要会存在参数优先级的问题。DolphinScheduler 参数的优先级从高到低为:
在上游任务传递的参数中,由于上游可能存在多个任务向下游传递参数,当上游传递的参数名称相同时:
下游节点会优先使用值为非空的参数
如果存在多个值为非空的参数,则按照上游任务的完成时间排序,选择完成时间最早的上游任务对应的参数
数据源中心接入支持:
这里简单拿MySQL做一下介绍,其它数据源基本参照官方文档配置即可
MySQL
MariaDB [(none)]> use wow;
Database changed
MariaDB [wow]> show tables;
+---------------+
| Tables_in_wow |
+---------------+
| wow_info |
+---------------+
1 row in set (0.000 sec)
MariaDB [wow]> select * from wow_info;
+----+------+-------------+
| id | role | pinyin |
+----+------+-------------+
| 1 | fs | fashi |
| 2 | ms | mushi |
| 3 | ss | shushi |
| 4 | dz | daozei |
| 5 | ws | wuseng |
| 6 | xd | xiaode |
| 7 | sq | shengqi |
| 8 | zs | zhanshi |
| 9 | dk | siwangqishi |
| 10 | dh | emolieshou |
+----+------+-------------+
添加一个SQL任务
运行任务后,查看日志:
告警通知支持方式:
资源中心通常用于上传文件、UDF 函数和任务组管理。 对于 standalone 环境,可以选择本地文件目录作为上传文件夹(此操作不需要Hadoop部署)。当然,你也可以 选择上传到 Hadoop 或者 MinIO 集群。 在这种情况下,您需要有 Hadoop(2.6+)或 MinION 等相关环境。
安全中心只有管理员账户才有权限操作,分别有队列管理、租户管理、用户管理、告警组管理、worker分组管理、令牌管理等功能,在用户管理模块可以对资源、数据源、项目等授权
创建队列
添加租户
创建普通用户
编辑用户信息
修改用户密码
创建告警组
令牌管理
由于后端接口有登录检查,令牌管理提供了一种可以通过调用接口的方式对系统进行各种操作
管理员进入安全中心->令牌管理页面,点击“创建令牌”按钮,选择失效时间与用户,点击"生成令牌"按钮,点击"提交"按钮,则选择用户的token创建成功
普通用户登录后,点击用户名下拉框中的用户信息,进入令牌管理页面,选择失效时间,点击"生成令牌"按钮,点击"提交"按钮,则该用户创建 token 成功
调用示例:
/**
* test token
*/
public void doPOSTParam()throws Exception{
// create HttpClient
CloseableHttpClient httpclient = HttpClients.createDefault();
// create http post request
HttpPost httpPost = new HttpPost("http://127.0.0.1:12345/escheduler/projects/create");
httpPost.setHeader("token", "123");
// set parameters
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("projectName", "qzw"));
parameters.add(new BasicNameValuePair("desc", "qzw"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters);
httpPost.setEntity(formEntity);
CloseableHttpResponse response = null;
try {
// execute
response = httpclient.execute(httpPost);
// response status code 200
if (response.getStatusLine().getStatusCode() == 200) {
String content = EntityUtils.toString(response.getEntity(), "UTF-8");
System.out.println(content);
}
} finally {
if (response != null) {
response.close();
}
httpclient.close();
}
}
授予权限
Worker分组
每个 worker 节点都会归属于自己的 worker 分组,默认分组为 default。
在任务执行时,可以将任务分配给指定 worker 分组,最终由该组中的 worker 节点执行该任务
新增 / 更新 worker 分组
打开要设置分组的 worker 节点上的 worker-server/conf/application.yaml 配置文件. 修改 worker 配置下的 groups 参数
groups 参数的值为 worker 节点对应的分组名称,默认为 default
如果该 worker 节点对应多个分组,则用连字符列出
worker:
......
groups:
- default
- group1
- group2
......
也可以在运行中添加 worker 所属的 worker 分组而忽略 application.yaml 中的配置。修改步骤为 安全中心 -> worker分组管理 -> 点击 创建worker分组 -> 输入分组名称和worker地址 -> 点击确定
环境管理
在线配置 worker 运行环境,一个 worker 可以指定多个环境,每个环境等价于 dolphinscheduler_env.sh 文件.
默认环境为dolphinscheduler_env.sh文件
在任务执行时,可以将任务分配给指定 worker 分组,根据 worker 分组选择对应的环境,最终由该组中的 worker 节点执行环境后执行该任务
环境配置等价于dolphinscheduler_env.sh文件内配置
在工作流定义中创建任务节点选择 worker 分组和 worker 分组对应的环境,任务执行时 worker 会先执行环境在执行任务
注意: 当无法在任务定义或工作流运行对话框中使用你想要使用的环境时,请检查您已经选择worker,并且您要使用的环境已经关联到您选择的worker中
用户 队列 数据源
项目资源告警
t_ds_relation_project_user
表完成project_id和user_id的关系绑定;t_ds_projcet
表中的user_id
表示创建该项目的用户,t_ds_relation_project_user
表中的user_id
表示对项目有权限的用户;t_ds_resources
表中的user_id
表示创建该资源的用户,t_ds_relation_resources_user
中的user_id
表示对资源有权限的用户;t_ds_udfs
表中的user_id
表示创建该UDF的用户,t_ds_relation_udfs_user
表中的user_id
表示对UDF有权限的用户;项目 - 租户 - 工作流定义 - 定时
工作流定义和执行
t_ds_process_task_relation
进行关联,关联的key是code + version
,当任务的前置节点为空时,对应的pre_task_node
和pre_task_version
为0;t_ds_process_instance
,一个工作流实例对应一个或多个任务实例t_ds_task_instance
;t_ds_relation_process_instance
表存放的数据用于处理流程定义中含有子流程的情况,parent_process_instance_id
表示含有子流程的主流程实例id,process_instance_id
表示子流程实例的id,parent_task_instance_id
表示子流程节点的任务实例id,流程实例表和任务实例表分别对应t_ds_process_instance
表和t_ds_task_instance
表;t_ds_command
表,根据不同的命令类型进行不同的业务操作; ZooKeeper服务,系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进行集群管理和容错。另外系统还基于ZooKeeper进行事件监听和分布式锁。 我们也曾经基于Redis实现过队列,不过我们希望DolphinScheduler依赖到的组件尽量地少,所以最后还是去掉了Redis实现
DolphinScheduler目录结构:
├── LICENSE
│
├── NOTICE
│
├── licenses licenses存放目录
│
├── bin DolphinScheduler命令和环境变量配置存放目录
│ ├── dolphinscheduler-daemon.sh 启动/关闭DolphinScheduler服务脚本
│ ├── env 环境变量配置存放目录
│ │ ├── dolphinscheduler_env.sh 当使用`dolphinscheduler-daemon.sh`脚本起停服务时,运行此脚本加载环境变量配置文件 [如:JAVA_HOME,HADOOP_HOME, HIVE_HOME ...]
│ │ └── install_env.sh 当使用`install.sh` `start-all.sh` `stop-all.sh` `status-all.sh`脚本时,运行此脚本为DolphinScheduler安装加载环境变量配置
│ ├── install.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本自动安装服务
│ ├── remove-zk-node.sh 清理zookeeper缓存文件脚本
│ ├── scp-hosts.sh 安装文件传输脚本
│ ├── start-all.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本启动所有服务
│ ├── status-all.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本获取所有服务状态
│ └── stop-all.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本终止所有服务
│
├── alert-server DolphinScheduler alert-server命令、配置和依赖存放目录
│ ├── bin
│ │ └── start.sh DolphinScheduler alert-server启动脚本
│ ├── conf
│ │ ├── application.yaml alert-server配置文件
│ │ ├── bootstrap.yaml Spring Cloud 启动阶段配置文件, 通常不需要修改
│ │ ├── common.properties 公共服务(存储等信息)配置文件
│ │ ├── dolphinscheduler_env.sh alert-server环境变量配置加载脚本
│ │ └── logback-spring.xml alert-service日志配置文件
│ └── libs alert-server依赖jar包存放目录
│
├── api-server DolphinScheduler api-server命令、配置和依赖存放目录
│ ├── bin
│ │ └── start.sh DolphinScheduler api-server启动脚本
│ ├── conf
│ │ ├── application.yaml api-server配置文件
│ │ ├── bootstrap.yaml Spring Cloud 启动阶段配置文件, 通常不需要修改
│ │ ├── common.properties 公共服务(存储等信息)配置文件
│ │ ├── dolphinscheduler_env.sh api-server环境变量配置加载脚本
│ │ └── logback-spring.xml api-service日志配置文件
│ ├── libs api-server依赖jar包存放目录
│ └── ui api-server相关前端WEB资源存放目录
│
├── master-server DolphinScheduler master-server命令、配置和依赖存放目录
│ ├── bin
│ │ └── start.sh DolphinScheduler master-server启动脚本
│ ├── conf
│ │ ├── application.yaml master-server配置文件
│ │ ├── bootstrap.yaml Spring Cloud 启动阶段配置文件, 通常不需要修改
│ │ ├── common.properties 公共服务(存储等信息)配置文件
│ │ ├── dolphinscheduler_env.sh master-server环境变量配置加载脚本
│ │ └── logback-spring.xml master-service日志配置文件
│ └── libs master-server依赖jar包存放目录
│
├── standalone-server DolphinScheduler standalone-server命令、配置和依赖存放目录
│ ├── bin
│ │ └── start.sh DolphinScheduler standalone-server启动脚本
│ ├── conf
│ │ ├── application.yaml standalone-server配置文件
│ │ ├── bootstrap.yaml Spring Cloud 启动阶段配置文件, 通常不需要修改
│ │ ├── common.properties 公共服务(存储等信息)配置文件
│ │ ├── dolphinscheduler_env.sh standalone-server环境变量配置加载脚本
│ │ ├── logback-spring.xml standalone-service日志配置文件
│ │ └── sql DolphinScheduler元数据创建/升级sql文件
│ ├── libs standalone-server依赖jar包存放目录
│ └── ui standalone-server相关前端WEB资源存放目录
│
├── tools DolphinScheduler元数据工具命令、配置和依赖存放目录
│ ├── bin
│ │ └── upgrade-schema.sh DolphinScheduler元数据创建/升级脚本
│ ├── conf
│ │ ├── application.yaml 元数据工具配置文件
│ │ └── common.properties 公共服务(存储等信息)配置文件
│ ├── libs 元数据工具依赖jar包存放目录
│ └── sql DolphinScheduler元数据创建/升级sql文件
│
├── worker-server DolphinScheduler worker-server命令、配置和依赖存放目录
│ ├── bin
│ │ └── start.sh DolphinScheduler worker-server启动脚本
│ ├── conf
│ │ ├── application.yaml worker-server配置文件
│ │ ├── bootstrap.yaml Spring Cloud 启动阶段配置文件, 通常不需要修改
│ │ ├── common.properties 公共服务(存储等信息)配置文件
│ │ ├── dolphinscheduler_env.sh worker-server环境变量配置加载脚本
│ │ └── logback-spring.xml worker-service日志配置文件
│ └── libs worker-server依赖jar包存放目录
│
└── ui 前端WEB资源目录
Master Server相关配置:
位置:master-server/conf/application.yaml
参数 | 默认值 | 描述 |
---|---|---|
master.listen-port | 5678 | master监听端口 |
master.fetch-command-num | 10 | master拉取command数量 |
master.pre-exec-threads | 10 | master准备执行任务的数量,用于限制并行的command |
master.exec-threads | 100 | master工作线程数量,用于限制并行的流程实例数量 |
master.dispatch-task-number | 3 | master每个批次的派发任务数量 |
master.host-selector | lower_weight | master host选择器,用于选择合适的worker执行任务,可选值: random, round_robin, lower_weight |
master.heartbeat-interval | 10 | master心跳间隔,单位为秒 |
master.task-commit-retry-times | 5 | 任务重试次数 |
master.task-commit-interval | 1000 | 任务提交间隔,单位为毫秒 |
master.state-wheel-interval | 5 | 轮询检查状态时间 |
master.max-cpu-load-avg | -1 | master最大cpuload均值,只有高于系统cpuload均值时,master服务才能调度任务. 默认值为-1: cpu cores * 2 |
master.reserved-memory | 0.3 | master预留内存,只有低于系统可用内存时,master服务才能调度任务,单位为G |
master.failover-interval | 10 | failover间隔,单位为分钟 |
master.kill-yarn-job-when-task-failover | true | 当任务实例failover时,是否kill掉yarn job |
master.registry-disconnect-strategy.strategy | stop | 当Master与注册中心失联之后采取的策略, 默认值是: stop. 可选值包括: stop, waiting |
master.registry-disconnect-strategy.max-waiting-time | 100s | 当Master与注册中心失联之后重连时间, 之后当strategy为waiting时,该值生效。 该值表示当Master与注册中心失联时会在给定时间之内进行重连, 在给定时间之内重连失败将会停止自己,在重连时,Master会丢弃目前正在执行的工作流,值为0表示会无限期等待 |
master.master.worker-group-refresh-interval | 10s | 定期将workerGroup从数据库中同步到内存的时间间隔 |
Worker Server相关配置:
位置:worker-server/conf/application.yaml
参数 | 默认值 | 描述 |
---|---|---|
worker.listen-port | 1234 | worker监听端口 |
worker.exec-threads | 100 | worker工作线程数量,用于限制并行的任务实例数量 |
worker.heartbeat-interval | 10 | worker心跳间隔,单位为秒 |
worker.host-weight | 100 | 派发任务时,worker主机的权重 |
worker.tenant-auto-create | true | 租户对应于系统的用户,由worker提交作业.如果系统没有该用户,则在参数worker.tenant.auto.create为true后自动创建。 |
worker.max-cpu-load-avg | -1 | worker最大cpuload均值,只有高于系统cpuload均值时,worker服务才能被派发任务. 默认值为-1: cpu cores * 2 |
worker.reserved-memory | 0.3 | worker预留内存,只有低于系统可用内存时,worker服务才能被派发任务,单位为G |
worker.alert-listen-host | localhost | alert监听host |
worker.alert-listen-port | 50052 | alert监听端口 |
worker.registry-disconnect-strategy.strategy | stop | 当Worker与注册中心失联之后采取的策略, 默认值是: stop. 可选值包括: stop, waiting |
worker.registry-disconnect-strategy.max-waiting-time | 100s | 当Worker与注册中心失联之后重连时间, 之后当strategy为waiting时,该值生效。 该值表示当Worker与注册中心失联时会在给定时间之内进行重连, 在给定时间之内重连失败将会停止自己,在重连时,Worker会丢弃kill正在执行的任务。值为0表示会无限期等待 |
worker.task-execute-threads-full-policy | REJECT | 如果是 REJECT, 当Worker中等待队列中的任务数达到exec-threads时, Worker将会拒绝接下来新接收的任务,Master将会重新分发该任务; 如果是 CONTINUE, Worker将会接收任务,放入等待队列中等待空闲线程去执行该任务 |
Alert Server相关配置
位置:alert-server/conf/application.yaml
参数 | 默认值 | 描述 |
---|---|---|
server.port | 50053 | Alert Server监听端口 |
alert.port | 50052 | alert监听端口 |
负载均衡即通过路由算法(通常是集群环境),合理的分摊服务器压力,达到服务器性能的最大优化。
DolphinScheduler-Worker 负载均衡算法
DolphinScheduler-Master 分配任务至 worker,默认提供了三种算法:
加权随机(random)
平滑轮询(roundrobin)
线性负载(lowerweight)
默认配置为线性加权负载。
由于路由是在客户端做的,即 master 服务,因此你可以更改 master.properties 中的 master.host.selector 来配置你所想要的算法。
eg:master.host.selector=random(不区分大小写)
当前访问dolphinscheduler为:
浏览器访问地址 http://ApiServerIp:12345/dolphinscheduler/ui 即可登录系统UI。
默认的用户名和密码是 :admin / dolphinscheduler123
为了避免ApiServer单点故障,虽然dolphinscheduler自身运行高可用,还在运作,但是没有了界面管理访问,影响也较大;所以启动多ApiServer通过nginx代理实现连接高可用,通过这个方案最终实现访问多入口,任务调度多master,加固整体稳定性
[dolphinscheduler@dolphinscheduler01 ~]$ cd /usr/local/apache-dolphinscheduler-3.1.1-bin/
[dolphinscheduler@dolphinscheduler01 apache-dolphinscheduler-3.1.1-bin]$ ./bin/stop-all.sh
[dolphinscheduler@dolphinscheduler01 apache-dolphinscheduler-3.1.1-bin]$ vim /usr/local/apache-dolphinscheduler-3.1.1-bin/bin/env/install_env.sh
# 将apiServers配置项增加
apiServers="dolphinscheduler01,dolphinscheduler02,dolphinscheduler03"
[dolphinscheduler@dolphinscheduler01 ~]$ cd /usr/local/apache-dolphinscheduler-3.1.1-bin/
[dolphinscheduler@dolphinscheduler01 apache-dolphinscheduler-3.1.1-bin]$ bash ./bin/install.sh
[dolphinscheduler@dolphinscheduler01 apache-dolphinscheduler-3.1.1-bin]$ for i in dolphinscheduler01 dolphinscheduler02 dolphinscheduler03;do echo "=== $i ===" && ssh $i "/usr/local/jdk1.8.0_171/bin/jps";done
=== dolphinscheduler01 ===
2884 AlertServer
2805 MasterServer
2921 ApiApplicationServer
2845 WorkerServer
=== dolphinscheduler02 ===
27908 MasterServer
27945 WorkerServer
27982 ApiApplicationServer
=== dolphinscheduler03 ===
27570 MasterServer
27607 WorkerServer
27646 ApiApplicationServer
此时已经部署完毕,验证访问:
当前访问dolphinscheduler为:
http://dolphinscheduler01:12345/dolphinscheduler/ui
http://dolphinscheduler02:12345/dolphinscheduler/ui
http://dolphinscheduler03:12345/dolphinscheduler/ui
默认的用户名和密码是 :admin / dolphinscheduler123
此时3个地址均可以访问
使用nginx负载均衡配置:
# upstream
upstream dolphinscheduler{
server 39.101.79.153:12345;
server 8.130.37.189:12345;
server 8.130.36.178:12345;
}
location /dolphinscheduler/ui {
proxy_http_version 1.1;
proxy_buffering off;
proxy_request_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://dolphinscheduler/dolphinscheduler/ui;
}