xxl-job 执行器docker部署

XXL-JOB 是一个优秀的分布式任务调度平台,广泛应用于企业级任务调度场景。它具有轻量级、易扩展、高可靠等特点,支持多种任务调度模式。

在考虑将执行使用docker方式部署时,遇到一个问题。执行器可以成功注册,但是调度时会报错msg:xxl-job remoting error(Connection refused (Connection refused))。

从注册地址可以发现,地址并非执行器所在机器的地址,而是docker网卡的地址,所以调度器访问肯定是访问不通的。

在原始代码的config中可以发现,作者写了容器或多网卡配置config的具体操作:

/**
     * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
     *
     *      1、引入依赖:
     *          <dependency>
     *             <groupId>org.springframework.cloud</groupId>
     *             <artifactId>spring-cloud-commons</artifactId>
     *             <version>${version}</version>
     *         </dependency>
     *
     *      2、配置文件,或者容器启动变量
     *          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
     *
     *      3、获取IP
     *          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
     */

经过尝试,发现还是不能成功调度。(可能是我的方式不对,有使用这种方式成功部署的,可以分享一下自己的经验,多谢!)

我们想要成功调度,无疑是需要调度器能访问到执行器。按照这个思路,我们可以将容器内执行器的port暴露出来,可以通过宿主机的IP+端口访问到执行器。

xxl:
  job:
    admin:
      addresses: http://xxxx.xxxx.xxxx.xxxx:31002/xxl-job-admin
    accessToken: default_token
    executor:
      ip:
      appname: app_name
      address:
      port: 10001
      logpath: /data/applogs/xxl-job/jobhandler
      logretentiondays: 30

docker镜像的制作这里就不在赘述了,上面的配置文件中我们给执行器的端口是10001,因此我们的容器的启动脚本应该是:

docker run -it -d -p 10003:10001 --name app_name --restart=unless-stopped app_iamges:1.0

成功启动容器后,我们需要在调度界面创建一个执行器,注册方式为手动录入。注册地址为:http://宿主机IP:10003,即可成功调度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值