我正在使用gliderlabs/registrator容器的領事,向領事展示我的活動容器。當我過快地刪除容器時,服務不會從領事中刪除,而使「殭屍」服務不再存在。我聽說可以使用gliderlabs/registrator容器的其他選項來防止這種情況,例如-cleanup
。但是,我無法使用此選項成功運行任何註冊人。這是我的registrators我目前的搬運工運行命令:如何通過領事和gliderlabs /註冊人防止殭屍服務?
docker run -d -h $(hostname -i) --name registrator1 \
-v /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator \
consul://$(hostname -i):8500
我有什麼要添加到此運行命令有registrator刪除領事不再存在或已經下降的任何容器?
更新:我已經找到了問題
所以我用我的領事集羣registrator的跑着羣。爲了爲羣集提供故障轉移,我在我的consul羣集前放置了一個負載均衡器,並將我的羣集和註冊器容器連接到負載均衡器的IP地址。這允許任何領事節點下降而不會失去羣體。
然而,swarm並沒有將自己註冊爲服務。它將每個節點註冊爲一個關鍵值,並且不會綁定到consul集羣中的任何節點。註冊到註冊人的領事的容器被創建爲服務並綁定到單個領事服務器。
我認爲最近發生的事情是,當我刪除一個容器時,註冊人去從領事刪除服務,但它只有33%的機會擊中正確的領事服務器,並刪除服務,因爲我的LB正在做循環賽。
我所有的swarm master,負載平衡器,領事服務器和swarm worker都在不同的機器上運行。我的註冊人正在我的羣體工作人員機器上運行。一切都在容器中運行。
啓用粘性負載平衡是解決我的問題的臨時修復程序。不過,我認爲試圖在我的羣體工作人員身上運行某種類型的領事,並讓註冊人將自己綁定到在本地主機上運行的領事,這可能是解決方案。我相信這可能是在領事github https://github.com/hashicorp/consul/tree/master/bench中描述的「板凳工人」。我對領事仍然相當陌生,所以我仍然試圖全力以赴。