使用 Docker 部署 XXL-JOB 详细指南
XXL-JOB 是一个轻量级分布式任务调度平台,广泛应用于定时任务调度、分布式任务处理等场景。通过 Docker 部署 XXL-JOB 可以快速搭建一个高可用、易扩展的任务调度系统。本文将详细介绍如何使用 Docker 部署 XXL-JOB,并讲解如何根据需求配置 XXL-JOB。
目录
- XXL-JOB 简介
- Docker 部署 XXL-JOB
- 拉取 XXL-JOB 镜像
- 运行 XXL-JOB 容器
- 持久化配置
- 网络配置
- XXL-JOB 配置文件详解
- 常用配置项
- 自定义配置文件
- 高级配置与优化
- 集群部署
- 数据库配置
- 任务调度优化
- 监控与维护
- 使用 XXL-JOB 管理界面
- 日志管理
- 案例实战
- 部署 XXL-JOB 调度中心
- 部署 XXL-JOB 执行器
XXL-JOB 简介
XXL-JOB 是一个分布式任务调度平台,核心设计目标是开发简单、易扩展、易维护。它支持多种任务调度模式(如定时任务、Cron 表达式任务等),并提供了丰富的管理界面和监控功能。
Docker 部署 XXL-JOB
拉取 XXL-JOB 镜像
XXL-JOB 官方提供了 Docker 镜像,可以直接从 Docker Hub 拉取。
拉取调度中心镜像
docker pull xuxueli/xxl-job-admin:2.3.0
拉取执行器镜像
docker pull xuxueli/xxl-job-executor-sample:2.3.0
运行 XXL-JOB 容器
1. 运行调度中心容器
调度中心是 XXL-JOB 的核心组件,负责任务调度和管理。
docker run -d \--name xxl-job-admin \-p 8080:8080 \-e PARAMS="--spring.datasource.url=jdbc:mysql://<mysql-host>:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \--spring.datasource.username=<username> \--spring.datasource.password=<password>" \xuxueli/xxl-job-admin:2.3.0
-d
:后台运行容器。--name xxl-job-admin
:指定容器名称。-p 8080:8080
:将主机的 8080 端口映射到容器的 8080 端口。-e PARAMS
:设置环境变量,配置数据库连接信息。<mysql-host>
:MySQL 数据库地址。<username>
:MySQL 用户名。<password>
:MySQL 密码。
2. 运行执行器容器
执行器是任务的执行单元,负责接收调度中心的任务并执行。
docker run -d \--name xxl-job-executor \-e PARAMS="--xxl.job.admin.addresses=http://<admin-host>:8080/xxl-job-admin \--xxl.job.executor.appname=xxl-job-executor-sample \--xxl.job.executor.ip= \--xxl.job.executor.port=9999" \xuxueli/xxl-job-executor-sample:2.3.0
-d
:后台运行容器。--name xxl-job-executor
:指定容器名称。-e PARAMS
:设置环境变量,配置调度中心地址和执行器信息。<admin-host>
:调度中心地址。
持久化配置
为了持久化 XXL-JOB 的数据(如任务日志、调度记录等),可以将数据存储到 MySQL 数据库。
1. 创建 MySQL 数据库
在 MySQL 中创建数据库 xxl_job
,并导入 XXL-JOB 提供的 SQL 脚本。
mysql -h <mysql-host> -u <username> -p<password> -e "CREATE DATABASE xxl_job;"
mysql -h <mysql-host> -u <username> -p<password> xxl_job < /path/to/xxl-job.sql
/path/to/xxl-job.sql
:XXL-JOB 提供的 SQL 脚本路径。
2. 配置调度中心连接数据库
在调度中心启动时,通过环境变量配置数据库连接信息。
网络配置
如果调度中心和执行器部署在不同的主机上,需要确保网络互通。
1. 调度中心地址
执行器需要配置调度中心的地址:
--xxl.job.admin.addresses=http://<admin-host>:8080/xxl-job-admin
2. 执行器地址
调度中心需要知道执行器的地址和端口:
--xxl.job.executor.ip=
--xxl.job.executor.port=9999
XXL-JOB 配置文件详解
常用配置项
以下是一些常用的 XXL-JOB 配置项:
spring.datasource.url
:数据库连接 URL。spring.datasource.username
:数据库用户名。spring.datasource.password
:数据库密码。xxl.job.admin.addresses
:调度中心地址。xxl.job.executor.appname
:执行器名称。xxl.job.executor.ip
:执行器 IP 地址。xxl.job.executor.port
:执行器端口。
自定义配置文件
可以通过挂载配置文件的方式自定义 XXL-JOB 的配置。
1. 创建配置文件
在主机上创建配置文件 application.properties
:
spring.datasource.url=jdbc:mysql://<mysql-host>:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=<username>
spring.datasource.password=<password>
xxl.job.admin.addresses=http://<admin-host>:8080/xxl-job-admin
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=
xxl.job.executor.port=9999
2. 挂载配置文件
启动容器时挂载配置文件:
docker run -d \--name xxl-job-admin \-p 8080:8080 \-v /path/to/application.properties:/app/config/application.properties \xuxueli/xxl-job-admin:2.3.0
高级配置与优化
集群部署
为了提高系统的可用性,可以部署多个调度中心和执行器。
1. 调度中心集群
部署多个调度中心实例,并使用 Nginx 进行负载均衡。
2. 执行器集群
部署多个执行器实例,并在调度中心中配置相同的 appname
。
数据库配置
使用高性能的 MySQL 数据库,并优化数据库连接池配置。
1. 数据库连接池
在 application.properties
中配置数据库连接池:
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=10
2. 数据库索引
为任务日志表和调度记录表添加索引,提高查询性能。
任务调度优化
1. 任务分片
对于大数据量任务,可以使用任务分片功能,将任务拆分为多个子任务并行执行。
2. 任务超时
设置任务超时时间,避免任务长时间占用资源。
监控与维护
使用 XXL-JOB 管理界面
XXL-JOB 提供了丰富的管理界面,可以查看任务执行情况、调度日志、执行器状态等。
访问 http://<admin-host>:8080/xxl-job-admin
,使用默认用户名 admin
和密码 123456
登录。
日志管理
XXL-JOB 的任务日志存储在数据库中,可以通过管理界面查看日志详情。
案例实战
部署 XXL-JOB 调度中心
1. 启动调度中心容器
docker run -d \--name xxl-job-admin \-p 8080:8080 \-e PARAMS="--spring.datasource.url=jdbc:mysql://<mysql-host>:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \--spring.datasource.username=<username> \--spring.datasource.password=<password>" \xuxueli/xxl-job-admin:2.3.0
2. 访问管理界面
打开浏览器,访问 http://<admin-host>:8080/xxl-job-admin
。
部署 XXL-JOB 执行器
1. 启动执行器容器
docker run -d \--name xxl-job-executor \-e PARAMS="--xxl.job.admin.addresses=http://<admin-host>:8080/xxl-job-admin \--xxl.job.executor.appname=xxl-job-executor-sample \--xxl.job.executor.ip= \--xxl.job.executor.port=9999" \xuxueli/xxl-job-executor-sample:2.3.0
2. 在管理界面注册执行器
登录调度中心管理界面,手动注册执行器。
通过以上步骤,你可以快速部署 XXL-JOB 调度平台,并根据需求进行配置和优化。继续实践和探索,你将能够更高效地使用 XXL-JOB 管理分布式任务!