這篇文章主要介紹“如何利用AWS的EC2技術(shù)部署服務(wù)器的Docker容器 ”,在日常操作中,相信很多人在如何利用AWS的EC2技術(shù)部署服務(wù)器的Docker容器 問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何利用AWS的EC2技術(shù)部署服務(wù)器的Docker容器 ”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)開陽,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
部署第一個容器
當(dāng)用戶第一次使用終端訪問ECS服務(wù)時,會看到一個簡單的向?qū)?。盡管手動的去配置ECS也不是多么繁重的事情,但是第一次的話,使用該向?qū)н€是值得嘗試的,它能夠為你配置好所有-你的EC2服務(wù)器,一個合適的安全組,以及一個自動伸縮組,正確的AMI(此AMI內(nèi)置了ECS代理),等等。這是啟動和運行,并獲得ECS經(jīng)驗的最快方法。
步驟1 定義任務(wù)
首先,作為向?qū)У囊徊糠郑覀冃枰x任務(wù)。這個演示的目的,我們將使用免費的NGINX的Docker鏡像。(NGINX是一款開源的web服務(wù)軟件,已經(jīng)被社區(qū)容器化了,并上傳到了官方hub。)
以為容器指定一個名稱開始,例如本示例為nginx-task。
接下來,點擊添加容器定義,即定義nginx容器。 這里主要需提醒的是鏡像的名稱,務(wù)必和Docker hub(ngnix)上公開的鏡像名稱一致。當(dāng)然,也可以指定專有鏡像。
內(nèi)存字段是內(nèi)存的最大值,以兆字節(jié)計算,這是用于分配給運行中的容器的。CPU單元是一個抽象的數(shù)字,每個CPU核心有1024個單元,此數(shù)字即是要賦予的單元數(shù)。
此信息用處非常的大,因為它增加了一定程度的靈活性以及智能的容器調(diào)度。ECS將監(jiān)視那些實例擁有空閑資源,然后智能的分配容器,從而達到實現(xiàn)有效的利用服務(wù)器資源的目的。
步驟2 定義服務(wù)
第二步,我們需要定義服務(wù),即描述為此任務(wù)要在集群中運行多少個實例。
選擇創(chuàng)建服務(wù)的單選框,為服務(wù)命名,本例為nginx-service,然后設(shè)置要運行的任務(wù)數(shù),本例為3。這就意味著此服務(wù)一旦運行起來,就會創(chuàng)建3個任務(wù),每個任務(wù)就是一個獨立的實例,每個實例中都運行著nginx容器。
至于更加復(fù)雜的配置,你可選擇Elastic Load Balancer (ELB),然后在它們被實例化后動態(tài)的將服務(wù)注冊到ELB,并實現(xiàn)集群化。這些在后面有詳細(xì)的描述。
步驟3 創(chuàng)建ECS集群
我們需要創(chuàng)建EC2服務(wù)器的集群,這些服務(wù)器是用來運行容器的。此演示環(huán)境使用3個t2.micro實例即可實現(xiàn)預(yù)料的效果。這也就意味著1個任務(wù)和1個容器將分布到這3臺服務(wù)器的每一個上。我們當(dāng)然也可以實現(xiàn)在集群中使用實例多于任務(wù)的配置,或者使用這些服務(wù)器來運行不同的任務(wù),但是目前還未能實現(xiàn)在同一臺服務(wù)器中運行給定任務(wù)的多個實例。
選擇你首要的密鑰對,然后點擊后面的按鈕以創(chuàng)建IAM角色,IAM角色非常重要,有了它,集群中的主機就可訪問中央ECS服務(wù)了。
步驟4 創(chuàng)建棧
向?qū)У淖詈笠徊绞钦故緟R總?cè)蝿?wù)、服務(wù)、和集群的配置。
頁面如下所示會展示所生成的JSON代碼,這些代碼同樣可以用于命令行,如果有人習(xí)慣于使用命令行的話,或者是打算自動創(chuàng)建它們的集群的話。
在創(chuàng)建過程中,你會看到使用Cloud Formation來構(gòu)建棧。構(gòu)建??赡芤ㄉ?到3分鐘的時間。
步驟5 回顧棧和NGINX服務(wù)
現(xiàn)在若是訪問EC2的面板,我們可以看到已經(jīng)創(chuàng)建好的服務(wù)器,且是處于運行狀態(tài)的。向?qū)б呀?jīng)幫助我們創(chuàng)建了跨可用區(qū)域的主機以演示彈性的好處。
然后回到ECS面板,就可以檢查服務(wù)了,當(dāng)然我們希望看到的是它處于準(zhǔn)備好的狀態(tài),且擁有3個任務(wù)。
記住,在創(chuàng)建實例的過程要花費幾分鐘的時間,從hub拉下容器鏡像啟動也要花費幾分鐘的時間,以及服務(wù)達到可用狀態(tài)也會花費一些時間,所以,不用擔(dān)心這整個過程會稍有些慢。
深入服務(wù)中某個任務(wù)的細(xì)節(jié),我們會看到任務(wù)處于RUNNING(運行)狀態(tài)。
展開nginx-container。在外部鏈接下方,我們可以看到一個HTTP鏈接,指向任務(wù)內(nèi)的容器。
點擊此鏈接,我們可以看到的是Nginx容器所提供的web歡迎頁面。
此時,我們完成了將NGINX容器部署到ECS的步驟,而且可通過web瀏覽器訪問NGINX服務(wù)?,F(xiàn)在你可以考慮整理下思路和對概念的驗證了。
后續(xù)步驟
在建立了一個簡單的容器之后,我們接下來為了將應(yīng)用部署到生產(chǎn)環(huán)境,需要做一些更加高級的配置。
ELB負(fù)載均衡
在上述的例子中,我們使用瀏覽器直接鏈接到三個容器中的一個,實現(xiàn)對NGINX的訪問。這不能夠做到健壯性,理論上當(dāng)容器宕機,或者是重新啟動到不同的服務(wù)器上,那么原來指定的靜態(tài)IP地址就不在有效了。
我們可以將服務(wù)注冊到EC2 Elastic Load Blance(ELB)以實現(xiàn)動態(tài)的地址。作為底層的任務(wù)不管如何的啟動、停止以及在EC2實例池中如何的移動,ELB都可以通過服務(wù)保持最新,能夠?qū)⑾鄳?yīng)的流量路由到正確的地址。
要配置負(fù)載均衡,我們首先需要在EC2的面板中創(chuàng)建一個ELB。然后重新創(chuàng)建服務(wù),在服務(wù)創(chuàng)建的過程中將ELB添加進來,如下面截圖所示:
自動伸縮
ECS也可以整合EC2 autoscaling,而且也是在面臨增加的負(fù)載時擴充集群的首選方法。
Autoscaling的工作要依賴于對諸如CPU,內(nèi)存和IO的計量監(jiān)控的,而且添加節(jié)點或刪除節(jié)點是在打破一定的條件時候進行的。
實例化后的新的節(jié)點會自動注冊到ECS集群中,然后才有資格成為未來部署容器的實例。
這很實用,但是目前ECS還沒有實現(xiàn)擴充任務(wù)數(shù)量或者是增長容器集群的Hook。但我們?nèi)匀荒茉谛碌娜萜鲉雍蠹尤氲叫碌囊?guī)模的集群中受益,我們可以通過GUI或API來引入新的容器到集群,并能在更大規(guī)模的集群中分發(fā)負(fù)載。
容器鏈接
當(dāng)在任務(wù)中定義容器時,是可以使用Docker原生的容器鏈接來實現(xiàn)它們之間彼此的互連互通。
這樣就不在需要靜態(tài)的端口映射或者是多容器環(huán)境中的服務(wù)發(fā)現(xiàn)了,讓部署分布式的微服務(wù)更加的輕松。
AWS 命令行工具
雖然上面的演練是基于UI控制臺,但ECS完全整合到了AWS命令行中 。
故障排查
若發(fā)生了問題,你可以通過SSH直接訪問集群的節(jié)點,以進行調(diào)試。
為了能夠使用SSH登陸到節(jié)點,你需要在安全組中打開22端口,因為通過向?qū)鶆?chuàng)建的節(jié)點默認(rèn)不會打開此端口。
登陸到服務(wù)器節(jié)點后,你就可以查看ECS代理的日志文件:/var/log/ecs了。
你也可以運行標(biāo)準(zhǔn)的Docker命令,例如,docker images 和 docker ps ,來參看服務(wù)器上的鏡像和容器的狀態(tài)。
到此,關(guān)于“如何利用AWS的EC2技術(shù)部署服務(wù)器的Docker容器 ”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
分享題目:如何利用AWS的EC2技術(shù)部署服務(wù)器的Docker容器
分享網(wǎng)址:http://weahome.cn/article/jdejgh.html