HTTP应用接入(不需要安装执行器)

更新时间:
复制为 MD 格式

本文介绍如何快速通过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列表和健康状态。image

非 Kubernetes 环境

用户在应用级别绑定一个或多个业务域名,该应用下所有HTTP任务共享这些域名配置。调度中心在任务触发时结合应用上下文和路由策略选择目标域名,实现HTTP任务的执行。image

准备工作

操作步骤

创建HTTP应用

  1. 登录XXL-JOB控制台,并在顶部菜单栏选择地域

  2. 单击目标实例,进入实例详情页。

  3. 在左侧导航栏,选择应用管理,单击创建应用

  4. 在创建应用对话框中,选择HTTP应用

  5. 填写应用信息:

    • AppName(必填):执行器注册时与应用关联的唯一标识,长度为1~64个字节,可包含英文字母、数字、下划线(_)或中划线(-),需以英文字母或数字开头。

    • 名称(必填):该应用的名称描述,长度为1~64个任意字符。

    • AccessToken(必填):执行器注册时的鉴权标识,长度为6~32个字符,可包含英文字母、数字。系统已自动生成,可修改。

  6. 点击确定按钮创建应用。

创建成功后,应用列表显示新创建的HTTP应用,执行器数量为0,需要接入执行器后才能使用。

接入执行器

Kubernetes环境通过Service接入

前提条件

已将应用部署在ACK/ACS/ACK Serverless集群,且集群与任务调度实例位于同一VPC下。

操作步骤
ACK上部署HTTP应用(可选)

如无可用的HTTP应用,可以参考以下操作步骤在ACK中部署一个nginx服务用于测试。

部署nginx服务

  1. 登录容器服务ACK控制台,并在顶部菜单栏选择地域。

  2. 选择目标集群,进入集群详情页。

  3. 在左侧导航栏,选择工作负载 > 无状态,单击使用镜像创建

  4. 填写应用基本信息:

    • 应用名称:如test-http-app

    • 命名空间:选择default或其他命名空间

    • 类型:选择无状态(Deployment)

    • 副本数量:如2(用于验证负载均衡)

  5. 配置容器:

    • 镜像名称anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

    • 容器端口80

    • 协议TCP

  6. 点击创建按钮,等待Deployment创建完成。

  7. 创建Kubernetes Service:

    • Deployment详情页,点击配置访问方式按钮。

    • 在创建Service对话框中,填写Service信息:

      • Service名称:如test-http-app-service

      • 类型:选择虚拟集群IP(ClusterIP)

      • 关联工作负载:选择步骤4中创建的Deployment

      • 服务端口80

      • 容器端口80

      • 协议TCP

    • 点击创建按钮,等待Service创建完成。

