Docker 安装 XXL-JOB
前言
初始化数据库
在 MySQL 执行 XXL-JOB GitHub 仓库中的 SQL 初始化脚本,初始化完成后一共有 8 张表。
表名称 | 描述 |
---|---|
xxl_job_group | 执行器信息表,用于维护任务执行器的信息 |
xxl_job_info | 调度扩展信息表,用于存储调度任务的扩展信息,比如任务分组、任务名、机器的地址等 |
xxl_job_lock | 任务调度锁表 |
xxl_job_log | 日志表,用于存储任务调度的历史信息,例如调度结果、执行结果、调度入参等 |
xxl_job_log_report | 日志报表,用于存储任务调度的日志报表,会在调度中心里的报表功能里使用到 |
xxl_job_logglue | 任务的 GLUE 日志,用于存储 GLUE 日志的更新历史变化,支持 GLUE 版本的回溯功能 |
xxl_job_registry | 执行器的注册表,用在维护在线的执行器与调度中心的地址信息 |
xxl_job_user | 系统的用户表,可以用表中默认的用户名与密码进行登录 |
XXL-JOB 安装
拉取镜像
1 | # 最新版本 |
启动容器
监听端口
XXL-JOB 启动后默认会监听 8080
端口,用于 Admin 的 HTTP 服务。
自定义参数
- GitHub 仓库中的配置项参考文件:
/xxl-job/xxl-job-admin/src/main/resources/application.properties
- 如需自定义 JVM 内存参数等配置,可通过 Docker 的
-e JAVA_OPTS
指定,参数格式-e JAVA_OPTS="-Xmx512m"
- 如需自定义 MySQL 等配置,可通过 Docker 的
-e PARAMS
指定,参数格式-e PARAMS="--key=value --key2=value2"
Docker 启动
1 | docker run -e PARAMS="--server.port=8080 --spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=root --xxl.job.accessToken=default_token" \ |
请自行更改 MySQL 数据库的连接信息,例如 IP、用户名和密码。
Docker-Compose 启动
1 | version: '3.5' |
请自行更改 MySQL 数据库的连接信息,例如 IP、用户名和密码。
登录控制台
浏览器访问 http://127.0.0.1:8080/xxl-job-admin
,默认登录的账号密码是 admin / 123456
。
访问令牌配置
为了提升系统的安全性,可要求任务调度中心和执行器进行安全性校验,双方的 AccessToken
匹配才允许通讯。任务调度中心和执行器,均可通过配置项 xxl.job.accessToken
进行 AccessToken
的设置。
- 启动 Docker 容器时,可以通过
-e PARAMS
指定AccessToken
1 | docker run -e PARAMS="--server.port=8080 --spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=root --xxl.job.accessToken=default_token" \ |
- 在 SpringBoot 项目中,可以使用以下内容配置执行器的
AccessToken
1 | xxl: |
提示,如果任务调度中心和执行器要实现正常通讯,只有两种设置
- 第一种:任务调度中心和执行器,设置了相同的
AccessToken
。 - 第二种:任务调度中心和执行器,均不设置
AccessToken
,即关闭安全性校验。 - 特别注意:XXL-JOB 从
v.2.3.1
版本开始,调度通讯默认启用AccessToken
,且默认的AccessToken
是default_token
。
更改登录密码
XXL-JOB 的用户密码采用 MD5 算法 32 位小写加密。由于 MD5 是摘要算法,不可逆向的,每次登录时需要将密码通过相同的 MD5 算法加密后对比数据库是否一致,所以想修改密码只能修改数据库表的字段值。使用下述 Java 代码将新密码通过 MD5 算法加密,然后更改到数据库的 xxl_job_user
表即可。
特别注意
如果修改的新密码在加密前长度超过 18 位,仍然会登录失败,原因是 XXL-JOB 的前端页面对输入框输入的密码做了截取,只保留了 18 位字符并传到后端,因此会导致输入正确的密码后仍然登录失败,因此新密码的最大长度只支持 18 位。
1 | import org.springframework.util.DigestUtils; |