雲計算之路-阿里雲上-容器難容:自建docker swarm集羣遭遇沒法解決的問題

咱們從今年6月開始在生產環境進行 docker 容器化部署,將已經遷移至 ASP.NET Core 的站點部署到 docker swarm 集羣上。開始咱們選用的阿里雲容器服務,可是在使用過程當中咱們遭遇了恐怖的路由服務(acsrouting)路由錯亂問題 —— 請求被隨機路由到集羣中的任一容器,雖而後來阿里雲修復了這個問題,但咱們對容器服務失去了信心,走上了用阿里雲服務器自建 docker swarm 集羣的道路。docker

用上自建 docker swarm 集羣以後,本覺得能夠在雲上容器中過上安穩的日子。哪知卻遭遇了另一個奇怪的問題,docker swarm 集羣部分節點常常無端宕機,只有經過阿里雲控制檯重啓服務器後才能夠恢復(有時須要從新加入集羣),有時節點宕機嚴重就會形成整個集羣掛掉。以前,集羣掛掉時當即重建集羣能夠立馬恢復(相比容器服務,能夠很快地重建集羣是自建 docker swarm 的優點之一),但昨天用5臺服務器中的3臺重建集羣,上去後又掛了,後來用剩下的2臺重建集羣才恢復正常。服務器

昨天的集羣掛讓人越想越以爲蹊蹺,當時未進行任何部署操做,負載也不高,重建集羣爲何那3臺繼續掛,這2臺能夠正常運行?惟一能夠懷疑的地方只有這5臺服務器是共享計算型 n1 服務器,多是當時某種資源爭搶狀況引發的。因而,咱們另外買了3臺獨享型服務器建立集羣,結果遇到了以前從未遇到過的 docker swarm 問題,用這3臺或者其中2臺服務器,不管咱們怎麼建立集羣,docker swarm 的 routing mesh 始終不能正常工做 —— 所部署的服務指定了 publish port ,但容器啓動後,只能在運行該容器的節點上訪問該端口,在其餘節點上沒法訪問,而用一樣的配置在以前用的共享型服務器上部署卻沒有這個問題。太奇怪了!網絡

對於這個太奇怪的問題,實在無從下手,只能向阿里雲提交工單。。。阿里雲

終於從阿里雲那裏知道了真相:原來 docker 與阿里雲服務器存在兼容問題。阿里雲建議的解決方案是:使用他們的容器服務。blog

若是咱們早點知道這個真相,就不用這麼折騰了,寫這篇隨筆就是想告訴你們 —— 因爲 docker swarm 與阿里雲服務器存在兼容問題,在這個問題沒有解決以前,在阿里雲上不要用自建 docker swarm 集羣跑生產環境(後來獲知只在經典網絡下才有這個問題,VPC網絡下沒這個問題)。資源

相關文章
相關標籤/搜索