XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展、开箱即用。
更多介绍,请访问官网:分布式任务调度平台XXL-JOB
一、任务调度中心(基于docker)【Version 2.4.0】
前提条件:任务调度中心(xxl-job admin)依赖于 mysql,所以必须要安装mysql才行!安装mysql有2种方式:docker部署或者在线安装或者编译安装部署。具体操作请自行解决。
主要实现方式与官方推荐略有不同,这里将application.properties
配置文件映射到容器内部, 然后利用spring.config.location
覆盖默认的启动配置文件
1. 数据库脚本下载并在数据库中执行
wget https://github.com/xuxueli/xxl-job/raw/2.4.0/doc/db/tables_xxl_job.sql
如何执行不在此处赘述。
2. 拉取镜像
docker hub官方镜像地址: xxl-job-admin
docker pull xuxueli/xxl-job-admin
执行会报错:
Using default tag: latest Error response from daemon: manifest for xuxueli/xxl-job-admin:latest not found
为什么呢?因为官方没有打 latest 的tag标签,所以会提示下载失败!那怎么下载呢?必须制定版本才可以!截至本文发布时最新版本是2.4.0
那么下载命令为:
docker pull xuxueli/xxl-job-admin:2.4.0
也可在后续docker启动时自动拉取镜像。
3. 下载application.properties
wget https://github.com/xuxueli/xxl-job/raw/2.4.0/xxl-job-admin/src/main/resources/application.properties
4. 修改application.properties
主要修改服务启动的端口(使用默认8080的话可不修改),mysql的连接信息,SMTP的连接信息(可不修改如果不需要SMTP发送邮件的话)
5. 启动容器
docker run -d --name xxl-job-admin \-v [修改后的配置文件位置]:/application.properties \-p 8008:8080 --network=1panel-network \-e PARAMS='--spring.config.location=/application.properties' \--restart always \xuxueli/xxl-job-admin:2.4.0
下面是对每个参数的解释:
-d
:在后台运行容器(以守护态模式运行)。--name xxl-job-admin
:指定容器的名称为"xxl-job-admin"。-v [修改后的配置文件位置]:/application.properties
:将修改后的配置文件挂载到容器中的/application.properties
路径,可以通过这个文件来配置xxl-job-admin应用。-p 8008:8080
:端口映射,将主机的8008端口映射到容器的8080端口,这样你就可以通过主机的8008端口访问xxl-job-admin应用。--network=1panel-network
:将容器连接到名为"1panel-network"的网络,这样可以与其他容器进行通信。-e PARAMS='--spring.config.location=/application.properties'
:设置环境变量PARAMS
,其中--spring.config.location=/application.properties
是指使用指定的配置文件启动xxl-job admin。--restart always
,当容器意外退出或宿主机重启时,Docker将自动重新启动xxl-job-admin
容器xuxueli/xxl-job-admin:2.4.0
:指定要运行的Docker镜像,版本号为2.4.0,这是xxl-job-admin应用的官方镜像。
访问http://ip:8008/xxl-job-admin (如果修改过配置则访问 http://ip:[server.port]/[server.context-path])即可,默认用户名为admin,密码为123456
二、执行器【Version 2.4.0】
1. 下载Source并编译成jar包
2. 安装openjdk环境 [Ubuntu 2202]
运行下面代码即可
sudo apt install openjdk-11-jdk -y
完成后,可以通过检查 Java 版本来验证:
java -version
输出这种类型表示成功了
openjdk 19.0.2 2023-01-17
OpenJDK Runtime Environment (build 19.0.2+7-Ubuntu-0ubuntu322.04)
OpenJDK 64-Bit Server VM (build 19.0.2+7-Ubuntu-0ubuntu322.04, mixed mode, sharing)
3. 下载并根据实际情况修改
wget https://github.com/xuxueli/xxl-job/raw/2.4.0/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties
主要修改xxl-job admin的地址,以及执行器的名字
4. 运行
nohup java -jar ./xxl-job-executor-sample-springboot.jar --spring.config.location=./application.properties &
下面是对以上命令行的解释:
nohup
:nohup命令可以让程序在后台运行,即使当前终端会话关闭,程序也会继续运行。java -jar ./xxl-job-executor-sample-springboot.jar
:这是运行Java应用程序的命令。使用java -jar
来指定要运行的JAR文件,这里是xxl-job-executor-sample-springboot.jar
。--spring.config.location=./application.properties
:通过这个参数指定应用程序使用的配置文件路径为./application.properties
。可以根据实际情况修改配置文件路径。&
:这个符号表示将程序放到后台运行,允许继续在终端中执行其他命令。
5. 验证
执行器中管理中对应节点已经自动注册,接下来就可以安排定时排程去运行shell脚本等了。
完成xxl-job分布式任务调度系统初步部署,后续可以根据情况添加更多的执行器和节点,也可以根据实际情况添加xxl-job admin任务调度中心的HA部署等。文章中还有很多自己还没搞明白的,需要继续钻研。如有瑕疵非常抱歉。