Shopify的Docker實戰經驗(一)用Docker和CoreOS構建內部云

jopen 9年前發布 | 20K 次閱讀 Docker

Shopify是一個電子商務平臺,提供專業的網上店面。目前的客戶超過12萬,包括GE、特斯拉汽車、GitHub等。作為首家市值超過10億美元的加 拿大網絡公司,Shopify在歐美市場的影響力也與日俱增。Shopify是一個大型的Ruby on Rails應用,其產品服務器能通過給1700個處理核心和6TB RAM分配任務來完成每秒處理8000多個請求。Shopify在其博客上分享了系列內容來介紹他們的Docker使用經驗。

這是系列文章的第一篇,介紹我們如何借助容器讓服務器更易于擴展和管理,從而跟上業務需求的步伐。

 Shopify的Docker實戰經驗(一)用Docker和CoreOS構建內部云


關鍵元素是:

  • Docker:容器技術,使應用更加便攜和易于管理
  • CoreOS:提供最小化的操作系統,便于流程規劃和Docker容器的運行
  • </ul>
    Shopify是一個大型的Ruby on Rails應用程序,這些年底層做過大規模的擴展。我們的生產服務器擴容到使用1700個核以及6 TB內存,能支持每秒超過8000次的請求。

    Docker備受矚目,因為其能夠將應用打包進便攜的容器,從而實現版本控制和快速部署。

    容器聽上去很像虛擬機(virtual machine,VM),它有獨立的文件系統、網絡環境等等。但是容器又比虛擬機更加輕量,能夠更高效地利用硬件資源。Docker容器不是像VM一樣去 模擬物理硬件的行為,而是允許多個應用程序安全地共享Linux宿主機器,通過:

    • 內核命名空間使應用間相互隔離
    • cgroups限制資源的上限并實現計費
    • 多層文件系統減少容器的大小
    • </ul>
      Docker在開發和維護團隊中迅速走紅,主要是因為:

      • 快速啟動:容器可以快速啟動和運行,只需要幾秒時間。如果需要,可以利用容器構建的時間做一些其他耗時的操作。快速啟動意味著快速部署。
      • 超高利用率:容器最大限度地共享宿主機器(比如,單核機器),相比VM能更為有效地利用硬件資源。這意味著在同樣的硬件配置上可以運行更多應用。
      • 一致性:容器確保每個實例啟動時是完全一致。
      • 開發友好的工作流:容器由純文本的Dockerfile構建,Dockerfile可以做版本控制從而幫助區分容器版本。另外,開發人員可以用很熟悉很像git的push/pull操作來發布容器。
      • 運維友好的工作流:容器包含操作系統,因此,如果你需要安裝一個package或者自定義的配置,開發人員就可以完成這項工作,而不需要推給運維人員。這是工作職責的重要改變:開發人員負責容器,運維人員則可以關注于提供可靠的硬件和網絡。
      • </ul>
        最重要的容器特性是可以實現一機多用。做不同工作的容器可以在相同的硬件系統上和平共處。這使得數據中心真正成為普遍意義上的計算資源。比如:

        • 可以很快很容易地增加應用服務器容器的數量,這意味著我們隨時可以應對突然的流量尖峰。
        • 可以輕松地拿出生產服務器的閑置資源去進行所需資源密集型的操作,比如數據分析。
        • </ul>
          聽上去不可抗拒吧?我們也有同感,而且我們已經準備來分享我們的經驗,如何將這些愿景變為生產級別的現實。我們不僅僅高談闊論,我們還會在社區里分享盡可能多的代碼。

          這里有很多內容可以講,我們將分期介紹:

          • 容器化:如何以一種能讓自以為是的開發團隊滿意的方式,將已有應用放到容器里?
          • 管理訣竅:真實的應用包括很多API秘鑰和數據庫密碼,這些都需要安全得保存(最好是能版本控制,并能在Heartbleed這樣的事件再次發生的時候迅速把它們找出來)。我們在這里有不錯的解決方案。
          • 路由:怎樣將容器連接到外部世界,并能和生產環境的基礎架構(比如負載均衡器)完美合作?
          • 監控: 我們的容器化架構需要達到或者超越Shopify的99.97%的在線時長。維護系統時需要花費大量的工作在問題變得嚴重之前發現并解決它。在容器化的世 界里解決這個問題需要和純物理機環境不同的解決方案。調整已有的監控系統來監控新環境是保證Shopify穩定性的重要環節。
          • 健壯性:優雅且可預見地拋錯很難。我們在處理內存耗盡(out-of-memory),請求隊列化和signal處理上的經驗可以供大家參考。
          • 部署:我們的系統構建在Chef和Ubuntu之上,現在計劃更新為純物理機上的CoreOS。之后會介紹我們如何部署節點使其能夠運行容器,并且在全是容器的世界里實現高效監控。
          • </ul>
            敬請關注今后各個話題上更深入的探討。

            ===========================
            譯者介紹
            崔婧雯,現就職于VMware,高級軟件工程師,負責桌面虛擬化產品的質量保證工作。曾在IBM WebSphere業務流程管理軟件擔任多年系統測試工作。對虛擬化,中間件技術有濃厚的興趣。

            來自:http://dockerone.com/article/170

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!