• 当 xxl-job 遇上 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 模式;这里先混个眼熟,注意IP 172.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 执行器镜像

      自动注册上来的IP 172.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 部署,前面已经讲过了

      

    自动注册IP问题

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

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

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

      这可不是我瞎说, github 上 xxl-job 有很多相关的 issue (191630112116581668

      许大大在源码中也给出了解决方案, 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 )?

  • 相关阅读:
    Word控件Spire.Doc 【表单域】教程(五):如何在 C# 中更新 Ask 字段
    使用 PMML 实现模型融合及优化技巧
    解决Qt中文乱码
    Vue 使用vue-pdf 显示pdf文件 切换页面 缩放 全屏 自动播放等
    元气森林推“有矿”,农夫山泉们跟着“卷”?
    【engine】回调和回调容器
    【云原生之Docker实战】使用Docker部署Solo个人博客站点
    【周赛+双周赛20220904】T4
    【C++】友元类 ( 友元类简介 | 友元类声明 | 友元类单向性 | 友元类继承性 | 友元类作用 | 友元类和友元函数由来 | Java 反射机制 | C / C++ 编译过程 )
    【虹科直播回顾】笔记及问题解答 | AR解决方案助力数字工厂降本增效
  • 原文地址:https://blog.csdn.net/jh035512/article/details/127956887