我使用Docker Swarm做了第一步,並想知道如何處理使用持久數據(如redis,elasticsearch或數據庫)的服務。Docker Swarm與數據:共享卷vs集羣vs單實例
我發現了很多關於如何使用docker swarm配置redis/elasticsearch/database集羣的教程 - 但使用共享存儲不是更容易嗎?例如,我使用Azure,因此我可以使用單個Azure文件存儲作爲redis/elasticsearch /數據庫卷,並讓所有節點都安裝此文件存儲。 這是一種可接受的方法,還是存在一些明顯的缺點(例如,當兩個或多個數據庫實例試圖在該存儲上同時寫入時)?
是否推薦使用這樣的「數據」服務?每個節點?還是應該將Docker Swarm用於前端服務,並且只有一個redis/elasticsearch /數據庫服務?
謝謝你的想法!現在我正在計劃一個複雜的羣集,其中包含不能無狀態的各種服務。我的發現與您的發現相同:1.避免使用共享卷2.如果服務提供共享卷,請使用羣集功能3.由於彈性原因,避免使用服務的單個實例(在生產中)。我遇到的另一個問題是:(例如)如果我的羣集數據庫中有一個死掉了,我的節點應該如何在同一臺機器上進行響應?我的答案是:將整個機器標記爲「生病」,因此應該完全無法訪問和/或重新啓動。 – Munchkin
如果你將db容器作爲服務部署,你可以使用健康檢查,所以如果容器真的死於docker swarm會殺死它並啓動一個新的,這意味着只有幾秒鐘的停機時間 如果你使用mysql,我目前正在工作在一個非常簡單的羣集解決方案中,您可以部署多個實例,並且它們將全部使用gallera羣集同步,因此丟失一個並不是問題 尚未準備好,但可能需要幾周的時間。 https://github.com/vipconsult/percona-docker/tree/master/pxc-57 –