主頁 > 知識庫 > 利用AWS的EC2技術(shù)部署服務(wù)器的Docker容器

利用AWS的EC2技術(shù)部署服務(wù)器的Docker容器

熱門標(biāo)簽:七臺河商家地圖標(biāo)注注冊 廣安電銷外呼系統(tǒng) 徐州穩(wěn)定外呼系統(tǒng)代理商 威海語音外呼系統(tǒng)廠家 搜地圖標(biāo)注怎么找店鋪 百度高德騰訊地圖標(biāo)注公司 勝威電話外呼系統(tǒng)密碼 百度地圖標(biāo)注不能編輯 個(gè)人家庭地圖標(biāo)注教程

部署第一個(gè)容器

當(dāng)用戶第一次使用終端訪問ECS服務(wù)時(shí),會看到一個(gè)簡單的向?qū)?。盡管手動(dòng)的去配置ECS也不是多么繁重的事情,但是第一次的話,使用該向?qū)н€是值得嘗試的,它能夠?yàn)槟闩渲煤盟校愕腅C2服務(wù)器,一個(gè)合適的安全組,以及一個(gè)自動(dòng)伸縮組,正確的AMI(此AMI內(nèi)置了ECS代理),等等。這是啟動(dòng)和運(yùn)行,并獲得ECS經(jīng)驗(yàn)的最快方法。

步驟1 定義任務(wù)

首先,作為向?qū)У囊徊糠郑覀冃枰x任務(wù)。這個(gè)演示的目的,我們將使用免費(fèi)的NGINX的Docker鏡像。(NGINX是一款開源的web服務(wù)軟件,已經(jīng)被社區(qū)容器化了,并上傳到了官方hub。)

以為容器指定一個(gè)名稱開始,例如本示例為nginx-task。

接下來,點(diǎn)擊添加容器定義,即定義nginx容器。 這里主要需提醒的是鏡像的名稱,務(wù)必和Docker hub(ngnix)上公開的鏡像名稱一致。當(dāng)然,也可以指定專有鏡像。

內(nèi)存字段是內(nèi)存的最大值,以兆字節(jié)計(jì)算,這是用于分配給運(yùn)行中的容器的。CPU單元是一個(gè)抽象的數(shù)字,每個(gè)CPU核心有1024個(gè)單元,此數(shù)字即是要賦予的單元數(shù)。

