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

Amazon EC2與Docker如何組合出更好的云移植性

責任編輯:editor005

作者:談翔編譯

2015-05-21 14:08:41

摘自:TechTarget中國

在Amazon EC2容器服務中運行Docker可以達到更好的云移植性并降低成本。讓Amazon完成主要的工作,你只需輕松的使用熟悉的元素如彈性負載均衡,自動擴展及固定容器實例數目的類似服務來管理這些實例即可。

在Amazon EC2容器服務中運行Docker可以達到更好的云移植性并降低成本。這里將解釋如何做到這一點。

云計算開發者常常要同配置問題作斗爭。各種服務在實驗室環境里都是好的,但在生產環境中卻無法以預期的方式運行。亞馬遜EC2容器服務提供了托管、可管理和完全可編程的API來從EC2內部直接運行Docker 容器。開發者只需要選擇Docker fleet中所需的服務器大小和數目,然后Amazon就會將這些容器放入實例中。

亞馬遜Web服務(AWS)的彈性計算云(EC2)允許用戶根據配置來運行虛擬機,以編程方式或者自動方式皆可。EC2用戶要先定義虛擬機將要存在的實例類型,區域和可用區(AZ)。EC2的實例數是可以擴展的,但EC2的真正強大之處體現在當你加上擴散功能的時候,它可以將服務分割到多個位于不同AZ和區域的服務器中。

但EC2的計費方式使得它在少數幾個大型的實例中運行是比較經濟的。那些想要完全隔離特定的服務,讓這些服務彼此之間不會互相影響的企業們,便轉向使用Docker。

Docker是為了微服務和云移植性設計的。

微服務可以預防那些由服務互相影響所產生的問題。比如說,如果你的PDF歸檔進程失去控制并占用了大量的CPU,你就不會想要它也順便消滅你的搜尋索引器。傳統的解決方法是在獨立的EC2實例上運行這兩個服務,但是,兩個m3.large實例可是比一個m3.large實例貴。Amazon鼓勵你使用更大的實例而不是更多的實例。

但Docker不是專屬于AWS或云的,IT團隊可以在任何東西上運行Docker,從公有云到裸機都行。這個軟件是以抽象層的方式建立在虛擬機之上的,并不會移除另一個完整虛擬層的開銷。這代表了那些想用其他公有云供應商來試驗的企業不需要重寫任何代碼。如果你的基礎功能是隨著時間在Amazon 機械實例(AMI)上慢慢累積起來的話,你不但要為了新的安全補丁修改代碼來更新AMI,你還必須要為了例如Google計算引擎之類的新云供應商重建整個系統。

以下是當你要建立及運行Amazon EC2容器服務時要遵守的幾個步驟。

Amazon ECS入門

EC2容器服務里有個控制臺,里面包含了所有你需要的工具,幫助你設立Docker和AWS。第一步是先建立一個集群并將實例加入你的Docker池子里。這些實例可以被加入一個Auto Scaling組(ASG)里,這樣可以確保總是存在健康的實例,從而確保Docker系統背后有足夠的額外能力來運行你的容器。

一開始,首先進入Amazon ECS 控制臺并建立一個集群,也就是Docker實例的最高級別上的分組。你可以使用分離的集群讓測試和開發環境相互獨立開來,在同一個AWS帳號里。

當你創建好一個集群之后,啟動其中的一個實例。我推薦使用Auto Scaling Group,即便你只想在這個集群里運行固定數量的實例。設置一個Auto Scaling Group能提供一個防護措施,如果某個服務器宕機,將會被自動替換掉。

在控制臺中,創建一個新的啟動配置,然后在AWS Marketplace中選擇最新的ECS優化實例。

點擊繼續然后選擇一個要啟動的實例類型。我建議使用一個C4或M3的實例類型,大的或者更高。不要選擇T2或T1的實例類型,這些針對突增容量設計的,對于長期運行的進程可能會有些問題。

填完剩余的信息然后依照出現的提示設定好ASG。你也許想將你的ASG設定成在虛擬私有云(VPC)中運行,但要確保設置成運行在至少兩個不同可用區中的兩個不同的子網里。

當你的ASG建立好這個群集的EC2實例后,就會看到他們出現在你的ECS控制臺中(圖1)。

  創建任務定義

任務是一個或多個Docker容一起為了一個服務或微服務而運行。任務可以用于類似Redis服務器這樣的簡單工作負載或復雜工作負載如整個 Wordpress棧,連著用于數據庫,memcached和一個Web服務器的容器。將容器連接起來有助于他們能夠一起緊密的協作。

