公交車上,一位老大爺睡著了,身體依靠在背后的一位年輕小伙子身上
創(chuàng)新互聯(lián)建站長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為長壽企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè),長壽網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
小伙子一直保持站姿十幾分鐘,直到老人下車
這位在校大學(xué)生,接受采訪時說:”當(dāng)時就覺得背后這個人很輕盈,以為是個姑娘!“
對 xxl-job、docker 要有基本的了解
直接看官網(wǎng):xxl-ob,你想要的和不想要的,官網(wǎng)都有詳細(xì)說明
樓主也做了簡單嘗試:分布式任務(wù)調(diào)度平臺 → XXL-JOB 初探、分布式任務(wù)調(diào)度平臺 → XXL-JOB 實戰(zhàn)
示例版本:2.1.0
網(wǎng)上資料很多,b站視頻也挺多的(推薦:尚硅谷2022版Docker實戰(zhàn)教程(docker教程天花板))
樓主就不做介紹了(主要是樓主不知道呀?。?/p>
部署很簡單,我就不具體演示了(不是主角,沒戲份!)
直接看效果
192.168.8.222 上部署xxl-job-admin
192.168.8.223 上部署xxl-job-executor
是不是很簡單?
效果也和我們預(yù)想的一樣
192.168.8.223 安裝docker,安裝過程我就不演示了,直接看效果
docker版本20.10.21
大家注意,伴隨著docker的運(yùn)行,多了一個網(wǎng)卡配置信息
有興趣的可以查閱下:docker網(wǎng)絡(luò)的bridge模式;這里先混個眼熟,注意IP172.17.0.1
此時我們重啟下xxl-job-executor,然后在xxl-job-admin重新注冊下執(zhí)行器
自動注冊上來的機(jī)器IP是172.17.0.1,而非192.168.8.223,那么伴隨而來的問題就是:xxl-job-admin訪問不通xxl-job-executor
我們改成手動注冊,看看能否訪問通
可以看到,手動注冊不受docker的影響,能正常訪問通
而自動注冊則受了docker的影響,注冊的IP不對,至于如何解決,請繼續(xù)往下看
如何打?qū)?span id="squ6kqw" class="cnblogs_code">xxl-job-executor打成docker鏡像,不是本文的內(nèi)容,所以省略不演示(言外之意是需要大家自行去學(xué)習(xí)?。?/p>
我們直接run執(zhí)行器鏡像
自動注冊上來的IP172.17.0.2,很明顯,問題(xxl-job-admin訪問不通xxl-job-executor)再次出現(xiàn)
那改成手動注冊試試
喲嚯,xxl-job-admin還是訪問不通xxl-job-executor
放棄抵抗吧,別掙扎了
少年莫急,我們的xxl-job-executor是通過docker部署的,你有把docker容器的9999端口映射到宿主機(jī)嗎
(由于換了地方,IP也跟著變了,192.168.8.222-> 10.5.13.222,192.168.8.223 ->10.5.13.223)
重啟下sample-executor:1.0
我就問你,是不是通了?
executor通過docker部署,前面已經(jīng)講過了
admin通過docker部署,請看我表演
自動注冊還要試嗎?
前面說了那么多,最終回歸到一個問題:自動注冊的IP為什么不是Docker宿主機(jī)的IP?
不管是xxl-job-admin還是xxl-job-executor,都是直接用的官方的代碼,樓主可一行都沒改
那肯定是xxl-job自動注冊沒有做好docker的兼容唄
這可不是我瞎說,github上xxl-job有很多相關(guān)的issue(191、630、1121、1658、1668)
許大大在源碼中也給出了解決方案,xxl-job-executor-sample-springboot有個類:XxlJobConfig.java,其中有如下說明
那試試唄,我們對xxl-job-executor-sample-springboot進(jìn)行改造
引入依賴
修改XxlJobConfig.java
添加配置
docker運(yùn)行,但executor不通過docker部署
自動注冊的ip竟然是:127.0.0.1,莫非要通過docker部署?
鏡像我已經(jīng)打包好:sample-executor:1.1,我們來看下效果
自動注冊的ip是172.17.0.2,不是宿主機(jī)ip:10.5.13.223,莫非docker鏡像打的有問題?
我們進(jìn)容器內(nèi)看看日志
我們再看看容器內(nèi)的網(wǎng)卡配置信息
請問這如何獲取宿主機(jī)IP(10.5.13.223)?
許大欺我?
1、就目前來看,一旦xxl-job-executor遇上Docker,自動注冊就不對了
知道如何處理的小伙伴,歡迎評論區(qū)留言
2、自動注冊不行了,那就用手動注冊唄
3、大家自己驗證的時候,一定要注意docker與宿主機(jī)的端口映射