此信息用處非常的大,因?yàn)樗黾恿艘欢ǔ潭鹊撵`活性以及智能的容器調(diào)度。ECS將監(jiān)視那些實(shí)例擁有空閑資源,然后智能的分配容器,從而達(dá)到實(shí)現(xiàn)有效的利用服務(wù)器資源的目的。

步驟2 定義服務(wù)

第二步,我們需要定義服務(wù),即描述為此任務(wù)要在集群中運(yùn)行多少個(gè)實(shí)例。

選擇創(chuàng)建服務(wù)的單選框,為服務(wù)命名,本例為nginx-service,然后設(shè)置要運(yùn)行的任務(wù)數(shù),本例為3。這就意味著此服務(wù)一旦運(yùn)行起來,就會創(chuàng)建3個(gè)任務(wù),每個(gè)任務(wù)就是一個(gè)獨(dú)立的實(shí)例,每個(gè)實(shí)例中都運(yùn)行著nginx容器。

至于更加復(fù)雜的配置,你可選擇Elastic Load Balancer (ELB),然后在它們被實(shí)例化后動(dòng)態(tài)的將服務(wù)注冊到ELB,并實(shí)現(xiàn)集群化。這些在后面有詳細(xì)的描述。

步驟3 創(chuàng)建ECS集群

我們需要?jiǎng)?chuàng)建EC2服務(wù)器的集群,這些服務(wù)器是用來運(yùn)行容器的。此演示環(huán)境使用3個(gè)t2.micro實(shí)例即可實(shí)現(xiàn)預(yù)料的效果。這也就意味著1個(gè)任務(wù)和1個(gè)容器將分布到這3臺服務(wù)器的每一個(gè)上。我們當(dāng)然也可以實(shí)現(xiàn)在集群中使用實(shí)例多于任務(wù)的配置,或者使用這些服務(wù)器來運(yùn)行不同的任務(wù),但是目前還未能實(shí)現(xiàn)在同一臺服務(wù)器中運(yùn)行給定任務(wù)的多個(gè)實(shí)例。

選擇你首要的密鑰對,然后點(diǎn)擊后面的按鈕以創(chuàng)建IAM角色,IAM角色非常重要,有了它,集群中的主機(jī)就可訪問中央ECS服務(wù)了。

步驟4 創(chuàng)建棧

向?qū)У淖詈笠徊绞钦故緟R總?cè)蝿?wù)、服務(wù)、和集群的配置。

頁面如下所示會展示所生成的JSON代碼,這些代碼同樣可以用于命令行,如果有人習(xí)慣于使用命令行的話,或者是打算自動(dòng)創(chuàng)建它們的集群的話。

在創(chuàng)建過程中,你會看到使用Cloud Formation來構(gòu)建棧。構(gòu)建??赡芤ㄉ?到3分鐘的時(shí)間。

步驟5 回顧棧和NGINX服務(wù)

現(xiàn)在若是訪問EC2的面板,我們可以看到已經(jīng)創(chuàng)建好的服務(wù)器,且是處于運(yùn)行狀態(tài)的。向?qū)б呀?jīng)幫助我們創(chuàng)建了跨可用區(qū)域的主機(jī)以演示彈性的好處。

然后回到ECS面板,就可以檢查服務(wù)了,當(dāng)然我們希望看到的是它處于準(zhǔn)備好的狀態(tài),且擁有3個(gè)任務(wù)。

記住,在創(chuàng)建實(shí)例的過程要花費(fèi)幾分鐘的時(shí)間,從hub拉下容器鏡像啟動(dòng)也要花費(fèi)幾分鐘的時(shí)間,以及服務(wù)達(dá)到可用狀態(tài)也會花費(fèi)一些時(shí)間,所以,不用擔(dān)心這整個(gè)過程會稍有些慢。

深入服務(wù)中某個(gè)任務(wù)的細(xì)節(jié),我們會看到任務(wù)處于RUNNING(運(yùn)行)狀態(tài)。

展開nginx-container。在外部鏈接下方,我們可以看到一個(gè)HTTP鏈接,指向任務(wù)內(nèi)的容器。

點(diǎn)擊此鏈接,我們可以看到的是Nginx容器所提供的web歡迎頁面。

此時(shí),我們完成了將NGINX容器部署到ECS的步驟,而且可通過web瀏覽器訪問NGINX服務(wù)?,F(xiàn)在你可以考慮整理下思路和對概念的驗(yàn)證了。

后續(xù)步驟

在建立了一個(gè)簡單的容器之后,我們接下來為了將應(yīng)用部署到生產(chǎn)環(huán)境,需要做一些更加高級的配置。

ELB負(fù)載均衡

在上述的例子中,我們使用瀏覽器直接鏈接到三個(gè)容器中的一個(gè),實(shí)現(xiàn)對NGINX的訪問。這不能夠做到健壯性,理論上當(dāng)容器宕機(jī),或者是重新啟動(dòng)到不同的服務(wù)器上,那么原來指定的靜態(tài)IP地址就不在有效了。

我們可以將服務(wù)注冊到EC2 Elastic Load Blance(ELB)以實(shí)現(xiàn)動(dòng)態(tài)的地址。作為底層的任務(wù)不管如何的啟動(dòng)、停止以及在EC2實(shí)例池中如何的移動(dòng),ELB都可以通過服務(wù)保持最新,能夠?qū)⑾鄳?yīng)的流量路由到正確的地址。

要配置負(fù)載均衡,我們首先需要在EC2的面板中創(chuàng)建一個(gè)ELB。然后重新創(chuàng)建服務(wù),在服務(wù)創(chuàng)建的過程中將ELB添加進(jìn)來,如下面截圖所示:

自動(dòng)伸縮

ECS也可以整合EC2 autoscaling,而且也是在面臨增加的負(fù)載時(shí)擴(kuò)充集群的首選方法。

Autoscaling的工作要依賴于對諸如CPU,內(nèi)存和IO的計(jì)量監(jiān)控的,而且添加節(jié)點(diǎn)或刪除節(jié)點(diǎn)是在打破一定的條件時(shí)候進(jìn)行的。

實(shí)例化后的新的節(jié)點(diǎn)會自動(dòng)注冊到ECS集群中,然后才有資格成為未來部署容器的實(shí)例。

這很實(shí)用,但是目前ECS還沒有實(shí)現(xiàn)擴(kuò)充任務(wù)數(shù)量或者是增長容器集群的Hook。但我們?nèi)匀荒茉谛碌娜萜鲉?dòng)后加入到新的規(guī)模的集群中受益,我們可以通過GUI或API來引入新的容器到集群,并能在更大規(guī)模的集群中分發(fā)負(fù)載。

容器鏈接

當(dāng)在任務(wù)中定義容器時(shí),是可以使用Docker原生的容器鏈接來實(shí)現(xiàn)它們之間彼此的互連互通。

這樣就不在需要靜態(tài)的端口映射或者是多容器環(huán)境中的服務(wù)發(fā)現(xiàn)了,讓部署分布式的微服務(wù)更加的輕松。

AWS 命令行工具

雖然上面的演練是基于UI控制臺,但ECS完全整合到了AWS命令行中 。

故障排查

若發(fā)生了問題,你可以通過SSH直接訪問集群的節(jié)點(diǎn),以進(jìn)行調(diào)試。

為了能夠使用SSH登陸到節(jié)點(diǎn),你需要在安全組中打開22端口,因?yàn)橥ㄟ^向?qū)鶆?chuàng)建的節(jié)點(diǎn)默認(rèn)不會打開此端口。

登陸到服務(wù)器節(jié)點(diǎn)后,你就可以查看ECS代理的日志文件:/var/log/ecs了。

你也可以運(yùn)行標(biāo)準(zhǔn)的Docker命令,例如,docker images 和 docker ps ,來參看服務(wù)器上的鏡像和容器的狀態(tài)。

總結(jié)

本文的目的是對ECS做一介紹,且講述了一個(gè)實(shí)際演示環(huán)境的例子,即部署你的第一個(gè)容器集群。

ECS是一款新的產(chǎn)品。很多功能還不是很健全,但是它目前足夠的穩(wěn)定。我們在我們的測試環(huán)境中創(chuàng)建了超過100+個(gè)節(jié)點(diǎn)的集群,試驗(yàn)了容器和節(jié)點(diǎn)的失效切換,測試了自動(dòng)伸縮、負(fù)載均衡、運(yùn)行服務(wù),均表現(xiàn)良好?,F(xiàn)在我們打算為一些客戶提供ECS到它們的生產(chǎn)環(huán)境。

ECS以及和它等同的Googel Container Engine對于容器生態(tài)系統(tǒng)來說都是非常重要的?;谌萜鏖_發(fā)代碼和部署變得更為容易,在其上運(yùn)行諸如Kubernetes或Mesos的編排層,對于普通用戶來說這是進(jìn)入成熟的標(biāo)記。ECS為容器提供了一個(gè)簡單的、可訪問的、穩(wěn)定的、類似PaaS平臺的產(chǎn)品,這非常的令人興奮,盡管它現(xiàn)在還處于整個(gè)進(jìn)化過程的早期階段。

標(biāo)簽:吳忠 威海 臨沂 云浮 三明 婁底 滁州 昭通

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《利用AWS的EC2技術(shù)部署服務(wù)器的Docker容器》,本文關(guān)鍵詞  利用,AWS,的,EC2,技術(shù),部署,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《利用AWS的EC2技術(shù)部署服務(wù)器的Docker容器》相關(guān)的同類信息!
  • 本頁收集關(guān)于利用AWS的EC2技術(shù)部署服務(wù)器的Docker容器的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章