DolphinScheduler工作流任务调度集群部署
DolphinScheduler工作流任务调度集群
构架说明
IP | 组件规划 | 三方组件 |
---|---|---|
83.1.12.43 | work、alter | jdk1.8、zookeeper、PGsql |
83.1.12.44 | master、work | jdk1.8、zookeeper |
83.1.12.45 | work、api | jdk1.8、zookeeper |
部署使用 83.1.12.43 作为中控机,创建,启动,关闭集群 均在此服务器操作
端口说明
组件 | 默认端口 | 说明 |
---|---|---|
MasterServer | 5678 | 非通信端口,只需本机端口不冲突即可 |
WorkerServer | 1234 | 非通信端口,只需本机端口不冲突即可 |
ApiApplicationServer | 12345 | 提供后端通信端口 |
# 部署参考文档
https://dolphinscheduler.apache.org/zh-cn/docs/3.1.9/guide/installation/cluster
# Dolphinscheduler下载地址最新稳定版
https://dlcdn.apache.org/dolphinscheduler/3.1.9/apache-dolphinscheduler-3.1.9-bin.tar.gz
# Zookeeper下载地址最新稳定版
https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
# PGSQL
使用Dcoker方式部署
配置免密登录
[root@83.1.12.43 ~]# ssh-keygen
# 一路回车
# 由于中控机也需要部署业务所以自己也要配置免密
[root@83.1.12.43 ~]# ssh-copy-id root@83.1.12.43
[root@83.1.12.43 ~]# ssh-copy-id root@83.1.12.44
[root@83.1.12.43 ~]# ssh-copy-id root@83.1.12.45
Zookeeper集群
# 上传 apache-zookeeper-3.8.4-bin.tar.gz 文件
[root@83.1.12.43 ~]# tar xf apache-zookeeper-3.8.4-bin.tar.gz -C /home
[root@83.1.12.43 ~]# cd /home
[root@83.1.12.43 ~]# mv apache-zookeeper-3.8.4-bin zookeeper
[root@83.1.12.43 ~]# mkdir zookeeper/data zookeeper/logs
[root@83.1.12.43 home]# cd zookeeper/conf
[root@83.1.12.43 conf]# cp zoo_sample.cfg zoo.cfg
# 编辑配置文件
[root@83.1.12.43 conf]# vim zoo.cfg
dataDir=/home/zookeeper/data
dataLogDir=/home/zookeeper/logs
# 集群配置 2888:选举端口 3888:投票端口
server.1=83.1.12.43:2888:3888
server.2=83.1.12.44:2888:3888
server.3=83.1.12.45:2888:3888
# 发送到另外两台服务器
[root@83.1.12.43 conf]# scp -r /home/zookeeper root@83.1.12.44:/home
[root@83.1.12.43 conf]# scp -r /home/zookeeper root@83.1.12.44:/home
# 创建myid文件
echo "1" > /home/zookeeper/data/myid
# 切换服务器
[root@83.1.12.44 ~]# echo "2" > /home/zookeeper/data/myid
# 切换服务器
[root@83.1.12.45 ~]# echo "3" > /home/zookeeper/data/myid
# 依次启动服务
[root@83.1.12.43 ~]# cd /home/zookeeper/bin
[root@83.1.12.43 bin]# ./zkServer.sh start
[root@83.1.12.44 ~]# cd /home/zookeeper/bin
[root@83.1.12.44 bin]# ./zkServer.sh start
[root@83.1.12.45 ~]# cd /home/zookeeper/bin
[root@83.1.12.45 bin]# ./zkServer.sh start
# 查看端口
[root@83.1.12.43 ~]# netstat -tnlp
2181
# 常用命令
1. 启动ZK 服务:bin/zkServer.sh start
2. 查看ZK 服务状态:bin/zkServer.sh status
3. 停止ZK 服务:bin/zkServer.sh stop
4. 重启ZK 服务:bin/zkServer.sh restart
配置PG数据库
[root@83.1.12.43 ~]#
docker run -d \
--name postgres \
--restart always \
-p 5432:5432 \
-e POSTGRES_PASSWORD=Admin@9000 \
-v postgresql_data:/var/lib/postgresql/data \
postgres:17
# 采用命令行工具登陆 PostgreSQL
[root@83.1.12.43 ~]# docker exec -it postgres bash
psql
# 创建数据库
postgres=# CREATE DATABASE dolphinscheduler;
# 修改 {user} 和 {password} 为你希望的用户名和密码
postgres=# CREATE USER {user} PASSWORD {password};
postgres=# ALTER DATABASE dolphinscheduler OWNER TO {user};
# 退出 PostgreSQL
postgres=#\q
配置Dolphinscheduler
# 数据库配置参考官方文档
https://github.com/apache/dolphinscheduler/blob/3.1.9-release/docs/docs/zh/guide/howto/datasource-setting.md
# 上传 Dolphinscheduler到43服务器同时作为中控机使用
# 修改dolphinscheduler_env.sh
[root@83.1.12.43 ~]# tar xf apache-dolphinscheduler-3.1.9-bin.tar.gz
[root@83.1.12.43 ~]# mv apache-dolphinscheduler-3.1.9-bin /home/dolphinscheduler
[root@83.1.12.43 ~]# vim /home/dolphinscheduler/bin/env/dolphinscheduler_env.sh
# JAVA_HOME, will use it to start DolphinScheduler server
# JDK配置
export JAVA_HOME=${JAVA_HOME:-/usr/local/jdk-17.0.13}
# Database related configuration, set database type, username and password
# MySQL数据库配置
# 注意这里的数据库配置不要使用{} 官方文档写的{user}和{passwd}就是坑
export DATABASE=postgresql
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:postgresql://83.1.12.43:5432/dolphinscheduler"
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=Admin@9000
# DolphinScheduler server related configuration
export SPRING_CACHE_TYPE=${SPRING_CACHE_TYPE:-none}
export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-UTC}
export MASTER_FETCH_COMMAND_NUM=${MASTER_FETCH_COMMAND_NUM:-10}
# Registry center configuration, determines the type and link of the registry center
# zk注册中心
export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper}
export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-83.1.12.43:2181,83.1.12.44:2181,83.1.12.45:2181}
# Tasks related configurations, need to change the configuration if you use the related tasks.
# 其他环境配置(此处只配置了hadoop、hive,其他环境未部署)
# 如果你不使用某些任务类型,可以忽略不做配置,使用默认即可。比如Flink不使用,不做处理即可
export HADOOP_HOME=${HADOOP_HOME:-/home/soft/hadoop-3.3.6}
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/home/soft/hadoop-3.3.6/etc/hadoop}
export SPARK_HOME=${SPARK_HOME:-/home/soft/spark}
export PYTHON_LAUNCHER=${PYTHON_LAUNCHER:-/home/soft/python}
export HIVE_HOME=${HIVE_HOME:-/home/soft/hive-3.1.3}
export FLINK_HOME=${FLINK_HOME:-/home/soft/flink}
export DATAX_LAUNCHER=${DATAX_LAUNCHER:-/home/soft/datax/bin/python3}
export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PYTHON_LAUNCHER:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_LAUNCHER:$PATH
# 修改install_env.sh
[root@83.1.12.43 ~]# vim /home/dolphinscheduler/bin/env/install_env.sh
# 按照集群部署方案,内容如下:
# 集群节点
ips=${ips:-"83.1.12.43,83.1.12.44,83.1.12.45"}
# ssh登录的端口 由于我的机器是22222,根据实际情况填写
# ssh免密端口,使用默认
sshPort=${sshPort:-"22222"}
# master节点
masters=${masters:-"83.1.12.44"}
# worker节点
workers=${workers:-"83.1.12.43:default,83.1.12.44:default,83.1.12.45:default"}
# alert节点
alertServer=${alertServer:-"83.1.12.43"}
# api节点
apiServers=${apiServers:-"83.1.12.45"}
# dolphinscheduler实际安装路径
installPath=${installPath:-"/home/dolphinscheduler"}
# 官方文档用的deployUser用户,但是我没有创建所以这里直接使用root
# 部署dolphinscheduler使用的用户名
deployUser=${deployUser:-"root"}
# zk根节点
zkRoot=${zkRoot:-"/dolphinscheduler"}
# 初始化数据库
[root@83.1.12.43 ~]# cd /home/dolphinscheduler/
[root@83.1.12.43 dolphinscheduler]# sh ./tools/bin/upgrade-schema.sh
# 等待跑码完成
安装Dolphinscheduler
# 执行install.sh部署命令
[root@83.1.12.43 dolphinscheduler]# ./bin/install.sh
登录Apache DolphinScheduler 控制台
访问地址:http://83.1.12.45:12345/dolphinscheduler/ui/
用户名:admin
密码:dolphinscheduler123
启动/停止服务命令
第一次安装后,会自动启动所有服务。如有服务问题或者后续需要启停,命令如下。以下脚本都在43中控机 DolphinScheduler安装目录的bin下
# 一键停止集群所有服务
sh /home/dolphinscheduler/bin/stop-all.sh
# 一键启动集群所有服务
sh /home/dolphinscheduler/bin/start-all.sh
# 启/停 master 服务
sh /home/dolphinscheduler/bin/dolphinscheduler-daemon.sh start master-server
sh /home/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop master-server
# 启/停 worker 服务
sh /home/dolphinscheduler/bin/dolphinscheduler-daemon.sh start worker-server
sh /home/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop worker-server
# 启/停 api 服务
sh /home/dolphinscheduler/bin/dolphinscheduler-daemon.sh start api-server
sh /home/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop api-server
# 启/停 alert 服务
sh /home/dolphinscheduler/bin/dolphinscheduler-daemon.sh start alert-server
sh /home/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop alert-server