開心一刻
某次住酒店,晚上十點多叫了個外賣
過了一陣兒,外賣到了
因爲酒店電梯要刷卡,所以我下樓去接
到了電梯口看到個模樣不錯的妹紙
我:是你麼?
妹紙愣了下:嗯!
於是拉上進電梯回房間,正準備開始呢
我倆的電話同時響了
按下接聽鍵,一男一女同時問:我到電梯口了,你人呢?
尷尬了,取錯外賣了
然後一起回電梯口,四個人一起上電梯,電梯裏非常尷尬
我:呵呵,你的妹紙不錯
他:呵呵,你也是
前情回顧
在當 xxl-job 遇上 docker → 它暈了,我也亂了!,有兩個場景沒給大家演示,先補上
executor 和 admin 在同一臺宿主機上通過 docker 部署
這裏有必要給大家簡單講一下 Docker 的 bridge 網絡模式
docker0 類似一個交換機,它有很多接口,每個接口叫 veth ,在宿主機和容器內分別創建一個虛擬接口,並讓他們彼此聯通(這樣一對接口叫 veth pair )
每個容器實例內部也有一塊網卡,其接口叫 eth0 ; docker0 上面的每個 veth 匹配某個容器內部的 eth0 ,兩兩配對,一一匹配
如此,將同個宿主機上的所有容器都連接到同個內部網絡上,那麼這些容器之間的網絡是互通的
所以這種情況下, xxl-job-admin 是可以掉通 xxl-admin-executor 的,因爲它們在同一個內部網絡上
executor 和 admin 都通過 docker 部署,但不在同一個宿主機
上一篇提到了,但沒告訴大家結果,也不知道大家有沒有去驗證,這裏再給大家演示下
從結果來看, xxl-job-admin 是訪問不通 xxl-job-executor 的,想知道爲什麼嗎?
兩臺宿主機的 docker0 分別構成了一個內部網絡,但這兩個內部網絡是隔離的、不通的!
這就好比我的局域網的 192.168.1.115 訪問你的局域網的 192.168.1.118 ,你說能訪問得通嗎?
自動註冊
關於自動註冊的問題,很多小夥伴在上一篇的評論區給出一些解決方案,我來給大家試試水
docker compose
xxl-job-admin 鏡像不需要改動,以 docker-compose 進行編排部署即可, docker-compose.yml 內容如下
xxl-job-executor 需要修改下配置
用 服務名 替換具體的ip
改完之後重新生成 xxl-job-executor 的鏡像 sample-executor-compose:1.2
然後以 docker-compose 進行編排部署, docker-compose.yml 內容如下
我們來看下效果
額,自動註冊好了!你們是不是愛上我了?
etcd + flannel
配置過程就不演示了,可參考:docker使用 Flannel(etcd+flannel)網絡、etcd安裝和所遇到的坑
當IP情況類似如上所示,則說明配置成功了
我們再來看看 xxl-job 的自動註冊
xxl-job-executor 自動註冊的IP 10.10.96.2 , xxl-job-admin 可以正常調度 xxl-job-executor
k8s
k8s 集羣搭建過程不是那麼簡單,但也不是很複雜;搭建好的集羣信息如下
在 k8s 集羣部署 xxl-job-admin 、 xxl-job-executor 成功後,我們來看下 xxl-job 的自動註冊
如你所見,自動註冊是可以正常調度的!
我們再來看下 xxl-job-admin 、 xxl-job-executor 所在節點
sample-xxl-job-admin-56bb76f846-7rnmw 在節點 docker221
sample-xxl-job-executor-78c4997dd4-562hw 在節點 docker220
不在同一個節點哦!
總結
1、三種方式(docker compose、etcd+flannel、k8s)選哪一種,需要結合具體情況來定
如果想實現簡單點,那就選 docker compose
如果已經使用了 k8s ,那就用 k8s 方式就行了
實現方式肯定還有其他的,比如 etcd + flannel 只是屬於打通內部網絡的一種
2、環境的搭建,樓主都省略了,有兩點目的
2.1 考慮到篇幅問題,如果把搭建環境的詳細過程都加進來,整篇篇幅就太長了,擔心你們看的累
2.2 希望大家都去嘗試搭建一下,受過傷纔會刻骨銘心,樓主是深有感觸
你們不要覺得我壞,我就是壞!!!