精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

由Docker大規模運行中總結的六大實踐經驗

責任編輯:editor005

2015-10-12 14:10:56

摘自:Container技術日報

除非你在過去幾年里一直生活在石器時代,否則你肯定知道容器和Docker。我最初是沿著這條路走的,一個基礎設施團隊,服務于數百個非常忙碌的服務,最終以痛苦告終。

除非你在過去幾年里一直生活在石器時代,否則你肯定知道容器和Docker。如果你是互聯網極客的話,可能你已經準備在生產環境中使用Docker了。

Docker大規模運行中總結的六大實踐經驗

一年前我也在嘗試跟上技術更新的步伐,但以忙于交付原生態的系統結束。我見識到的雖讓我某種程度上傷痕累累,但也讓我收獲頗豐,更重要的是讓我意識到很多很流行工具的缺點。直到我們建立起一套不錯的托管技術棧的時候,我的團隊已經為融合這些技術開發了很多定制代碼,我對這樣的系統設計和運營很不滿意,于是離開那里,成為了ContainerShip的聯合創始人。

顯然我可能帶有偏見,但我認為ContainerShip非常棒,它可以幫你節省很多時間,減少很多痛苦。當然,我不會強迫你去用它,同時我也會盡量避免將偏見帶入這篇文章中。

1.太多不確定因素

微服務和面向服務的體系模式,倡導將系統分隔成許多不同的、小的、松耦合的軟件模塊,而不是一個單一的整體。當涉及到開發一個大型軟件項目時,更容易將這些模塊分給不同的團隊,每個團隊還可以用自己擅長的技術來開發。

這種認識甚至已經滲透到了基礎設施的層面。取其精華,去其糟粕,這在理論上講行得通,但實踐過程中可能是個美麗的陷阱。

當您的托管平臺是由一系列變動的部件構成,每個部件都是由開源項目或公司所維護,就需要編寫大量的定制代碼來將其融合起來。而這些定制代碼,必須要自己維護,并且當問題發生時,你很難確定是哪一個組件的故障,可能也沒人能幫得上忙,因為讓團隊成員學習大量的組件是非常耗時和困難的。如果API發生變化或新版本發布,你只能靠自己讓它繼續工作。

我最初是沿著這條路走的,一個基礎設施團隊,服務于數百個非常忙碌的服務,最終以痛苦告終。

2.沒有高可用性

現在有幾個越來越受歡迎的開源項目,完全忽略了它們master服務器(編排管理剩余集群的服務器)的高可用性。可怕的是這些公司宣稱其產品是在生產環境中運行Docker的最好方式。如果集群管理系統不是高可用的,沒有leader election的概念,運行在一臺單獨的服務器上,我不能想象這可以稱為生產級別的產品。無論選擇何種解決方案,請確保它支持多個master的高可用性,以及通過一些選舉機制來決定哪個master作為leader或者有很好的結束機制。

3.不開源

我曾因為把寶都壓在一個非開源項目中,而非常痛苦。如果沒有類似經歷的話,可能會覺得難以置信。以Genius上所紕漏的Heroku的丑聞為例,沒有人會想到,他們底層的托管平臺的文件會有造假,用戶則在被系統超長的響應時間所困擾。還有很多古怪事情發生在這些非開源的Docker管理系統。

4.非必要的網絡需求

現在有一個趨勢是通過overlay網絡,為主機系統上的每個容器分配唯一的IP地址。這種方式帶來的最大好處是易于使用,但隨之而來的是延遲和帶寬限制的成本。甚至一些最專業的container編排系統也在向用戶推銷這種方式。在新的實現中,事情得到了改善,但是降低性能來提高易用性的方法,并不是一個好主意。

另一種方式是“端口映射”,比如所有容器都運行子啊隨機端口上,通過計算獲得流量的正確方向。好消息是,端口映射問題并不是真的很難,你不需要限制你的性能。使用分布式架構的目的是上提高性能,可用性和功能,不要因為錯誤的選擇反而破壞了性能。

5.托管核心業務

幾乎所有大型云供應商都發布了自己的容器生產解決方案,比如AWS的EC2 Container Service,谷歌的Google ContainerEngine,Joyent的Triton等等。不幸的是(我的觀點),在容器托管服務商中運行你的容器負載,會違背容器最大的一個好處:可移植性。托管服務供應商會想盡一切辦法留住你。過去你沒有太多選擇,只能糾結于配置管理系統和多個提供商的API。現在情況已經有所轉變,有了開放的和供應商無關的選擇。我強烈建議不要使用一個不具有靈活性的系統,而且與供應商無關作為他們的主要目標。

另一個選擇是“Docker as a Service”提供商,在他們自己的網絡上提供運行所有重要的系統,而且為你提供托管主機上簡單的運行獨立服務器,有客戶端連接到他們管理系統。但當你不想再付錢給這些供應商,或者他們的服務不再適應于你業務的增長時,你是沒有辦法回退到免費和開源的模式的。ContainerShip可以做到,當您在CoutainerShip中啟動一個集群,系統的核心運行在您自己的服務器上,您可以隨時停止運行在云服務中的工作,使用開源的核心系統。

6.強制的操作系統

我以前負責安全和PCI DSS協作,還要處理隨之而來的上百的監控和審計要求,使用微型Linux操作系統是不行的,因為IDS/日志/安全軟件,不適合在只能通過Docker安裝和運行軟件的主機上使用。可能對你來說并不是一個問題,但我希望能自由選擇操作系統。為什么要用一個指定的操作系統來使用Docker?或者為什么你需要利用一個初始化系統來運行容器?我認為這是你要極力避免的緊耦合。靈活性和多種Linux操作系統的支持非常重要,尤其是對于那些希望能夠繼續使用某些操作系統的企業,因為他們已經在這個操作系統上投入了時間培訓,有一些服務部署在上面。

總結

以上只是我的建議,但它們來自于無數個小時的研究,開發和實踐中大規模運行Docker的經驗。當你計劃向容器和分布式系統遷移時,請記住這些經驗。有時候,炒作會讓你走上一條路,從現在起6個月就沒辦法工作了。計算領域的技術更新非常迅速,但多年沉淀下來的最佳實踐不會改變。一定要相信你的直覺,容器并不能使一個壞的解決方案變好。

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 玛多县| 当雄县| 长丰县| 横山县| 綦江县| 喀喇| 克拉玛依市| 武功县| 璧山县| 新津县| 遂平县| 古丈县| 监利县| 五家渠市| 韶关市| 白沙| 沂南县| 广宁县| 白银市| 静安区| 海安县| 沂源县| 蓝山县| 获嘉县| 明溪县| 全南县| 新绛县| 赫章县| 崇州市| 连云港市| 图们市| 高淳县| 文安县| 都江堰市| 高要市| 通江县| 昭通市| 正宁县| 盐池县| 新龙县| 县级市|