接入K8s服务
  1. 返回XXL-JOB控制台,进入应用管理页面。

  2. HTTP应用行中,单击接入按钮,弹出接入执行器配置对话框。

  3. 接入执行器对话框中,选择接入方式为接入K8s服务

  4. 选择接入信息:

    • 集群:选择部署应用的ACK集群

    • 命名空间:选择部署应用的命名空间(如default

    • 服务:选择步骤7中创建的Service(如test-http-app-service

  5. 点击确定按钮,等待接入完成。

接入成功后,应用列表显示该服务下的Pod列表,执行器数量从0变为实际Pod数量。

Kubernetes环境通过域名接入

前提条件

需要确保配置的域名可被XXL-JOB实例访问。

操作步骤
  1. 应用管理页面,在HTTP应用行中,单击接入按钮,弹出接入执行器配置对话框。

  2. 接入执行器对话框中,选择接入方式为录入域名

  3. 填写域名信息:

    • 执行器地址:填写可访问的HTTP服务域名,如https://httpbin.org\

    • 标签(可选):填写标签用于路由策略,如test-label

  4. 点击确定按钮,等待接入完成。

接入成功后,应用列表显示已接入的域名信息。

创建任务

  1. 在左侧导航栏,选择任务管理,单击创建任务

  2. 在创建任务对话框中,填写任务基本信息:

    • 任务名称(必填):如test-http-task

    • 关联应用(必填):选择已创建的HTTP应用

    • 任务类型(必填):选择HTTP

  3. 配置HTTP基本配置:

    • 接口Path(必填):请求接口的Path路径,以/开头,如//v1/hello

    • 请求方式(必填):选择GETPOSTPUTDELETE

    • 超时时间(必填):HTTP请求超时时间,单位为秒,如30

  4. 配置HTTP请求定义(可选):

    • Header:添加HTTP请求头,如Content-Type: application/json

    • Query:添加URL查询参数,如param1=value1&param2=value2

    • Body:当请求方式为POST、PUT等时,可配置请求体内容

  5. 配置HTTP响应定义:

    • 成功定义:选择成功响应解析模式

      • HTTP响应码:当HTTP响应状态码等于指定值时判定为成功,如200

      • 响应体JSON:通过JSON Path表达式判断响应体,如$.code等于200表示成功

      • 响应体Body:通过响应体内容判断,如包含特定字符串表示成功

    • 成功结果解析(可选):配置如何从响应中提取结果,支持JSON Path、正则表达式等方式

  6. 配置HTTP失败重试配置:

    • 任务失败重试次数:任务执行失败时的重试次数,如3

    • 任务失败重试间隔:重试间隔时间,单位为秒,如30

  7. 配置定时配置:

    • 时间类型:选择cron固定频率

    • cron表达式:如0 0 12 * * ?(每天12点执行)

    • 时区:选择时区

    • 日历:选择每天调度或指定日历

    • 开始时间:选择立即生效或指定开始时间

  8. 配置通知配置(可选):

    • 成功通知:任务执行成功时的通知方式

    • 失败报警:任务执行失败时的报警配置

    • 通知方式:选择短信、webhook、邮件、电话等

    • 通知对象:添加通知联系人

  9. 点击完成按钮,等待任务创建完成。

创建成功后,任务列表显示新创建的任务,状态为启用

测试任务

  1. 任务管理页面,找到创建的任务,单击运行一次按钮。

  2. 在确认对话框中,点击确定按钮,触发任务执行。

  3. 查看执行记录:

    • 在左侧导航栏,选择任务实例,查看任务执行记录。

    • 执行记录显示任务执行ID、执行状态、耗时、执行节点等信息。

    • 执行状态为成功时,表示任务执行成功。

  4. 查看执行日志:

    • 在任务实例列表中,单击任务执行ID日志按钮,查看详细日志。

    • 日志显示HTTP请求的详细信息,包括请求方法、URL、请求头、请求体等。

    • 日志显示HTTP响应的详细信息,包括响应状态码、响应头、响应体等。

  5. 查看事件中心:

    • 在左侧导航栏,选择事件中心,查看任务调度事件。

    • 事件中心显示完整的执行流程:Scheduled(调度)→ Running(运行中)→ Succeed(成功)或Failed(失败)。

常见问题

任务执行失败:no worker available

问题描述:任务执行时提示"资源不存在:no worker available"。

可能原因

  • ACK集群节点数为0,Pod无法调度运行。

  • Service接入的Pod未正常运行。

  • 域名接入的域名不可访问。

解决方案

  • 检查ACK集群节点状态,确保节点已就绪。

  • 检查DeploymentPod状态,确保Pod正常运行。

  • 检查Service配置,确保Service正确关联到Deployment。

  • 检查域名可访问性,确保域名可以正常访问。

任务类型选择框无法找到HTTP选项

问题描述:创建任务时,任务类型下拉框点击后未显示HTTP任务类型选项。

解决方案

  • 确保已选择HTTP应用作为关联应用。

  • 刷新页面后重试。

Service接入后执行器数量仍为0

问题描述:Service接入成功后,应用列表显示执行器数量仍为0。

可能原因

  • Service关联的Deployment未正常运行。

  • Pod未就绪或处于异常状态。

解决方案

  • 检查Deployment状态,确保副本数大于0Pod正常运行。

  • 检查Pod状态,确保Pod处于Running状态。

  • 等待Pod就绪后,执行器数量会自动更新。