首页IT科技job for docker.service canceled(当 xxl-job 遇上 docker → 它晕了,我也乱了!)

job for docker.service canceled(当 xxl-job 遇上 docker → 它晕了,我也乱了!)

时间2025-08-02 21:34:26分类IT科技浏览7193
导读:开心一刻 公交车上,一位老大爷睡着了,身体依靠在背后的一位年轻小伙子身上...

开心一刻

  公交车上                 ,一位老大爷睡着了                         ,身体依靠在背后的一位年轻小伙子身上

  小伙子一直保持站姿十几分钟         ,直到老人下车

  这位在校大学生         ,接受采访时说:                 ”当时就觉得背后这个人很轻盈                         ,以为是个姑娘!“

前提准备

  对 xxl-job                 、docker 要有基本的了解

  xxl-job

  直接看官网:xxl-ob                 ,你想要的和不想要的         ,官网都有详细说明

  楼主也做了简单尝试:分布式任务调度平台 → XXL-JOB 初探                          、分布式任务调度平台 → XXL-JOB 实战

  示例版本:2.1.0

  docker

  网上资料很多                          ,b站视频也挺多的(推荐:尚硅谷2022版Docker实战教程(docker教程天花板))

  楼主就不做介绍了(主要是楼主不知道呀!)

admin 和 executor 都单独部署

  部署很简单                 ,我就不具体演示了(不是主角,没戏份!)

  直接看效果

  192.168.8.222 上部署xxl-job-admin

  192.168.8.223 上部署xxl-job-executor

  是不是很简单?

  效果也和我们预想的一样

admin 单独部署                          ,executor通过 docker 部署

  192.168.8.223 安装docker                          ,安装过程我就不演示了,直接看效果

  docker版本20.10.21

  大家注意                 ,伴随着docker的运行                          ,多了一个网卡配置信息

  有兴趣的可以查阅下:docker网络的bridge模式;这里先混个眼熟         ,注意IP172.17.0.1

  executor 和 docker 并存

  此时我们重启下xxl-job-executor                 ,然后在xxl-job-admin重新注册下执行器

  自动注册上来的机器IP是172.17.0.1                         ,而非192.168.8.223         ,那么伴随而来的问题就是:xxl-job-admin访问不通xxl-job-executor

  我们改成手动注册         ,看看能否访问通

  可以看到                         ,手动注册不受docker的影响                 ,能正常访问通

  而自动注册则受了docker的影响         ,注册的IP不对                          ,至于如何解决                 ,请继续往下看

  executor 通过 docker 部署

  如何打将xxl-job-executor打成docker镜像,不是本文的内容                          ,所以省略不演示(言外之意是需要大家自行去学习!)

  我们直接run执行器镜像

  自动注册上来的IP172.17.0.2                          ,很明显,问题(xxl-job-admin访问不通xxl-job-executor)再次出现

  那改成手动注册试试

  哟嚯                 ,xxl-job-admin还是访问不通xxl-job-executor

  放弃抵抗吧                          ,别挣扎了

  少年莫急         ,我们的xxl-job-executor是通过docker部署的                 ,你有把docker容器的9999端口映射到宿主机吗

  (由于换了地方                         ,IP也跟着变了         ,192.168.8.222-> 10.5.13.222         ,192.168.8.223 ->10.5.13.223

  重启下sample-executor:1.0

  我就问你                         ,是不是通了?

admin 和 executor 都通过 docker 部署

  executor通过docker部署                 ,前面已经讲过了

  admin通过docker部署         ,请看我表演

  自动注册还要试吗?

自动注册IP问题

  前面说了那么多                          ,最终回归到一个问题:自动注册的IP为什么不是Docker宿主机的IP

  不管是xxl-job-admin还是xxl-job-executor                 ,都是直接用的官方的代码,楼主可一行都没改

  那肯定是xxl-job自动注册没有做好docker的兼容呗

  这可不是我瞎说                          ,githubxxl-job有很多相关的issue(191        、630                 、1121                          、1658        、1668)

  许大大在源码中也给出了解决方案                          ,xxl-job-executor-sample-springboot有个类:XxlJobConfig.java,其中有如下说明

  那试试呗                 ,我们对xxl-job-executor-sample-springboot进行改造

  引入依赖

  修改XxlJobConfig.java

  添加配置

  executor 和 docker 并存

  docker运行                          ,但executor不通过docker部署

  自动注册的ip竟然是:127.0.0.1         ,莫非要通过docker部署?

  executor 通过 docker 部署

  镜像我已经打包好:sample-executor:1.1                 ,我们来看下效果

  自动注册的ip是172.17.0.2                         ,不是宿主机ip:10.5.13.223         ,莫非docker镜像打的有问题?

  我们进容器内看看日志

  我们再看看容器内的网卡配置信息

  请问这如何获取宿主机IP(10.5.13.223)?

  许大欺我?

总结

  1         、就目前来看         ,一旦xxl-job-executor遇上Docker                         ,自动注册就不对了

    知道如何处理的小伙伴                 ,欢迎评论区留言

  2                          、自动注册不行了         ,那就用手动注册呗

  3                 、大家自己验证的时候                          ,一定要注意docker与宿主机的端口映射

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
testin众测平台(Testing Applications with WebTest¶) macos批量重命名(mac os x10.10系统如何批量修改文名)