15分钟内开始使用Amazon Web Services和全自动资源调配
我已經(jīng)了解了很多可用于AWS的工具以及資源(機(jī)器實(shí)例,安全組,數(shù)據(jù)庫等)的自動(dòng)化設(shè)置以及AWS云中虛擬機(jī)實(shí)例的自動(dòng)自定義的許多知識(shí)。 我想簡要介紹一下AWS,并簡要概述這些工具和自動(dòng)化選項(xiàng)。 如果您熟悉AWS / EC2,則可能需要直接將介紹跳到自動(dòng)化部分。
為什么選擇AWS?
亞馬遜是“基礎(chǔ)設(shè)施即服務(wù)”的領(lǐng)先提供商,并且正在不斷為其產(chǎn)品增加新的服務(wù)。 AWS允許您按需創(chuàng)建虛擬機(jī),對(duì)其進(jìn)行負(fù)載平衡,將其連接到“數(shù)據(jù)庫即服務(wù)”(與手動(dòng)管理的數(shù)據(jù)庫相比具有多個(gè)優(yōu)點(diǎn))以及各種其他服務(wù)(例如通知,電子郵件和排隊(duì)服務(wù)) 。 您可以訪問內(nèi)置的監(jiān)視功能,并且可以將應(yīng)用程序部署到基于它們的“平臺(tái)即服務(wù)”,同時(shí)保留對(duì)這些較低級(jí)資源的控制權(quán)。
關(guān)注官方AWS博客以了解新服務(wù),功能等。
AWS入門
要?jiǎng)?chuàng)建一個(gè)AWS賬戶,您將需要一部電話和一張信用卡(如果您使用任何付費(fèi)服務(wù)或超出任何免費(fèi)使用限制,都將收費(fèi))。 在注冊(cè)過程中請(qǐng)務(wù)必小心,因?yàn)閁I不能完全防錯(cuò)。 您的帳戶可能需要最多兩個(gè)小時(shí)才能正常運(yùn)行。
下一步要做的是瀏覽AWS管理控制臺(tái) ,該控制臺(tái)可讓您創(chuàng)建和配置各種服務(wù)和資源,最有趣的是Elastic Compute Cloud(EC2),您可以在其中啟動(dòng)新的虛擬機(jī)。 管理控制臺(tái)很容易解釋,盡管不像我希望的那樣易于使用。 您可能需要查看這些屏幕快照,以顯示如何在管理控制臺(tái)中創(chuàng)建EC2實(shí)例 。
簡要概述
AWS的核心規(guī)則是,您僅需支付使用費(fèi)用,即實(shí)例的運(yùn)行時(shí)間和流量-請(qǐng)參閱AWS Simple Monthly Calculator 。
最重要的資源是EC2,因?yàn)樗试S您創(chuàng)建稱為“實(shí)例”的虛擬機(jī)。 關(guān)于它們的內(nèi)存和計(jì)算能力,存在不同類型的實(shí)例 。 默認(rèn)情況下,它們是瞬態(tài)的,一旦停止使用它們就會(huì)被丟棄(終止)。 您可能還擁有一個(gè)由彈性塊存儲(chǔ)(EBS)支持的實(shí)例,該實(shí)例使您能夠以任何狀態(tài)和已保存的更改再次停止和啟動(dòng)該實(shí)例,Amazon對(duì)此收取每月$ 0.10 / GB的費(fèi)用。 如果只需要保留一些數(shù)據(jù),也可以將EBS存儲(chǔ)作為卷安裝到實(shí)例。 沒有快速的方法可以重新創(chuàng)建終止的實(shí)例,您必須再次執(zhí)行向?qū)?這是命令行工具和自動(dòng)化變得很方便的地方。
設(shè)置EC2實(shí)例時(shí),您可能還需要將它們分配到同一安全組中,并配置對(duì)安全組中的哪些人開放的端口(默認(rèn)情況下,您甚至無法通過SSH進(jìn)入)。
如果您想了解有關(guān)EC2的全部信息,請(qǐng)轉(zhuǎn)到Amazon EC2用戶指南 。
除了EC2,還有許多其他有趣的服務(wù),例如Elastic Beanstalk(PaaS,當(dāng)前用于Java Webapp,使用Tomcat),分布式存儲(chǔ)S3等。還有一些其他服務(wù),例如Amazon CloudWatch ,這是一項(xiàng)(性能)針對(duì)您的AWS基礎(chǔ)架構(gòu)的監(jiān)控工具。 (可以通過New Relic監(jiān)視來補(bǔ)充,以更深入地了解應(yīng)用程序。)
利用亞馬遜免費(fèi)套餐
亞馬遜免費(fèi)為新客戶提供一定數(shù)量的資源,為期一年,如果您消耗的資源更多,則只需要付費(fèi)即可。 它包括例如由EBS支持的不停止運(yùn)行的微型EC2實(shí)例(即它是持久的,您可以停止并再次啟動(dòng)它),15 GB流量,10 GB EBS存儲(chǔ),5 GB S3存儲(chǔ),10個(gè)CloudWatch指標(biāo)等不幸的是,盡管它們?cè)贏mazon SimpleDB (NoSQL鍵值存儲(chǔ))中提供了1GB的空間,但它不包括Amazon管理的MySQL / Oracle數(shù)據(jù)庫( RDS )。
這意味著您可以免費(fèi)擁有一個(gè)持續(xù)運(yùn)行的EC2 Micro實(shí)例(613 MB內(nèi)存)。 您可以將其用作云中的基礎(chǔ),例如,因?yàn)閮蓚€(gè)EC2實(shí)例之間的流量更快/更便宜,并且由于它可以完全訪問同一安全組內(nèi)的計(jì)算機(jī)。
最佳選擇可能是將您的實(shí)例基于Amazon Linux AMI ,它是針對(duì)AWS優(yōu)化的RedHat Linux的變體,配備了大多數(shù)AWS API命令行工具和CloudInit,用于自動(dòng)系統(tǒng)設(shè)置(稍后描述)。 建議您瀏覽用戶指南 ,該指南描述了可用的工具以及如何使用CloudInit。
自動(dòng)化呢?
如果您是第一次執(zhí)行某項(xiàng)操作,則AWS Management Console很棒,但是對(duì)于重復(fù)任務(wù)而言,向?qū)臅r(shí)。 特別是如果您需要設(shè)置多個(gè)實(shí)例,比如說RDS數(shù)據(jù)庫實(shí)例,EC2計(jì)算機(jī)實(shí)例以及相應(yīng)的安全組或許多相同的實(shí)例。 我們將研究如何自動(dòng)執(zhí)行此操作。
除了設(shè)置基礎(chǔ)結(jié)構(gòu)外,通常還需要自定義EC2實(shí)例(至少通過安裝和啟動(dòng)所需的EC2實(shí)例軟件)。 您可以通過SSH登錄它們,但是能夠自動(dòng)化它不是很好,特別是如果您需要多個(gè)類似的實(shí)例嗎?
請(qǐng)注意,我現(xiàn)在只關(guān)注自動(dòng)化AWS用戶的工作。 也可以將AWS配置為在需要時(shí)(例如,當(dāng)負(fù)載超過限制時(shí)) 自動(dòng)啟動(dòng)新的EC2實(shí)例 ,但這是另一回事。
概述:
- 基礎(chǔ)架構(gòu)配置自動(dòng)化:
- AWS API命令行工具(或AWS Java API或第三方工具/庫)
- AWS CloudFormation
- 實(shí)例操作系統(tǒng)和軟件設(shè)置自動(dòng)化:
- Canonical CloudInit(Ubuntu和Amazon Linux AMI)–也許利用Puppet或Chef
- 創(chuàng)建定制的AMI
自動(dòng)化基礎(chǔ)架構(gòu)配置
在沒有AWS管理控制臺(tái)的情況下,有兩個(gè)突出的選項(xiàng)可用于創(chuàng)建EC2實(shí)例和其他資源:AWS API命令行工具和AWS CloudFormation。
AWS API命令行工具
亞馬遜為其大多數(shù)服務(wù)(例如EC2和RDS)提供命令行工具。
EC2 :Robert Sosinovski早在2008年就發(fā)布了關(guān)于使用Amazon EC2命令行工具 (盡管其名稱并非特定于Mac OS X)的非常好的說明,但它們?nèi)匀挥行?#xff0c;因此只需關(guān)注它們,就沒有必要重復(fù)它們?cè)谶@里(基本上是下載,解壓縮,設(shè)置環(huán)境變量,提供憑據(jù))。 或者,您可以轉(zhuǎn)到下載頁面并按照官方說明進(jìn)行操作 。 我建議您創(chuàng)建一個(gè)文件夾以包含所有工具=> $ AWS_FOLDER / ec2 /等,而不是?/ .ec2 /。
如果要使用除默認(rèn)us-east-1之外的其他AWS區(qū)域,則還需要設(shè)置環(huán)境變量EC2_URL,請(qǐng)參閱區(qū)域端點(diǎn)列表或命令ec2-describe-regions 。 例如 (我的URL中間有ec2,與端點(diǎn)列表相反,但顯然也可以):
export EC2_URL=https://eu-west-1.ec2.amazonaws.com其他工具的身份驗(yàn)證設(shè)置 :雖然EC2工具的文檔僅描述了通過X.509證書(環(huán)境變量EC2_PRIVATE_KEY,EC2_CERT)進(jìn)行的身份驗(yàn)證,但其他工具(至少是RDS,CloudFormation)支持通過環(huán)境變量AWS_CREDENTIAL_FILE指向統(tǒng)一身份驗(yàn)證到包含您的AWS Access Key ID和密鑰的文件(可以在您的AWS帳戶中的 “安全性憑證-訪問密鑰”下找到)中,配置在工具的自述文件中進(jìn)行了描述。
RDS :RDS命令行工具的設(shè)置與EC2非常相似,只需下載它們并添加環(huán)境變量,如隨附的readme.txt中所述。
與EC2一樣,您可能需要更改默認(rèn)的RDS區(qū)域 :
export RDS_URL=https://eu-west-1.rds.amazonaws.comVaadin測(cè)試設(shè)置中的示例
我最初的計(jì)劃是嘗試使用Amazon Web Services進(jìn)行Vaadin可伸縮性測(cè)試中描述的性能測(cè)試,不幸的是,事實(shí)證明這是不可能的,因?yàn)闇y(cè)試應(yīng)用程序無法運(yùn)行。 在此過程中,我已自動(dòng)完成了各個(gè)設(shè)置步驟,如下所示。 您可能需要查看博客文章以了解上下文。
我不需要通過管理控制臺(tái)創(chuàng)建安全組并允許通過命令行訪問它。 您可以按以下方式打開SSH端口:
ec2-authorize -p 22創(chuàng)建兩個(gè)EC2實(shí)例:
ec2-run-instances ami-1a0f3d6e -t m1.large -k VaadinAS --instance-count 2 -z eu-west-1c -g quick-start-1- -k指定將與該實(shí)例相關(guān)聯(lián)的現(xiàn)有密鑰對(duì)的名稱(管理控制臺(tái)為您提供了在首次創(chuàng)建實(shí)例時(shí)創(chuàng)建的密鑰對(duì))的名稱,從而無需密碼即可進(jìn)行ssh登錄
- -z指定區(qū)域內(nèi)的可用區(qū)(AZ)(在Mgmt Console中創(chuàng)建實(shí)例時(shí),您可以看到可用區(qū)),最好將所有資源都放在同一AZ中
- -g指定一個(gè)現(xiàn)有的安全組(再次在控制臺(tái)中創(chuàng)建); 我相信默認(rèn)是“默認(rèn)”
ec2-run-instances命令還支持–user-data或–user-data-file屬性,以將設(shè)置指令傳遞給CloudInit,如稍后所述。
要登錄實(shí)例,您將需要它們的公共域名/ IP(在命令完成時(shí)打印)和用戶名,這取決于所使用的AMI(最簡單:在Mgmt Console中右鍵單擊該實(shí)例,然后選擇“連接”以獲取)完整的SSH connect命令)和密鑰文件(在我的情況下為./VaadinAS.pem)。 因此,我將以如下方式登錄我的第一個(gè)實(shí)例(前提是我已經(jīng)打開了安全組中的端口22):
ssh -i VaadinAS.pem ubuntu@ec2-46-137-136-253.eu-west-1.compute.amazonaws.com使用MySQL創(chuàng)建RDS實(shí)例(啟動(dòng)完成可能需要幾分鐘):
rds-create-db-instance quicktickets --allocated-storage 5 -c db.m1.large -e MySQL5.1 -u quicktickets -p V3ryS3cr3t -z eu-west-1c --backup-retention-period 0 --db-name quicktests- quicktickets將是實(shí)例的名稱
- 最大 大小為5 GB(以后可以更改)
- -c –它基于db.m1.large實(shí)例
- -e –數(shù)據(jù)庫類型為MySQL,-u用戶名快捷票,-p密碼V3ryS3cr3t
- -z eu-west-1c將其置于與EC2實(shí)例相同的可用區(qū)中
- –backup-retention-period 0 –不保留備份(默認(rèn):1天)
- –db-name quicktests –連接到它所需
接下來,我需要使數(shù)據(jù)庫可以從我的EC2實(shí)例(在安全組quick-start-1中)訪問:
rds-authorize-db-security-group-ingress default --ec2-security-group-name quick-start-1 --ec2-security-group-owner-id- 您可以找到您的AWS賬戶ID在AWS帳號(hào)的安全憑據(jù)下
要查找實(shí)例的主機(jī)名,請(qǐng)執(zhí)行rds-describe-db-instance ,它還會(huì)告訴您實(shí)例是仍在啟動(dòng)還是已經(jīng)在運(yùn)行。
現(xiàn)在,您可以從安全組中的EC2實(shí)例連接到數(shù)據(jù)庫:
AWS CloudFormation
CloudFormation是Amazon提供的一項(xiàng)新的(2/2011)免費(fèi)服務(wù),使您能夠以文本格式描述所需的資源及其依賴項(xiàng),并可以通過以下方式使用此“模板”實(shí)例化這些資源(“創(chuàng)建堆棧”): AWS管理控制臺(tái)或通過CloudFormation命令行工具 。 您還可以共享您的模板,并使用和組合其他人創(chuàng)建的模板。 模板還支持UserData屬性,您可以使用該屬性將設(shè)置說明傳遞給CloudInit,如稍后所述。 查看此基于屏幕截圖的文章,有關(guān)通過管理控制臺(tái)設(shè)置CF堆棧 。
模板文件示例:
- 4:如您所見,您可以定義屬性(具有默認(rèn)值),當(dāng)從模板創(chuàng)建新堆棧時(shí)可以為其提供值
- 16、31:接下來,它定義了兩個(gè)資源:安全組和EC2實(shí)例(使用某些映射,因?yàn)锳MI的名稱因地區(qū)而異)
- 38:可以通過base64編碼的UserData將設(shè)置說明提供給CloudInit
- 56:您還可以通過DescribeStacks函數(shù)定義哪些信息可用(命令行:cfn-describe-stacks)
通過CloudFormation,您可以定義任何資源(EC2實(shí)例,RDS實(shí)例,負(fù)載平衡器,安全組等),它們的依存關(guān)系,以及通過CloudInit定義各種啟動(dòng)時(shí)操作,如SW安裝。 模板是有效的JSON文檔。
示例: 使用CloudFormation和Cloud-Init安裝和啟動(dòng)RoR應(yīng)用程序 (具有WaitCondition功能)–它不太長,描述了模板文件的各個(gè)部分。 您也可以瀏覽公共模板文件 ,例如: 具有Amazon RDS數(shù)據(jù)庫實(shí)例的單個(gè)EC2實(shí)例Web服務(wù)器 。
2011年6月,亞馬遜還啟動(dòng)了CloudFormer ,這是一個(gè)原型工具,使您可以從帳戶中的現(xiàn)有AWS資源創(chuàng)建CloudFormation模板。
如果您仍需要更多信息,請(qǐng)閱讀《 CloudFormation用戶指南》 。
使用CloudFormation元數(shù)據(jù)和幫助程序腳本自定義實(shí)例
從通過AWS CloudFormation引導(dǎo)應(yīng)用程序 :
AWS CloudFormation允許您通過模板中的元數(shù)據(jù)定義軟件包,文件和操作系統(tǒng)服務(wù)的集合。 此外,它還提供了輔助功能
解釋元數(shù)據(jù)并對(duì)其執(zhí)行操作,安裝軟件包,創(chuàng)建文件以及在實(shí)例上啟動(dòng)或重新啟動(dòng)服務(wù)。 AWS CloudFormation腳本基于基本CloudInit功能構(gòu)建,使您能夠創(chuàng)建通用的簡單CloudInit啟動(dòng)腳本,該腳本通過元數(shù)據(jù)進(jìn)行數(shù)據(jù)驅(qū)動(dòng)。 您在元數(shù)據(jù)中描述了主機(jī)上需要安裝的內(nèi)容,AWS CloudFormation負(fù)責(zé)此操作。
有關(guān)如何使用元數(shù)據(jù)和幫助程序腳本(例如cfn-init)的說明,請(qǐng)參閱該文檔,該腳本將安裝軟件包,下載和解壓縮歸檔文件,啟動(dòng)服務(wù)以及根據(jù)元數(shù)據(jù)部分中的數(shù)據(jù)創(chuàng)建文件。 它還提到了CloudFormation和Chef或Puppet的集成,在將AWS CloudFormation與Opscode Chef 集成以及將AWS CloudFormation與Puppet集成的白皮書中對(duì)此進(jìn)行了詳細(xì)描述。 如果您打算使用CloudFormation,則應(yīng)絕對(duì)閱讀此22頁的指南。
(注意: cfn-init支持下載和解壓縮軟件包,可用于例如獲取GitHub按需提供的應(yīng)用程序的最新源代碼。)
您可以在此模板中看到利用元數(shù)據(jù)和幫助程序腳本的用法示例。
其他選擇
- AWS Java API(命令行工具使用它,它基于Web服務(wù)調(diào)用)
- 第三方工具/庫,例如Ruby gem Fog 。
- Chef + Knife和Puppet(我相信他們?yōu)锳WS WS調(diào)用提供了自己的包裝器并利用CloudInit)
自動(dòng)化EC2實(shí)例OS / SW設(shè)置
要在EC2實(shí)例及其配置中自定義軟件,您可以創(chuàng)建自定義的AMI,也可以將Canonical的CloudInit與支持它的AMI(Amazon Linux和Ubuntu以及其他)一起使用。 如果使用CloudFormation,則還有另一種基于CloudInit的可能性,如上文CF部分所述。
Canonical CloudInit和實(shí)例用戶數(shù)據(jù)
您可以通過“ 用戶數(shù)據(jù)”屬性(最大16KB)將任何文本數(shù)據(jù)傳遞到新實(shí)例,然后可以從實(shí)例中的http://169.254.169.254/latest/user-data獲得數(shù)據(jù)(您也可以訪問各種元數(shù)據(jù) )。 CloudInit是由Ubuntu背后的公司Canonical開發(fā)的Linux實(shí)用程序,可在啟動(dòng)時(shí)(大約在rc.local運(yùn)行時(shí))讀取這些數(shù)據(jù)并處理其中嵌入的所有指令。 例如,如果它以#開頭! 然后在根目錄下作為shell腳本運(yùn)行。
CloudInit在用戶數(shù)據(jù)中接受不同類型的指令,以第一行區(qū)分:腳本(#!…),云配置數(shù)據(jù),即要安裝的軟件包等(#cloud-config),要處理的文件的URL(#include…) ,#upstart-job向/ etc / init(每次啟動(dòng)時(shí)運(yùn)行)中添加一些內(nèi)容。 它甚至可以處理gzip壓縮的用戶數(shù)據(jù)和多部分?jǐn)?shù)據(jù),結(jié)合幾種指令類型(請(qǐng)參閱cloud-utils和命令write-mime-multipart )。
#cloud-config類型非常有用,因?yàn)樗前惭b軟件包和執(zhí)行命令的一種比bash腳本更簡單的方法。 它包含YAML格式的指令f.ex。 “ runcmd”運(yùn)行命令行工具,“ packages”通過操作系統(tǒng)的軟件包管理器安裝軟件包。 示例: 使用 #cloud-config 安裝Jenkins CI 。
CloudInit的文檔還不夠完善,您可能有時(shí)需要閱讀Python源代碼 。 如果出現(xiàn)問題,可以檢查實(shí)例的/var/log/cloud-init.log中的日志。
除了官方文檔外,您可能還想查看Xebia的CloudInit簡介演示文稿,并閱讀Amazon Linux AMI 用戶指南中有關(guān)CloudInit的部分。
創(chuàng)建自定義的Amazon Machine Image
CloudInit在啟動(dòng)時(shí)安裝和配置軟件,因此實(shí)例需要更長的時(shí)間才能完全可用。 如果這是一個(gè)問題,那么您可能更喜歡使用已安裝和配置的所有軟件來創(chuàng)建自己的自定義Amazon Machine Image (AMI)。 例如,在本摘要中描述了如何從現(xiàn)有版本 (2007)或官方AMI定制文檔中 創(chuàng)建新的AMI ,您可能還想看看EC2 AMI命令行工具 。 然后,您將基于定制的AMI創(chuàng)建新的EC2實(shí)例。
一些相關(guān)的東西
如果您的EC2實(shí)例需要進(jìn)行通信并使用要求它們位于同一子網(wǎng)中的技術(shù),則可以使用Amazon Virtual Private Cloud (VPC;免費(fèi)),甚至可以通過VPN將其連接到數(shù)據(jù)中心(每小時(shí)$ 0.05)。 例如,對(duì)于運(yùn)行多個(gè)JMeter實(shí)例,這可能是必需的。
關(guān)于JMeter,J?rgKalsbach創(chuàng)建了一個(gè)AMI,該AMI簡化了JMeter主從服務(wù)器場(chǎng)的創(chuàng)建(3/2010): JMeter In The Cloud –基于云的負(fù)載測(cè)試環(huán)境 (請(qǐng)閱讀文檔)。 (技巧是,主實(shí)例啟動(dòng)從屬實(shí)例,從而知道其IP。我想可以使用CloudFormation,Auto Scale和用戶數(shù)據(jù)/ CloudInit來完成類似的操作。)
摘要
AWS是一個(gè)動(dòng)態(tài)開發(fā)的平臺(tái),具有不斷改進(jìn)的工具和不斷增長的服務(wù)提供。 使用基于Web的管理控制臺(tái)非常容易上手,但是很快將變得更加方便,可以遷移到更自動(dòng)化的界面,例如命令行工具甚至整個(gè)基礎(chǔ)架構(gòu)堆棧設(shè)置的CloudFormation。 通過創(chuàng)建自定義圖像或在啟動(dòng)時(shí)通過CloudInit和/或CloudFormation的元數(shù)據(jù)和腳本對(duì)實(shí)例進(jìn)行自定義的支持非常好,人們已經(jīng)將其與自己喜歡的DevOps工具Chef和Puppet結(jié)合在一起。
我建議您先使用管理控制臺(tái)開始使用AWS,然后在熟悉這些概念和用法后切換到命令行工具和CloudInit。 如果需要重復(fù)供應(yīng)多個(gè)資源,則應(yīng)使用CloudFormation及其元數(shù)據(jù)和幫助程序腳本(也許還利用Puppet / Chef)。
參考: The Holy Java博客上的JCG合作伙伴 Jakub Holy 提供了15分鐘的Amazon Web Services和全自動(dòng)資源供應(yīng)入門 。
相關(guān)文章 :
- 測(cè)試技巧–不編寫測(cè)試
- 在云中開發(fā)和測(cè)試
- 晴間多云
- 用Scala測(cè)試
翻譯自: https://www.javacodegeeks.com/2011/12/getting-started-with-amazon-web.html
總結(jié)
以上是生活随笔為你收集整理的15分钟内开始使用Amazon Web Services和全自动资源调配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (linux qq等)
- 下一篇: 芜湖房产备案网上查询(芜湖房产备案网)