docker swarm外部驗(yàn)證負(fù)載均衡時(shí)不生效的解決方案
我在本地創(chuàng)建了3個(gè)裝了centos7的虛擬機(jī), 并初始化了swarm集群, 即1個(gè)manager節(jié)點(diǎn), 2個(gè)worker節(jié)點(diǎn); 三臺(tái)機(jī)子的ip分別是 192.168.124.8 - (manager節(jié)點(diǎn)), 192.168.124.9 - (worker節(jié)點(diǎn)), 192.168.124.10 - (worker節(jié)點(diǎn))
[root@localhost ~]# docker node lsID HOSTNAMESTATUS AVAILABILITYMANAGER STATUS ENGINE VERSIONj0f4up8v7epacp3vceby4exsz localhost.localdomain Ready Active 19.03.13qeeqc10gl9e56w61pajjqle08 localhost.localdomain Ready Active 19.03.13r5sg5m9dkwcu76t56hg0vu29t * localhost.localdomain Ready Active Leader 19.03.14
然后我通過(guò)下面的命令在swarm集群上起了一個(gè)服務(wù)
docker service create --name test-vote --replicas 2 --constraint node.role==worker --publish 8080:80 registry.cn-hangzhou.aliyuncs.com/anoy/vote
直接curl 工作者節(jié)點(diǎn)ip:端口 是可以拿到響應(yīng)的, 但是返回的containerId一直不變, 并且如果直接訪問(wèn)manager節(jié)點(diǎn)的話是拿不到響應(yīng)的, 似乎是負(fù)載均衡沒(méi)有生效!
解決經(jīng)過(guò)一番搜索, 在stack overflow上找到了答案, https://stackoverflow.com/questions/48360577/docker-swarm-mode-routing-mesh-not-working
原來(lái)是防火墻的問(wèn)題, 按照文檔的說(shuō)法, 要讓 swarm mode routing mesh 生效的話, 在初始化swarm集群前必須開(kāi)放7946的tcp/udp端口, 4789的udp端口, https://docs.docker.com/engine/swarm/ingress/
所以如果是centos可以用下面的腳本開(kāi)放端口, swarm集群里的每個(gè)主機(jī)都需要開(kāi)放, 圖方便這兩個(gè)端口的tcp和udp都開(kāi)放了; 開(kāi)放完端口后還需要重啟一下機(jī)器
firewall-cmd --permanent --zone=public --add-port=4789/tcp && firewall-cmd --permanent --zone=public --add-port=7946/tcp && firewall-cmd --permanent --zone=public --add-port=4789/udp && firewall-cmd --permanent --zone=public --add-port=7946/udp && firewall-cmd --reload && # 重啟sudo reboot
到此這篇關(guān)于docker swarm外部驗(yàn)證負(fù)載均衡時(shí)不生效的文章就介紹到這了,更多相關(guān)docker swarm負(fù)載均衡內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. python如何實(shí)現(xiàn)word批量轉(zhuǎn)HTML2. python excel和yaml文件的讀取封裝3. python3實(shí)現(xiàn)往mysql中插入datetime類(lèi)型的數(shù)據(jù)4. python爬蟲(chóng)實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊5. moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問(wèn)題及解決6. 詳解docker pull 下來(lái)的鏡像都存到了哪里8. Docker鏡像管理常用操作代碼示例9. 關(guān)于 Android WebView 的內(nèi)存泄露問(wèn)題10. Python中內(nèi)建模塊collections如何使用
