背景:
兩台服務器主機分別是:192.168.0.111,192.168.0.114
192.168.0.111 服務器上運行了兩個docker鏡像,分別是:rocketmq、consul
192.168.0.114 服務器上運行了三個后台服務的docker鏡像,分別是uip-uadmin、uip-pangu、uip-gateway
問題:
現在需要將三個后台服務注冊到consul上,發現一直注冊不上去。
解決方案
通過已經跑起來的docker鏡像,查看服務器給docker容器分配的網段:
在192.168.0.111上執行:
docker inspect rocketmq
可以看到輸出內容含:(gateway的網段地址為172.17.0)
"Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "cfdffdfaed734aef5a0a06c8400ffd45bac828655468039419d780ab43ba9ead", "EndpointID": "6bc9f0b9d1695c9e39c5568efffcfbd98a1194b5c8bcc2ca1de54690aa58a295", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 24, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:01:02", "DriverOpts": null } }
由此可知,111服務器給docker容器分配的網段是:172.17.0
同理可知,114服務器給docker容器分配的網段也是:172.17.0
需要修改其中一個服務器的docker容器網段,使不一致。因為111服務器上跑的docker容器比較少,所以我們將111服務器上的docker容器網段指定為:172.17.1
在192.168.0.111服務器的/etc/docker下建立文件daemon.json,輸入以下內容進行網段指定:
{"bip":"172.17.1.1/24"}
daemon.json 整體內容:
[root@localhost docker]# cat daemon.json {"bip":"172.17.1.1/24"}
在192.168.0.111服務器上添加網段路由:
ip route add 172.17.0.0/24 via 192.168.0.114
重啟 docker
systemctl restart docker
重啟rocketmq、consul
docker restart rocketmq docker restart consul
再次查看服務器給docker容器分配的網段:
在192.168.0.111上執行:
docker inspect rocketmq
可以看到輸出內容含:(gateway的網段地址已經變成172.17.1了)
"Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "cfdffdfaed734aef5a0a06c8400ffd45bac828655468039419d780ab43ba9ead", "EndpointID": "6bc9f0b9d1695c9e39c5568efffcfbd98a1194b5c8bcc2ca1de54690aa58a295", "Gateway": "172.17.1.1", "IPAddress": "172.17.1.2", "IPPrefixLen": 24, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:01:02", "DriverOpts": null } }
然后將114服務器上的三個docker容器進行重啟,就能在consul控制台上看到服務正常注冊上去了。