版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材云計算實戰(zhàn)劉鵬總主編劉鵬主編第九章Web應(yīng)用部署9.1
AWS部署服務(wù)組件
9.2
AWSElasticBeanstalk
9.3
Docker應(yīng)用部署大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材9.4高可用Web應(yīng)用部署9.6本章習(xí)題9.5ElasticBeanstalk命令行界面9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.1組件簡介1.AWSElasticBeanstalk:AWSElasticBeanstalk能夠以最快速且最簡單的辦法將一款應(yīng)用程序啟動并運行在AWS之上。它適合那些希望快速部署代碼,但卻又不想浪費時間在管理底層基礎(chǔ)設(shè)施的開發(fā)人員。ElasticBeanstalk適合那些基于數(shù)據(jù)庫運行在應(yīng)用服務(wù)器之上的標準三層式構(gòu)架PHP、Java、Python、Ruby、Node.js、.NET、Go或者Docker的應(yīng)用程序。ElasticBeanstalk利用AutoScaling與ElasticLoadBalancing可以輕松支持突發(fā)流量,并能夠根據(jù)需求輕松實現(xiàn)規(guī)模的自由伸縮。其常見用例包括Web應(yīng)用、內(nèi)容管理系統(tǒng)(簡稱CMS)以及API后端。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.1組件簡介2.AWSCloudFormation:AWSCloudFormation能夠為系統(tǒng)管理員、網(wǎng)絡(luò)架構(gòu)師以及其他IT人員提供充分的靈活性,幫助其利用基礎(chǔ)設(shè)施架構(gòu)模型的模板配置并管理AWS資源堆棧。大家能夠利用其管理任意對象,從簡單的單一AmazonEC2實例到復(fù)雜的多層多服務(wù)區(qū)應(yīng)用皆涵蓋其內(nèi)。利用這些模板,大家能夠在基礎(chǔ)設(shè)施之上實現(xiàn)版本控制并輕松以可重復(fù)方式復(fù)制基礎(chǔ)設(shè)施堆棧。AWSCloudFormation非常適合那些希望利用一款工具對自身基礎(chǔ)設(shè)施進行細化配置與管理的客戶。而AWSCodeDeploy則適合作為AWSCloudFormation的輔助方案,負責(zé)管理應(yīng)用程序的部署與更新。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.1組件簡介3.AWSOpsWorks:AWSOpsWorks是一項應(yīng)用程序管理服務(wù),旨在簡化開發(fā)人員與運維人員部署及運營各類規(guī)模應(yīng)用程序的過程。AWSOpsWorks非常適合那些希望部署代碼、對底層基礎(chǔ)設(shè)施進行一定程度抽象且應(yīng)用程序本身的復(fù)雜度高于標準三層架構(gòu)的用戶。AWSOpsWorks同樣適合那些希望利用Chef等配置管理系統(tǒng)對基礎(chǔ)設(shè)施加以管理的人。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.1組件簡介4.AWSCodeCommit:AWSCodeCommit是一項高可用性、高可擴展性托管源控制服務(wù),其能夠托管各類專有Git庫。在AWSCodeCommit的幫助下,大家能夠?qū)拇a到二進制數(shù)據(jù)再到任務(wù)的多種資產(chǎn)以無縫化方式存儲在現(xiàn)有Git類工具當中。CodeCommit在結(jié)合AWSCodePipeline與AWSCodeDeploy之后,則可顯著簡化大家的開發(fā)與發(fā)布流程。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.1組件簡介5.AWSCodePipeline:AWSCodePipeline是一項持續(xù)交付與發(fā)布自動紀服務(wù),旨在幫助用戶快速完成新功能發(fā)布。在AWSCodePipeline的幫助下,大家可以設(shè)計自己的開發(fā)工作流,從而完成代碼檢查、代碼構(gòu)建、應(yīng)用程序分段部署、測試以及面向生產(chǎn)環(huán)境的發(fā)布等工作。AWSCodePipeline還能夠被輕松集成或者擴展至第三方工具當中,從而接入發(fā)布流程中的任意環(huán)境。另外,大家也可以利用AWSCodePipeline作為點到點解決方案。為了最大程度實現(xiàn)其優(yōu)勢,大家可以將AWSCodeCommit與AWSCodePipeline配合使用,從而簡化整個開發(fā)與發(fā)布周期。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.1組件簡介6.AWSCodeDeploy:AWSCodeDeploy是一項負責(zé)對各AmazonEC2實例上的應(yīng)用程序部署機制進行協(xié)調(diào)的服務(wù)。AWSCodeDeploy能夠與現(xiàn)有應(yīng)用程序文件及部署腳本相配合,同時可輕松復(fù)用各類現(xiàn)有配置管理腳本。該服務(wù)可與您的基礎(chǔ)設(shè)施實現(xiàn)同步規(guī)模伸縮,這意味著大家能夠部署從單一EC2實例到數(shù)千實例的各類規(guī)模水平工作負載。如果大家希望將代碼部署至自行管理或者由企業(yè)中其它部門管理的基礎(chǔ)設(shè)施當中,那么AWSCodeDeploy同樣是個理想的選擇。利用AWSCodeDeploy將代碼部署至基礎(chǔ)設(shè)施當中,而后利用AWSCloudFormation對基礎(chǔ)設(shè)施其進行配置與管理。即使大家沒有使用AWSCloudFormation,仍然可以利用AmazonEC2配合其它第三方工具,而AWSCodeDeploy可在這類場景下幫助我們管理應(yīng)用程序部署。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.1組件簡介7.AmazonEC2容器服務(wù):AmazonEC2容器服務(wù)是一項具備高可擴展性與高性能水平的容器管理服務(wù),其能夠顯著簡化Docker容器在AmazonEC2實例集群上的運行、停止與管理等任務(wù)。在AmazonEC2容器服務(wù)的幫助下,大家可以利用簡單的API調(diào)用管理容器類應(yīng)用、從集中式服務(wù)內(nèi)獲取集群狀態(tài),同時從AmazonEC2處獲取安全組、AmazonEBS分卷以及AWS身份與訪問管理(簡稱IAM)角色等多種功能。AmazonEC2容器服務(wù)適合那些利用Docker作為構(gòu)建與部署方式的用戶,特別是希望改進EC2實例使用方式、或者將其作為高復(fù)雜度分布式系統(tǒng)的朋友。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.2組件常見功能功能類別描述預(yù)置預(yù)置基礎(chǔ)設(shè)施EC2實例、EBS卷、VPC等部署部署應(yīng)用程序部署來自特定庫的應(yīng)用配置配置管理安裝軟件配置軟件及AWS資源擴展可擴展性根據(jù)負載自動擴展監(jiān)控實時監(jiān)控監(jiān)控事件、資源和應(yīng)用的健康狀況日志排除故障、安全性系統(tǒng)、應(yīng)用日志實例配置安全性安全訪問AWS服務(wù)比如S3、DynamoDB自定義變量配置管理給應(yīng)用環(huán)境傳遞變量其他AWS服務(wù)集成服務(wù)集成其他AWS服務(wù)標簽安全性、排故、配置管理對EC2和RDS上的標簽進行自動配置表9-1WEB部署組件功能9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.2組件常見功能●
預(yù)置正如之前所提到,大家可以利用AmazonEC2、AmazonEBS、AmazonS3以及Amazon虛擬專有云(簡稱VPC)等構(gòu)建單元完成部署工作,或者利用由各部署服務(wù)提供的自動化機制設(shè)置基礎(chǔ)設(shè)施組件。使用這些服務(wù)的優(yōu)勢多種多樣,包括提供豐富的功能集以實現(xiàn)應(yīng)用程序部署與配置、監(jiān)控、可擴展性乃至與其它AWS服務(wù)間的集成等等。下面具體對各項功能進行闡述。
●
部署部署服務(wù)也能夠簡化底層基礎(chǔ)設(shè)施之上的應(yīng)用程序部署流程。大家可以創(chuàng)建一款應(yīng)用程序,為所需要的部署服務(wù)分配源,而后允許該工具處理運行應(yīng)用程序所需要的各AWS資源的配置復(fù)雜性元素。盡管在部署層面其提供的功能比較類似,但每項服務(wù)都擁有自己獨特的應(yīng)用程序部署與管理方法。
9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.2組件常見功能●
配置除了部署應(yīng)用程序,大家還可以使用各項部署服務(wù)以定制并管理應(yīng)用程序配置。其底層任務(wù)可通過為定制化Web應(yīng)用或者應(yīng)用所需要的更新包(例如yum與apt-get庫)進行定制配置文件替換實現(xiàn)(例如httpd.conf)。大家可以對AmazonEC2實例上的軟件進行定制,亦可對堆棧配置內(nèi)的基礎(chǔ)設(shè)施資源做出調(diào)整?!?/p>
擴展在需求提升的過程中,對應(yīng)用程序進行規(guī)模擴展不僅能夠帶來更出色的最終用戶使用體驗,同時亦能夠維持低廉的運營成本。大家可以配置AutoScaling從而立足動態(tài)方式基于AmazonCloudWatch內(nèi)的觸發(fā)指標(CPU、內(nèi)存、磁盤I/O以及網(wǎng)絡(luò)I/O等)添加或者移除AmazonEC2實例。這種AutoScaling配置類型能夠無縫化接入ElasticBeanstalk以及AWSCloudFormation。同樣的,大家可以利用AWSOpsWorks自動根據(jù)時間或者負載進行規(guī)模管理。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.2組件常見功能●
監(jiān)控監(jiān)控功能可幫助大家對AWS云環(huán)境下所啟動的資源加以觀察。無論大家希望對整體堆棧的資源利用率進行監(jiān)控,還是對應(yīng)用程序運行狀態(tài)加以查看,各項部署服務(wù)都能夠幫助大家通過單一窗口完成信息收集。另外,大家也可以切換至CloudWatch控制臺獲取與全部資源及運作狀態(tài)相關(guān)的系統(tǒng)層視圖。大家能夠利用同樣的技術(shù)手段創(chuàng)建出指標警報機制,利用通知實現(xiàn)監(jiān)控。警告機制可以在超出特定閾值或者發(fā)生嚴重問題時發(fā)送提醒信息。舉例來說,大家可以在某EC2未能成功完成狀態(tài)檢查或者CPU利用率超出特定閾值時給出提醒。每項部署服務(wù)負責(zé)對部署流程中的對應(yīng)環(huán)節(jié)進行處理。大家可以經(jīng)由AWS管理控制臺、CLI或者API追蹤資源的添加或者移除。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.2組件常見功能●
日志記錄日志記錄屬于應(yīng)用程序部署周期當中的一項重要元素。日志記錄可提供重要的調(diào)試信息,或者提供與應(yīng)用程序行為相關(guān)的關(guān)鍵性特征。各部署服務(wù)能夠簡化日志的訪問流程,包括將AWS管理控制臺、CLI以及API等方法相結(jié)合,意味著大家不必登錄至AmazonEC2實例當中即可實現(xiàn)日志查看。除了內(nèi)置功能之外,各項部署服務(wù)還提供與CloudWatchLogs無縫化對接的方式,旨在擴展大家對系統(tǒng)、應(yīng)用程序以及自定義日志文件進行監(jiān)控的能力。大家可以利用CloudWatchLogs實時監(jiān)控來自EC2實例中的日志、監(jiān)控CloudTrail事件或者AmazonS3當中的歸檔日志數(shù)據(jù)。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.2組件常見功能●
實例配置Instance配置是一種理想的IAM角色嵌入方式,可用于實現(xiàn)面向AWS資源的訪問操作。這些IAM角色能夠立足于實例安全地指向AWS服務(wù)進行API請求,而無需額外執(zhí)行安全憑證管理。各項部署服務(wù)能夠以無縫化方式與實例配置相集成,從而簡化憑證管理并免除在應(yīng)用程序配置當中進行API密鑰硬編碼的處理方式。舉例來說,如果大家的應(yīng)用程序需要利用只讀權(quán)限訪問AmazonS3存儲桶,則可創(chuàng)建一個實例配置文件并在相關(guān)IAM角色內(nèi)分配AmazonS3只讀訪問。該部署服務(wù)會承擔(dān)起將這些角色傳遞至EC2實例的復(fù)雜工作,確保大家的應(yīng)用程序能夠按照您預(yù)先定義的權(quán)限安全訪問對應(yīng)AWS資源。
9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.2組件常見功能●
自定義變量在開發(fā)應(yīng)用程序時,大家可能需要對配置值進行自定義,例如數(shù)據(jù)庫連接串、安全憑證或者其它不希望以硬編碼形式存在于應(yīng)用程序當中的信息。定義變量能夠幫助大家實現(xiàn)應(yīng)用程序配置的松散耦合,同時以理想的靈活性對應(yīng)用程序中的各層進行獨立擴展。在應(yīng)用程序代碼之外進行變量嵌入有助于提高應(yīng)用程序的可移植能力。另外,大家也可以根據(jù)自定義變量對開發(fā)、測試與生產(chǎn)環(huán)境進行簡單的差異化構(gòu)建。各部署服務(wù)能夠幫助大家實現(xiàn)變量自定義,意味著在設(shè)定完成之后,這些變量會可用于您的應(yīng)用程序環(huán)境。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.2組件常見功能●
其它AWS服務(wù)集成AWS部署服務(wù)提供與其它AWS服務(wù)輕松集成的能力。無論大家需要利ElasticLoadBalancing對跨越多個可用區(qū)的應(yīng)用進行負載均衡還是利用AmazonRDS作為后端,AWSElasticBeanstalk、AWSCloudFormation以及AWSOpsWorks等部署服務(wù)都能夠顯著簡化這些服務(wù)在您部署流程中的使用方式。如果大家需要使用apxAWS服務(wù),則可利用針對具體工具的集成方法同對應(yīng)資源進行交互。舉例來說,如果大家使用ElasticBeanstalk進行部署,并希望利用DynamoDB作為后端,則可將配置文件包含在應(yīng)用程序源捆綁包內(nèi)以實現(xiàn)環(huán)境資源的自定義。利用AWSOpsWorks,大家可以創(chuàng)建自定義模板以配置應(yīng)用程序,從而確保其能夠訪問其它AWS服務(wù)。同樣的,也有部分模板片段可立足于多種示例場景供大家在AWSCloudFormation模板中直接引用。9.1
AWS部署服務(wù)組件第九章Web應(yīng)用部署9.1.2組件常見功能●
標簽使用部署服務(wù)的另一大優(yōu)勢在于,我們可以實現(xiàn)標簽的自動化使用。一條標簽由一條用戶定義的鍵與值構(gòu)成。大家可以根據(jù)應(yīng)用程序、項目、成本中心、業(yè)務(wù)部門或者其它單位進行標簽定義,從而輕松完成資源識別。在開發(fā)階段中使用這些標簽時,各類工具能夠自動對應(yīng)標簽之后的底層資源,例如AmazonEC2實例、AutoScaling分組或者AmazonRDS等等。理想的標簽機制能夠幫助大家更好地利用成本分配報告進行成本管理。成本分配報告根據(jù)各項標簽進行成本匯聚。通過這種方式,大家能夠了解到自己在各項應(yīng)用程序或者特定項目當中支出了多少成本。9.1AWS部署服務(wù)組件第九章web應(yīng)用部署大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材9.2AWSElasticBeanstalk9.3
Docker應(yīng)用部署9.4高可用Web應(yīng)用部署9.6本章習(xí)題9.5ElasticBeanstalk命令行界面9.2
AWSElasticBeanstalk第九章Web應(yīng)用部署9.2.1AWSEB簡介
圖9-2AWSElasticBeanstalk的工作流程9.2
AWSElasticBeanstalk第九章Web應(yīng)用部署
首先登錄控制臺,在“服務(wù)”“計算”欄目中點擊ElasticBeanstalk。9.2.2
AWSEB部署web應(yīng)用9.2
AWSElasticBeanstalk第九章Web應(yīng)用部署
稍作等待,加載ElasticBeanstalk組件界面,在這里我們可以點擊右上角的“創(chuàng)建新環(huán)境”。9.2.2
AWSEB部署web應(yīng)用9.2
AWSElasticBeanstalk第九章Web應(yīng)用部署
默認選擇“Web服務(wù)器環(huán)境”9.2.2
AWSEB部署web應(yīng)用9.2
AWSElasticBeanstalk第九章Web應(yīng)用部署
在應(yīng)用程序名稱中填入“getting-started-app”或者你想要的任何名字。9.2.2
AWSEB部署web應(yīng)用9.2
AWSElasticBeanstalk第九章Web應(yīng)用部署
平臺這邊選取了PHP平臺,也可以選取其他常見平臺。9.2.2
AWSEB部署web應(yīng)用9.2
AWSElasticBeanstalk第九章Web應(yīng)用部署
點擊“創(chuàng)建環(huán)境”,稍等幾分鐘一個簡單的示例應(yīng)用便部署完成了。9.2.2
AWSEB部署web應(yīng)用9.2
AWSElasticBeanstalk第九章Web應(yīng)用部署
頁面自動跳轉(zhuǎn)到如上圖,可以點擊上面的超鏈接查看部署好的應(yīng)用。這邊的URL是,/,如果你不指定應(yīng)用的域名,AWS會隨機分配一個給應(yīng)用。9.2.2
AWSEB部署web應(yīng)用9.2
AWSElasticBeanstalk第九章Web應(yīng)用部署
打開部署好的PHP應(yīng)用,如圖所示。9.2.2
AWSEB部署web應(yīng)用9.2
AWSElasticBeanstalk第九章Web應(yīng)用部署
如果你是在實驗環(huán)境下,而不是生產(chǎn)環(huán)境,請結(jié)束實驗之后,在右上角的“操作”菜單下選擇終止環(huán)境,以節(jié)省費用。9.2.2
AWSEB部署web應(yīng)用9.2
AWSElasticBeanstalk第九章Web應(yīng)用部署
終止后,可以在“環(huán)境”下查看到已終止的應(yīng)用9.2.2
AWSEB部署web應(yīng)用第九章web應(yīng)用部署大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材9.1AWS部署服務(wù)組件9.2AWSElasticBeanstalk9.3Docker應(yīng)用部署9.4高可用Web應(yīng)用部署9.6本章習(xí)題9.5ElasticBeanstalk命令行界面9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署本節(jié)以Rocket.Chat為例,演示如何使用Docker部署Rocket.Chat。Rocket.Chat是一款特性豐富的開源聊天軟件,主要功能有群組聊天,直接通信,私聊群,桌面通知,媒體嵌入,鏈接預(yù)覽,文件上傳,語音/視頻聊天,截圖等等。Rocket.Chat還有配套的客戶端,原生支持Windows,MacOSX,Linux,iOS和Android平臺。Rocket.Chat使用Node.js編寫,使用MongoDB數(shù)據(jù)庫存儲聊天數(shù)據(jù)。Rocket.Chat官方打包了一個Docker鏡像方便我們部署,Docker鏡像以及Dockerfile的鏈接如下:
/_/rocket-chat /RocketChat/Docker.Official.Image9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署由于開發(fā)者已經(jīng)打包好了鏡像,我們不必手動打包,只需拉取鏡像即可。以下操作在Ubuntu20.04Server中進行。安裝MongoDB和Docker。sudoaptinstall-ymongodbdocker.ioifconfig命令查看Docker0的IP地址:本例中為修改mongodb配置文件,/etc/mongodb.conf,加入下列內(nèi)容:
replSet=rs01
oplogSize=128將bind_ip字段改為docker0的ip。
bind_ip=servicemongodbrestart重啟mongodb服務(wù)。9.3.1Docker部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署登錄mongodb,執(zhí)行命令初始化replicaestmongo>rs.initiate()>rs.initiate({_id:'rs01',members:[{_id:0,host:'localhost:27017'}]})出現(xiàn)rs01:PRIMARY>時,代表replicaest已經(jīng)初始化完成。使用Docker拉取已經(jīng)打包好的鏡像。dockerpullrocket.chat:latest9.3.1Docker部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署運行鏡像。鏡像運行時要設(shè)置兩個環(huán)境變量,用來傳遞數(shù)據(jù)庫的ip地址和端口。命令:
dockerrun--namerocketchat-p80:3000\--envMONGO_URL=mongodb:///rcdb\--envMONGO_OPLOG_URL=mongodb://:27017/local\-drocket.chat:latest稍等片刻,查看此docker的日志,出現(xiàn)SERVERRUNNING就代表程序已經(jīng)部署完成了。9.3.1Docker部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署9.3.1Docker部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署9.3.1Docker部署Rocket.Chat使用瀏覽器打開服務(wù)器地址,你可以看到Rocket.Chat程序初次設(shè)置的界面,Docker部署Rocket.Chat服務(wù)完成9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署AmazonElasticContainerService(AmazonECS)是一項高度可擴展的快速容器管理服務(wù),它可輕松運行、停止和管理集群上的Docker容器。您可以通過使用Fargate啟動類型啟動服務(wù)或任務(wù),將集群托管在由AmazonECS管理的無服務(wù)器基礎(chǔ)設(shè)施上。若要進行更多控制,您可以在使用EC2啟動類型進行管理的AmazonElasticComputeCloud(AmazonEC2)實例集群上托管您的任務(wù)。本節(jié)演示如何在AWSECS上部署Rocket.Chat。9.3.2AWSECS部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署1.創(chuàng)建集群進入ECS服務(wù),創(chuàng)建一個集群。選擇僅限聯(lián)網(wǎng)。創(chuàng)建集群時也要創(chuàng)建一個VPC。在此VPC中,我們會在里面啟動一臺實例,運行MongoDB數(shù)據(jù)庫。9.3.2AWSECS部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署2.準備鏡像在ECR中創(chuàng)建一個存儲庫。存放后續(xù)用到的鏡像。9.3.2AWSECS部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署準備一個Linux環(huán)境,可以使用AWSEC2的Linux實例。安裝docker和AWScliv2,拉取dockerhub的鏡像,再推送至ECR存儲庫。sudo-iaptinstalldocker.iounzipcurlcurl"/awscli-exe-linux-x86_64.zip"\-o"awscliv2.zip"unzipawscliv2.zip./aws/installdockerpullrocket.chat:3.2awsconfigure9.3.2AWSECS部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署9.3.2AWSECS部署Rocket.Chat在IAM中創(chuàng)建一個用戶,附帶AmazonEC2ContainerServiceFullAccess權(quán)限。到安全證書選項卡,復(fù)制Accesskey和SecretAccessKey,粘貼到控制臺中。這樣就完成了awscli的登錄操作。9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署在Docker中登錄到ECR私有存儲庫:awsecrget-login-password--regionap-northeast-1|dockerlogin--usernameAWS--password-stdin438841865756.將鏡像推送到ECR存儲庫。dockertagrocket.chat:latest438841865756./rocket.chat:latestdockerpush438841865756./rocket.chat:latest
9.3.2AWSECS部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署9.3.2AWSECS部署Rocket.Chat推送完成后,能在存儲庫中能看到鏡像。9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署3.準備一個MongoDB服務(wù)器在此VPC中運行一個EC2實例,在實例中運行一個MongoDB數(shù)據(jù)庫,用來存儲Rocket.Chat的數(shù)據(jù)。EC2實例的安全組需要開放22端口和27017端口。27017端口可以只對來源地址段為/8開放。程序正常運行后,為了保證安全,可以關(guān)閉22端口,修改27017端口的來源為Docker使用的安全組。在生產(chǎn)環(huán)境中,建議使用AWS的托管MongoDB數(shù)據(jù)庫服務(wù)DocumentDB,性能和可靠性都比EC2上運行的MongoDB好。但是DocumentDB服務(wù)的價格比較貴,開發(fā)測試或用戶規(guī)模不大時可以選擇合適的EC2實例做MongoDB服務(wù)器。系統(tǒng)選擇Ubuntu18.04,按照上面的步驟安裝配置MongoDB,注意,配置文件里的bind_ip要改成或?qū)嵗乃接衖p地址。9.3.2AWSECS部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署4.在ECS服務(wù)里運行容器進入集群,創(chuàng)建一個任務(wù)定義。啟動類型兼容性選擇fargate。配置任務(wù)名稱,任務(wù)角色可以不選。執(zhí)行角色選擇AWS推薦的ecsTaskExecutionRole,用來存放運行日志到CloudWatch中。網(wǎng)絡(luò)模式選擇awsvpc。在任務(wù)定義中添加容器。容器名稱可以隨便填,映像填存儲庫中的映像URI。端口映射添加3000端口。RocketChat的默認端口為3000端口。對于生產(chǎn)環(huán)境,建議配合ELB負載均衡器和CloudFront使用。9.3.2AWSECS部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署9.3.2AWSECS部署Rocket.Chat9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署9.3.2AWSECS部署Rocket.Chat配置容器運行的環(huán)境變量。有兩個環(huán)境變量要設(shè)置,為MONGO_URL和MONGO_OPLOG_URL。MONGO_URL的值為mongodb://[MongoDB實例的ip地址]/rcdb,MONGO_OPLOG_URL的值為mongodb://[MongoDB實例的ip地址]/local。示例中的是剛才部署了MongoDB的EC2實例的私有ip地址。9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署9.3.2AWSECS部署Rocket.Chat創(chuàng)建完任務(wù)定義后,返回創(chuàng)建好的集群,創(chuàng)建服務(wù)。選擇剛才創(chuàng)建好的任務(wù)定義。這里的任務(wù)數(shù)為1。如果用戶規(guī)模比較大,可以提高任務(wù)數(shù),配合ELB負載均衡器使用。9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署9.3.2AWSECS部署Rocket.Chat配置VPC和安全組。VPC選擇創(chuàng)建集群時自動創(chuàng)建的VPC。點擊安全組旁邊的編輯鍵,按照左圖的下半部分新建一個安全組,并且開放3000端口。不創(chuàng)建負載均衡器。9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署9.3.2AWSECS部署Rocket.Chat轉(zhuǎn)到集群的任務(wù),打開任務(wù)的詳情界面,可以看到公有ip地址。9.3
Docker應(yīng)用部署第九章Web應(yīng)用部署9.3.2AWSECS部署Rocket.Chat瀏覽器打開公有ip地址端口3000,可以看到首次注冊界面。至此,AWSECS部署服務(wù)完成。大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材第九章web應(yīng)用部署9.1AWS部署服務(wù)組件9.2AWSElasticBeanstalk9.3Docker應(yīng)用部署9.4高可用Web應(yīng)用部署
9.6本章習(xí)題9.5ElasticBeanstalk命令行界面9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署本節(jié)將演示如何使用AWS部署一個高可用和彈性的WEB應(yīng)用。這里使用Nextcloud來舉例。Nextcloud是一款開源免費的私有云存儲網(wǎng)盤項目,可以讓你快速便捷地搭建一套屬于自己或團隊的云同步網(wǎng)盤,從而實現(xiàn)跨平臺跨設(shè)備文件同步、共享、版本控制、團隊協(xié)作等功能。它的客戶端覆蓋了Windows、Mac、Android、iOS、Linux等各種平臺,也提供了網(wǎng)頁端以及WebDAV接口,所以你幾乎可以在各種設(shè)備上方便地訪問你的云盤。Nextcloud也提供了許多應(yīng)用安裝,包括但不限于Markdown在線編輯、OnlyOffice(需另外部署服務(wù)端)、思維導(dǎo)圖、日歷等,你可以自行選擇以豐富個人網(wǎng)盤的功能。9.4.1Nextclod簡介9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署1.選擇一個EC2實例根據(jù)需求選擇合適的EC2實例,并進行個性化的配置。注意事項:安全組需要開啟22SSH,80HTTP,3306Mysql,6379Redis和11211Memcached。9.4.2簡易部署9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署2.安裝LAMP環(huán)境使用LAMP環(huán)境來進行安裝,首先安裝環(huán)境。使用以下命令:安裝PHP:sudo
apt-get
install
php7.2
php7.2-gd
php7.2-json
php7.2-mysql
php7.2-curl
sudo
apt-get
install
php7.2-mbstring
php7.2-intl
php7.2-xml
php7.2-zip
php-imagick安裝Apache2:apt-get
install
apache2
libapache2-mod-php7.2
mysql-server9.4.2簡易部署9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署9.4.2簡易部署3.創(chuàng)建AmazonRDS數(shù)據(jù)庫
使用aws的托管關(guān)系型數(shù)據(jù)庫服務(wù)來代替?zhèn)鹘y(tǒng)的本地數(shù)據(jù)庫解決方案。
在控制臺界面數(shù)據(jù)庫中找到RDS,創(chuàng)建一個Mysql數(shù)據(jù)庫。本例使用示例模板中的免費方案來進行創(chuàng)建。
注意事項:請選擇與Nextcloud實例相同的VPC。
9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署4.安裝Nextcloud從Nextcloud官網(wǎng)上下載壓縮包到/var/www/html目錄下,解壓Nextcloud。更改Nextcloud所有者和所有組,命令如下:chownwww-data-Rnextcloudchgrpwww-data-Rnextcloud再重啟一次apache服務(wù):serviceapache2restart9.4.2簡易部署9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署9.4.2簡易部署在瀏覽器輸入實例IP地址,加上/nextcloud9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署設(shè)置管理員賬號與密碼。數(shù)據(jù)目錄無需更改數(shù)據(jù)庫用戶、密碼,數(shù)據(jù)庫名填寫剛剛RDS創(chuàng)建的。Localhost改為數(shù)據(jù)庫終端節(jié)點:3306成功安裝后如圖9.4.2簡易部署9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署數(shù)據(jù)庫緩存可以顯著減少延遲并提高應(yīng)用程序的工作負載。通過將頻繁訪問的數(shù)據(jù)片段存儲在內(nèi)存中以進行低延遲訪問(例如,I/O密集型數(shù)據(jù)庫查詢的結(jié)果)而得到改進。當很大一部分查詢是從緩存提供的時減少了需要訪問數(shù)據(jù)庫的查詢,從而降低了成本與運行數(shù)據(jù)庫關(guān)聯(lián)。本例使用AWS提供的ElasticCache服務(wù)來搭建數(shù)據(jù)庫緩存。AmazonElasticCache是一種Web服務(wù),通過該服務(wù)可以在云中輕松設(shè)置、管理和擴展分布式內(nèi)存數(shù)據(jù)存儲或內(nèi)存緩存環(huán)境。它提供了一種高性能、可擴展且經(jīng)濟高效的緩存解決方案。同時,它有助于消除與部署和管理分布式緩存環(huán)境相關(guān)的復(fù)雜性。9.4.3搭建數(shù)據(jù)庫緩存9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署(1)創(chuàng)建redis集群和memcached集群9.4.3搭建數(shù)據(jù)庫緩存在控制臺界面找到ElasticCache界面,選擇創(chuàng)建redis集群。9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署9.4.3搭建數(shù)據(jù)庫緩存再創(chuàng)建一個集群,設(shè)置可參考左圖9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署9.4.3搭建數(shù)據(jù)庫緩存
注意事項:redis和memcached的vpc要與nextcloud實例的vpc相同,且安全組端口開放。
修改nextcloud文件配置首先需要安裝php的redis和memcached庫,命令如下:aptinstallphp-redisaptinstallphp-memcached
打開nextcloud文件目錄,在config文件夾下找到config.php。用編輯器打開將下列命令輸入:'memcache.locking'=>'\OC\Memcache\Redis','redis'=>array('host'=>'主終端節(jié)點','port'=>6379,),'loglevel'=>2,'memcache.local'=>'\OC\Memcache\APCu','memcache.distributed'=>'\OC\Memcache\Memcached','memcached_servers'=>[['配置終端節(jié)點',11211],],'maintenance'=>false,
其中主終端節(jié)點和配置終端節(jié)點替換為之前創(chuàng)建好的redis和memcached的節(jié)點域名。至此,Nextcloud數(shù)據(jù)庫的緩存已經(jīng)搭建完畢!9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署9.4.4彈性架構(gòu)9.4高可用Web應(yīng)用部署第九章Web應(yīng)用部署9.4.4彈性架構(gòu)上圖構(gòu)建了一個在AWS上部署Nextcloud的最佳實踐,以實現(xiàn)高可用性和高性能。限于篇幅僅在此給出架構(gòu)圖和所需要的資源服務(wù)?!粢粋€至少跨兩個可用區(qū)的高度可用架構(gòu)。◆一個根據(jù)AWS最佳實踐配置有公共子網(wǎng)和專用子網(wǎng)的VirtualPrivateCloud(VPC)。這為您的部署提供了網(wǎng)絡(luò)基礎(chǔ)設(shè)施。*◆一個用于提供互聯(lián)網(wǎng)訪問權(quán)限的互聯(lián)網(wǎng)網(wǎng)關(guān)。堡壘主機使用此網(wǎng)關(guān)發(fā)送和接收流量。◆在公共子網(wǎng)中設(shè)置托管NAT網(wǎng)關(guān),以允許對專用子網(wǎng)中的資源進行出站互聯(lián)網(wǎng)訪問?!粼诠沧泳W(wǎng)內(nèi)的AutoScaling組中設(shè)置Linux堡壘主機,以允許對公共子網(wǎng)和專用子網(wǎng)中的EC2實例進行入站安全Shell(SSH)訪問。*◆ElasticLoadBalancing(ELB),用于跨多個Nextcloud實例分發(fā)HTTP和HTTPS請求?!粼趯S米泳W(wǎng)中,配置在Apache上托管Nextcloud應(yīng)用程序的EC2實例。這些實例在AutoScaling組中配置,以確保高可用性。◆在專用子網(wǎng)中,配置由AmazonRelationalDatabaseService(AmazonRDS)管理的Aurora數(shù)據(jù)庫實例?!粼趯S米泳W(wǎng)中配置AmazonElasticFileSystem(AmazonEFS)以跨Nextcloud實例共享資源(例如插件、主題和圖像)?!粼趯S米泳W(wǎng)中配置AmazonElastiCacheforMemcached節(jié)點以緩存數(shù)據(jù)庫查詢。大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材第九章web應(yīng)用部署9.1AWS部署服務(wù)組件9.2AWSElasticBeanstalk9.3Docker應(yīng)用部署9.4高可用Web應(yīng)用部署9.6本章習(xí)題9.5ElasticBeanstalk命令行界面
9.5
ElasticBeanstalk命令行界面(EBCLI)第九章Web應(yīng)用部署EBCLI是AWSElasticBeanstalk的命令行界面,它提供了可簡化從本地存儲庫創(chuàng)建、更新和監(jiān)控環(huán)境的交互式命令。將EBCLI用作每日開發(fā)和測試周期的一部分,以作為ElasticBeanstalk控制臺的一種替代方法。使用安裝腳本安裝有關(guān)安裝說明,請參閱GitHub上的
aws/aws-elastic-beanstalk-cli-setup
存儲庫。9.5.1安裝EBCLI9.5
ElasticBeanstalk命令行界面(EBCLI)第九章Web應(yīng)用部署手動安裝EBCLI若安裝腳本與您的環(huán)境不兼容,可手動安裝EBCLI。使用Python的包管理器pip來進行手動安裝。需注意Python版本大于2.7、3.4或更高版本。1.運行以下命令$pipinstallawsebcli--upgrade--user--upgrade
選項通知
pip
升級已安裝的任何必要組件。--user
選項通知
pip
將程序安裝到用戶目錄的子目錄中,以避免修改您的操作系統(tǒng)所使用的庫。9.5.1安裝EBCLI9.5
ElasticBeanstalk命令行界面(EBCLI)第九章Web應(yīng)用部署2.將可執(zhí)行文件的路徑添加到您的
PATH
變量中:在Linux和macOS上:Linux
–
~/.local/binmacOS
–
~/Library/Python/3.7/bin要修改您的
PATH
變量(Linux、Unix或macOS),請執(zhí)行以下操作:a.在您的用戶文件夾中查找Shell的配置文件腳本。如果您不能確定所使用的Shell,請運行
echo$SHELL。$
ls-a~....bash_logout.bash_profile.bashrcDesktopDocumentsDownloads·Bash
–
.bash_profile、.profile
或
.bash_login?!sh
–
.zshrc?!csh
–
.tcshrc、.cshrc
或
.login。9.5.1安裝EBCLI9.5
ElasticBeanstalk命令行界面(EBCLI)第九章Web應(yīng)用部署b.向配置文件腳本中添加導(dǎo)出命令。以下示例向當前
PATH
變量中添加
LOCAL_PATH
所表示的路徑。exportPATH=LOCAL_PATH:$PATHc.將在第一步中描述的配置腳本文件加載到當前會話中。以下示例加載
PROFILE_SCRIPT
所表示的配置文件腳本。$source~/PROFILE_SCRIPT·在Windows上:請用以下命令在cmd中確認python和pip已正確安裝。python--versionpip--version使用pip安裝EBCLI:pipinstallawsebcli--upgrade--user9.5.1安裝EBCLI9.5
ElasticBeanstalk命令行界面(EBCLI)第九章Web應(yīng)用部署將eb.exe所在目錄添加到Path環(huán)境變量中,可用%USERPROFILE%\AppData\roaming\Python\Python37\scripts查找目錄。注意:安裝Python的安裝位置可能有所不同,具體位置因人而異。A.修改Path環(huán)境變量:B.右鍵我的電腦,選擇屬性C.在左欄選擇高級系統(tǒng)設(shè)置D.在高級標簽下點擊環(huán)境變量E.在系統(tǒng)變量欄中雙擊Path,然后進行編輯F.新建添加路徑,輸入你電腦上的eb.exe的路徑。中間用分號隔開。G.點擊確定保存設(shè)置。9.5.1安裝EBCLI9.5
ElasticBeanstalk命令行界面(EBCLI)第九章Web應(yīng)用部署9.5.1安裝EBCLI通過運行eb--version來驗證EBCLI是否已正確安裝。$eb--version9.5
ElasticBeanstalk命令行界面(EBCLI)第九章Web應(yīng)用部署在安裝完畢后,可進行EBCLI的配置。首先在IAM中創(chuàng)建一個角色。訪問類型選擇編程訪問,并為該角色添加AWSElasticBeanstalkFullAcess和AWSCodeCommitFullAcess。輸入ebinit來配置項目目錄。初始化EBCLI項目9.5.2配置EBCLI9.5
ElasticBeanstalk命令行界面(EBCLI)第九章Web應(yīng)用部署1.首先會要求選擇區(qū)域,按回車進行確認9.5.2配置EBCLI9.5
ElasticBeanstalk命令行界面(EBCLI)第九章Web應(yīng)用部署2.輸入我們創(chuàng)建的IAM角色的訪問密鑰與私有密鑰,按回車進行確認9.5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度高性能機柜研發(fā)與技術(shù)合作合同3篇
- 文化語境與口語表達技巧-洞察分析
- 工程監(jiān)測技術(shù)服務(wù)合同
- 巖石圈流變學(xué)模擬技術(shù)-洞察分析
- 軟裝定制銷售合同
- 2025年度物業(yè)管理公司品牌推廣服務(wù)外包合同范本3篇
- 2025年建筑工程保險合同12篇
- 二零二五年度租賃協(xié)議:事業(yè)單位國有房屋租賃合同2篇
- 2025年度高端消費品銷售員勞動合同范本2篇
- 2025年度紅棗購銷合同示例3篇
- 2023年上海崇明區(qū)區(qū)管企業(yè)招聘筆試參考題庫附帶答案詳解
- 清華大學(xué)考生自述
- 甘肅社火100首歌詞
- GB/T 2315-2000電力金具標稱破壞載荷系列及連接型式尺寸
- 腹主動脈瘤的護理查房
- 內(nèi)部往來轉(zhuǎn)賬通知單
- 商業(yè)銀行高管問責(zé)制度
- 企業(yè)員工培訓(xùn)之風(fēng)險管理與防范對策
- 食材配送后續(xù)服務(wù)方案
- 鑄造工廠設(shè)備管理(共21頁)
- 農(nóng)產(chǎn)品收購臺賬(登記經(jīng)營單位及個體經(jīng)營者投售的農(nóng)產(chǎn)品
評論
0/150
提交評論