當 xxl-job 遇上 docker → 它暈了,我也亂了!

2022-11-15 12:02:40

開心一刻

  公交車上,一位老大爺睡著了,身體依靠在背後的一位年輕小夥子身上

  小夥子一直保持站姿十幾分鍾,直到老人下車

  這位在校大學生,接受採訪時說:」當時就覺得背後這個人很輕盈,以為是個姑娘!「

前提準備

  對 xxl-job、docker 要有基本的瞭解

  xxl-job

  直接看官網:xxl-ob,你想要的和不想要的,官網都有詳細說明

  樓主也做了簡單嘗試:分散式任務排程平臺 → XXL-JOB 初探分散式任務排程平臺 → XXL-JOB 實戰

  範例版本: 2.1.0 

  docker

  網上資料很多,b站視訊也挺多的(推薦:尚矽谷2022版Docker實戰教學(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-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 與宿主機的埠對映