本文介绍如何快速通过MSE XXL-JOB接入HTTP应用,实现统一的HTTP任务调度。
功能概述
使用XXL-JOB接入HTTP应用,可以实现通过HTTP协议触发任务,而无需安装执行器或引入SDK,满足多语言框架、无侵入接入及混合部署形态下的统一任务管控需求。适用于外部系统对接、Serverless 函数触发、传统应用调度及跨 VPC 环境下的任务触发等场景。
方案优势
无侵入接入:无需在业务系统部署Agent,通过HTTP协议即可接入任务调度。
跨平台兼容:支持任何提供HTTP接口的服务,不限编程语言和框架。
部署灵活:支持Kubernetes与非Kubernetes环境,支持传统ECS、物理机等多种部署形态。
配置简单:只需录入HTTP服务地址,即可完成执行器接入。
工作原理
Kubernetes 环境
在Kubernetes 环境中,用户在应用下绑定集群中某个命名空间的 Service。该Service下所有Pod实例作为应用的潜在执行节点,由调度中心通过Kubernetes服务发现模块实时感知Pod列表和健康状态。
非 Kubernetes 环境
用户在应用级别绑定一个或多个业务域名,该应用下所有HTTP任务共享这些域名配置。调度中心在任务触发时结合应用上下文和路由策略选择目标域名,实现HTTP任务的执行。
准备工作
操作步骤
创建HTTP应用
登录XXL-JOB控制台,并在顶部菜单栏选择地域。
单击目标实例,进入实例详情页。
在左侧导航栏,选择应用管理,单击创建应用。
在创建应用对话框中,选择HTTP应用。
填写应用信息:
AppName(必填):执行器注册时与应用关联的唯一标识,长度为1~64个字节,可包含英文字母、数字、下划线(_)或中划线(-),需以英文字母或数字开头。
名称(必填):该应用的名称描述,长度为1~64个任意字符。
AccessToken(必填):执行器注册时的鉴权标识,长度为6~32个字符,可包含英文字母、数字。系统已自动生成,可修改。
点击确定按钮创建应用。
创建成功后,应用列表显示新创建的HTTP应用,执行器数量为0,需要接入执行器后才能使用。
接入执行器
Kubernetes环境通过Service接入
前提条件
已将应用部署在ACK/ACS/ACK Serverless集群,且集群与任务调度实例位于同一VPC下。
操作步骤
在ACK上部署HTTP应用(可选)
如无可用的HTTP应用,可以参考以下操作步骤在ACK中部署一个nginx服务用于测试。
接入K8s服务
返回XXL-JOB控制台,进入应用管理页面。
在HTTP应用行中,单击接入按钮,弹出接入执行器配置对话框。
在接入执行器对话框中,选择接入方式为接入K8s服务。
选择接入信息:
集群:选择部署应用的ACK集群
命名空间:选择部署应用的命名空间(如
default)服务:选择步骤7中创建的Service(如
test-http-app-service)
点击确定按钮,等待接入完成。
接入成功后,应用列表显示该服务下的Pod列表,执行器数量从0变为实际Pod数量。
非Kubernetes环境通过域名接入
前提条件
需要确保配置的域名可被XXL-JOB实例访问。
操作步骤
在应用管理页面,在HTTP应用行中,单击接入按钮,弹出接入执行器配置对话框。
在接入执行器对话框中,选择接入方式为录入域名。
填写域名信息:
执行器地址:填写可访问的HTTP服务域名,如
https://httpbin.org\标签(可选):填写标签用于路由策略,如
test-label
点击确定按钮,等待接入完成。
接入成功后,应用列表显示已接入的域名信息。
创建任务
在左侧导航栏,选择任务管理,单击创建任务。
在创建任务对话框中,填写任务基本信息:
任务名称(必填):如
test-http-task关联应用(必填):选择已创建的HTTP应用
任务类型(必填):选择HTTP
配置HTTP基本配置:
接口Path(必填):请求接口的Path路径,以
/开头,如/或/v1/hello请求方式(必填):选择
GET、POST、PUT、DELETE等超时时间(必填):HTTP请求超时时间,单位为秒,如
30
配置HTTP请求定义(可选):
Header:添加HTTP请求头,如
Content-Type: application/jsonQuery:添加URL查询参数,如
param1=value1¶m2=value2Body:当请求方式为POST、PUT等时,可配置请求体内容
配置HTTP响应定义:
成功定义:选择成功响应解析模式
HTTP响应码:当HTTP响应状态码等于指定值时判定为成功,如
200响应体JSON:通过JSON Path表达式判断响应体,如
$.code等于200表示成功响应体Body:通过响应体内容判断,如包含特定字符串表示成功
成功结果解析(可选):配置如何从响应中提取结果,支持JSON Path、正则表达式等方式
配置HTTP失败重试配置:
任务失败重试次数:任务执行失败时的重试次数,如
3任务失败重试间隔:重试间隔时间,单位为秒,如
30
配置定时配置:
时间类型:选择
cron或固定频率cron表达式:如
0 0 12 * * ?(每天12点执行)时区:选择时区
日历:选择每天调度或指定日历
开始时间:选择立即生效或指定开始时间
配置通知配置(可选):
成功通知:任务执行成功时的通知方式
失败报警:任务执行失败时的报警配置
通知方式:选择短信、webhook、邮件、电话等
通知对象:添加通知联系人
点击完成按钮,等待任务创建完成。
创建成功后,任务列表显示新创建的任务,状态为启用。
测试任务
在任务管理页面,找到创建的任务,单击运行一次按钮。
在确认对话框中,点击确定按钮,触发任务执行。
查看执行记录:
在左侧导航栏,选择任务实例,查看任务执行记录。
执行记录显示任务执行ID、执行状态、耗时、执行节点等信息。
执行状态为成功时,表示任务执行成功。
查看执行日志:
在任务实例列表中,单击任务执行ID或日志按钮,查看详细日志。
日志显示HTTP请求的详细信息,包括请求方法、URL、请求头、请求体等。
日志显示HTTP响应的详细信息,包括响应状态码、响应头、响应体等。
查看事件中心:
在左侧导航栏,选择事件中心,查看任务调度事件。
事件中心显示完整的执行流程:Scheduled(调度)→ Running(运行中)→ Succeed(成功)或Failed(失败)。
常见问题
任务执行失败:no worker available
问题描述:任务执行时提示"资源不存在:no worker available"。
可能原因:
ACK集群节点数为0,Pod无法调度运行。
Service接入的Pod未正常运行。
域名接入的域名不可访问。
解决方案:
检查ACK集群节点状态,确保节点已就绪。
检查Deployment和Pod状态,确保Pod正常运行。
检查Service配置,确保Service正确关联到Deployment。
检查域名可访问性,确保域名可以正常访问。
任务类型选择框无法找到HTTP选项
问题描述:创建任务时,任务类型下拉框点击后未显示HTTP任务类型选项。
解决方案:
确保已选择HTTP应用作为关联应用。
刷新页面后重试。
Service接入后执行器数量仍为0
问题描述:Service接入成功后,应用列表显示执行器数量仍为0。
可能原因:
Service关联的Deployment未正常运行。
Pod未就绪或处于异常状态。
解决方案:
检查Deployment状态,确保副本数大于0且Pod正常运行。
检查Pod状态,确保Pod处于Running状态。
等待Pod就绪后,执行器数量会自动更新。