當為你的任務定義配置一個容器時,你必須定義一個容器名、鏡像、CPU、內存,可選的端口映射,可選的環境變量,一個可選的覆蓋命令和連接等。你必須指定你想要為每個容器預留多少的內存(以MB為單位),以及預留多少個CPU單元(每個2.8GHz的處理器總共有大約1024個CPU單元)。這樣能確保服務器不會因為有太多容器而過載,防止某個容器使用太多的資源而使得其他容器變慢。集群的首頁會顯示可用的CPU單元和內存。如果任何一個可用資源顯示不足的話,請先在你的集群里啟動額外的服務器再啟動更多的容器。

創建服務

一旦你創建了任務定義,接下來是創建服務,也就是ECS版本的一個簡化的Auto Scaling Group。這確保了一定數量的任務實例運行,并且允許開發者將他們綁定到一個彈性負載均衡器中。為服務設定角色有助于分類;獨立的Docker容器有他們自己的身份和訪問管理角色。這給與EC2幾乎和一個獨立的Docker容器一樣的能力。

你也許想從私有的Docker Registry開始,可以創建Docker鏡像的私有庫來抓取鏡像到系統中。私有Docker庫會顯示為一個可配置的Docker容器支持將鏡像庫存儲到簡單存儲服務中。

圖2是我使用的一個任務定義的例子,用來托管我自己的Docker Registry。

  圖3顯示了相關的服務。

我的Docker集線器的內部負載均衡器代理端口從80到5000。因為只在我的VPC里允許,我不需要任何自定義的認證或者SSL的支持。我可以設置從Docker庫里抓取鏡像,并且我有一個特殊的Docker實例用來構建和推送鏡像到Docker庫。

運行藍綠更新

與彈性Beanstalk相似,Amazon EC2 容器服務通過運行額外任務來處理更新,通過負載均衡器切換并在新容器就緒后終止舊的容器。這典型的消除了宕機時間,這樣IT團隊可以在正常的業務時間內推出更新而不會影響客戶。

要進行一個藍綠部署,創建一個新版本的任務,可能指向一個鏡象的新版本,然后更新服務來使用該版本。在ECS中,所有的任務版本都會保存,這樣你可以輕松的回復到一個舊的版本如果部署出現任何問題的話。

Docker容器:ECS對比Beanstalk

在亞馬遜實例上運行Docker不是一個新的概念。如果你需要一個基于Web的應用來定期使用新的部署,Beanstalk加Docker是最好的選擇。但這對于在一個應用后臺運行幾個微服務來說不一定是理想的。如果你有一個Web應用會驅動其他的后臺系統,比如視頻轉錄提取,自動圖像人臉檢測或游戲分析,你也許需要同時使用ECS和彈性Beanstalk加Docker。

最好是指導ECS上的微服務從SQS隊列中讀取,然后擴展服務橫跨你的整個fleet來運行這些服務的多個拷貝。舉個例子,我的一個fleet擁有4個 m3.xlarge實例運行10個PDF提取工具的拷貝,2個全文索引系統的拷貝,4份交付系統和一些雜項任務,如更新我們的Geckoboard儀表盤和同步數據到RDS以便在Tableau中進行分析。

要增加更多的PDF提取進程,我可以進到那個服務然后增加運行任務的數目。如果我需要更多的空間,我可以瞬間提高服務器的大小或者增加我的任務池大小。如果我是在Beanstalk上這么做的話,我至少需要10個不同的實例來運行10個我的PDF提取工具拷貝。用ECS我可以利用與運行幾個小實例相比更低的成本來運行更大的實例。

如果你正在AWS上使用Docker的話,那么ECS是最合理的選擇。讓Amazon完成主要的工作,你只需輕松的使用熟悉的元素如彈性負載均衡,自動擴展及固定容器實例數目的類似服務來管理這些實例即可。

鏈接已復制,快去分享吧

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

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

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 黄平县| 汝州市| 固原市| 锡林郭勒盟| 云龙县| 莆田市| 云阳县| 安宁市| 合阳县| 晋城| 泾阳县| 遂溪县| 嘉定区| 台东市| 黑水县| 宿迁市| 广元市| 科技| 马鞍山市| 邢台县| 樟树市| 东莞市| 平安县| 台湾省| 永丰县| 望城县| 庆云县| 荥经县| 仁化县| 新野县| 东至县| 巴林左旗| 壶关县| 丹寨县| 松溪县| 凤庆县| 喀喇沁旗| 剑河县| 和田市| 达尔| 永年县|