将自建XXLJOB迁移至阿里云任务调度平台
本文将介绍如何将现有开源的XXL-JOB任务导入阿里云任务调度平台中,无需修改任何代码,即可完成任务的重新部署,实现高效的任务调度和管理。
方案概览
您可以借助阿里云提供的导出工具,从开源XXL-JOB中直接导出任务配置,再导入迁移至云上实例中。大致分为以下步骤:
(可选)云监控创建报警联系人:创建报警联系人,接收系统健康状态和性能指标的报警信息。
提前创建好同名应用:手动创建应用,确保其名称和开源中AppName一致。
从自建XXL-JOB导出信息:从自建的XXL-JOB系统中导出任务信息和配置。
导入到阿里云XXL-JOB:任务信息和配置导入阿里云的XXL-JOB,实现任务信息和配置信息的迁移及管理。
重新部署应用:完成任务导入后,将XXL-JOB应用的重新部署,接入阿里云XXL-JOB平台,确保应用能够接入并正常运行。
步骤一:(可选)云监控创建报警联系人
如果您已经有云监控报警联系人,则可跳过该步骤。
登录云监控报警联系人页面,创建联系人,填写姓名、报警通知服务的区域、配置报警信息(支持手机、邮箱、钉钉、飞书、企微和Webhook)。
创建完成后,需要点击激活才能使用,如下:
步骤二:提前创建好同名应用
登录XXL-JOB控制台,并在顶部菜单栏选择地域。
进入指定XXL-JOB实例,在左侧菜单栏,选择应用管理,单击创建应用。
手动创建应用,需保持和开源中的AppName一致。
步骤三:从自建XXL-JOB导出信息
目前支持XXL-JOB2.2.x
、2.3.x
、2.4.x
三个版本。在导出时,请选择相应的版本进行操作。
下载导出工具。
解压工具包,在application.properties文件中进行导出配置。
说明建议把云监控创建的报警联系人(xxl-job.alarm.users)和报警方式(xxl-job.alarm.channel)在application.properties中进行配置。
在application.properties配置文件中,配置对应xxl-job任务所在的数据库信息。
在application.properties配置文件中,配置对应要导出的app-name(该步骤可选,不设置的情况下导出所有任务分组)。
### xxl-job, datasource datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai datasource.username=root datasource.password=123456 datasource.driver-class-name=com.mysql.cj.jdbc.Driver #导出任务过滤条件配置项 #过滤指定任务应用组app-name,多个以","分割(可选,不设置的情况下导出所有任务分组) #xxl-job.filter.app-name=xxl-job-executor-sample1,xxl-job-executor-sample2 #过滤指定任务描述,包含指定字符串(可选) #xxl-job.filter.job-desc=test #过滤指定任务作者信息,包含指定字符串 (可选) #xxl-job.filter.author=test #过滤指定触发状态的任务配置,不配置时导出所有状态任务(可选) #xxl-job.filter.trigger-status=0 #分页读取:按任务id排序,读取任务的启始位置,默认0(可选) #xxl-job.filter.page-start=0 #分页读取:按任务id排序,读取任务的启始位置后多少行记录,默认无限大(可选) #xxl-job.filter.page-size=10 #导出后任务默认状态值,0:禁用, 1:启用,默认为任务原始状态 (可选) #xxl-job.default.job-status=0 #任务报警联系人云监控名字,多个以","分割 (可选) #xxl-job.alarm.users=张三,李四 #任务报警联系通道,sms:短信, mail:邮件, phone:电话, webhook:钉钉/飞书/企业微信,多个以","分割(可选) #xxl-job.alarm.channel=sms,mail
执行
./start.sh $version
命令运行导出操作。若不传入version,默认执行2.2.0版本。# sh start.sh 默认执行2.2.0版本 sh start.sh 2.3.0
导出操作完成后,在当前目录下获得 xxljob_version_*******.json的任务配置文件(仅Bean模式的任务配置信息)。
以2.2.0版本为例,导出格式如下:
最外层结构包括version、type、kind、content等字段,其中content为导出的具体任务内容。
在content中,以应用app进行划分,分别导出各应用下的所有任务;其中每一个元素包括appName和jobConfigInfo两个字段。
jobConfigInfo是一个数组类型,其中包括在对应应用下的任务信息列表,任务信息字段包括name、jobType、timeConfig等。
步骤四:导入到阿里云XXL-JOB
将导出后的 JSON 文件直接上传至阿里云XXL-JOB,即可轻松完成批量任务的导入。
登录XXL-JOB控制台,并在顶部菜单栏选择地域。进入指定XXL-JOB实例,在左侧菜单栏,选择任务管理,单击导入任务。
导入任务表单选项描述:
相同任务:默认为覆盖,即当导入的任务在系统中已存在相同任务名时,直接覆盖原有任务的字段信息;若选择跳过,则跳过已存在的任务,不进行操作。
是否自动创建应用:默认是,即当导入任务时,若json文件中的应用在系统中不存在,则自动创建该应用,并将该应用下的所有任务导入;若选择否,若系统中不存在对应的应用,则json文件中该应用下的所有任务都不会导入。
选择导出的任务配置文件执行导入,即可完成XXL-JOB任务配置信息至阿里云XXL-JOB任务配置信息同步。
步骤五:重新部署应用
在左侧导航栏的应用管理页面,单击目标应用操作列的接入配置。
按照接入方式2:通过-D参数重启应用(不需要修改代码和配置文件),启动XXL-JOB应用时,通过启动命令增加
-D
参数的形式,重启应用。接入成功后,在左侧导航栏的应用管理页面,可以看到执行器数量。