亞馬遜彈性計算云(EC2,Elastic Compute Cloud)是一個讓使用者可以租用云端電腦運行所需應用的系統。EC2借由提供Web服務的方式讓使用者可以彈性地運行自己的Amazon機器映像檔,使用者將可以在這個虛擬機器上運行任何自己想要的軟件或應用程式。提供可調整的云計算能力。它旨在使開發者的網絡規模計算變得更為容易。
簡介
亞馬遜EC2上的簡單的Web服務界面,可以讓大家輕松的獲取和配置資源。它提供大家對計算資源的完全控制,并運行于亞馬遜已獲實證的計算環境中。亞馬遜EC2縮短了獲取和啟動新的服務器實例時間到數分鐘,讓大家能夠迅速調整,無論是增加還是縮減,適應大家計算需求的變化。亞馬遜EC2讓大家只需為實際使用的計算進行支付。亞馬遜EC2上提供開發工具來構建隔離故障應用程序并與日常故障隔離開。
歷史
Amazon在2006年8月25日發布EC2受限公眾Beta版本。
虛擬機
EC2使用Xen虛擬化技術。每個虛擬機,又稱作實例,能夠運行小、大、極大三種能力的虛擬私有服務器。Amazon利用EC2 Compute Units去分配硬件資源(一個ECU相當與一個Sandy Bridge級Xeon)。EC2系統提供以下的虛擬機實例類型。
微型實例
默認配置了613MB的存儲器,一個虛擬核心上運行兩個ECU單位,免費試用一年(需信用卡收取一美金)。
小型實例
默認配置了1.7 GB的存儲器,一個虛擬核心上運行一個ECU單位。
大型實例
默認配置了7.5GB的存儲器,兩個虛擬核心上各運行兩個ECU單位。
極大實例
默認配置了15GB的存儲器,四個虛擬核心上各運行兩個ECU單位。
操作系統
支持Windows以及Linux,所有平臺使用微型(免費)實例可免費使用。
自動配置
Amazon EC2自動配置容量的功能允許用戶自動調整Amazon EC2的容量。假如用戶的流量達到尖峰,自動配置功能可以自動增加更多的容量至虛擬主機上以維持性能。
創建步驟
如果大家已經準備好使用Amazon Web服務(AWS),那么,至少有兩種做法可以用來創建以及使用AWS。一種做法是使用AWS API(應用程序編程接口)調用。建議大家在大多數情況下使用第二種做法,即AWS管理控制臺,亞馬遜的基于web的界面。
AWS管理控制臺的簡化流程:
1)AWS注冊
2)創建實例的安全組
3)啟動Amazon EC2實例
4)連接Amazon EC2實例
5)添加Amazon EC2實例存儲
AWS注冊
進行AWS注冊,單擊“注冊”,然后按照后續屏幕上的說明。注冊時,大家會收到大家的AWS帳號,之后會用到。
第一次注冊AWS,大家會收到一個賬戶,所有的AWS服務都會自動生成一個帳戶。包括Amazon EC2服務,S3和EBS存儲服務等。雖然AWS能夠免費注冊,可以使用750個小時,但是,必須提供一個信用卡號,當大家使用“收費”服務時,可以用來繳費。
亞馬遜使用大家提供的電話號碼確認大家的身份。大家會很快收到自動電話系統的來電,系統將提示大家輸入收到的驗證碼。一旦驗證碼經過驗證,大家的帳戶將被激活。
創建IAM用戶
當訪問AWS服務時,該服務決定了大家是否有權限訪問該服務資源。創建IAM用戶,然后根據不同權限將用戶添加到IAM組。接下來,使用一個特殊的URL訪問AWS。“賬戶id”就是大家的AWS帳戶ID,沒有連字符,是大家注冊AWS時獲得的AWS帳戶。
創建IAM用戶,開啟IAM控制臺,輸入注冊AWS時設置的電子郵箱和密碼,并按照提供的說明操作。創建IAM用戶后,大家就能獲得憑證,使用上述特殊的URL,登錄并且使用Amazon EC2。
創建安全組
安全組作為虛擬防火墻,控制著訪問相關實例的允許流量。將入站和出站的規則添加到安全組中來控制流量。入站規則能夠控制訪問與安全組相關實例的流量,如HTTP。
出站規則控制著到達與安全組相關實例的目的地,可以發送的流量。然而,返回流量,如從主機接收到的響應,收到的流量是自動允許的。如果計劃在多個區域啟動實例,將需要在每區域區分別創建安全組。
創建安全組,開啟Amazon EC2控制臺:
為安全組選擇區域
點擊“創建安全組”,輸入一個新安全組的名稱和描述
在入站選項卡上,創建規則,比如:
允許進入實例的HTTP流量
允許進入實例的SSH流量
兩個AWS內部通信的實例,必須屬于同一安全組,或者一個實例的安全組必須配置為接收同一AWS帳戶的另一個安全組的流量。安全組被限定區域,因此,在每個區域需要配備適當的安全組,有計劃地來運行應用程序。
啟動Amazon EC2實例
可以使用AWS管理控制臺啟動實例。啟動實例之前,大家必須完成第一個步驟是“注冊。”
通過訪問Amazon EC2控制臺,開始啟動程序,選擇“啟動實例”。選擇Amazon Machine Image(AMI)創建啟動實例的模板。接下來,通過選擇實例類型,為實例選擇硬件配置。選擇之前為實例創建的安全組,并使用之前創建的憑證,最后啟動實例。
為Amazon EC2實例添加EBS卷
啟動并且連接一個實例后,可以為實例添加一個EBS卷,或者添加其他存儲服務的存儲單元。打開Amazon EC2控制臺,選擇創建實例(EBS卷是敏感區域)的區域,選擇實例。大家可以選擇卷的類型:標準的或者供應的IOPS。最后,附加卷。如果創建了一個空的卷,大家需要將卷格式化才可以安裝。
使用規則
EC2安全組在AWS中為虛擬機網絡安全策略基線提供了一個結構,它應當被視為第一道防線——一個必要但不充分的安全組件。
企業AWS部署也應包括一個或多個VPC以便為網絡安全策略增加一個層。
確保AWS部署:
為每一個應用、應用層和管理用戶組創建一個獨立的安全組,并使用專為特定工作負載或服務層需求而調整的策略:不要為每一個實例創建一個獨立的安全組;不要把所有的實例都放在同一個安全組。這種舊式的“護城河和城堡”式的防火墻策略明顯外強中干,面對如今使用多重攻擊和內部試探在先針對性攻擊在后的攻擊方式已無法發揮防火墻作用;不要依靠VPC的默認AWS安全組。
仔細規劃網絡路由和子網設計(VPC),并使用網絡之間的嚴格ACL。網絡ACL為互聯網和應用程序協議提供了精細化控制,例如GRE、IPSec、ICMP、HTTP、SSL、DNS以及源/目的IP地址范圍之間的流量限制。一方面VPC ACL獨立于安全組,另一方面兩者又相互協作。在不必要的流量和潛在有害的流量到達EC2實例和安全組策略之前,VPC ACL和安全組就就把它們剔除了。
當為網絡和實例進行ACL規則定義時,使用最低權限標準。只允許絕對需要的連接、端口和用戶。特別關注出站安全組策略。出站規則限制對特定地址的連接,例如Dropbox或中國黑客,以及可用于未授權數據泄露的端口(FTP)。
支持無所不在的日志記錄:VPC流量日志、CloudTrail、亞馬遜身份與訪問管理等等。事件日志可提供故障問題排除、現場安全漏洞和隨時間推移安全策略完善所必須的詳細信息。
常見錯誤
亞馬遜Web服務讓企業相信他們擁有了自己的私有資源,但是有時候共享云系統反咬一口虔誠的企業。在亞馬遜Web服務EC2實例中會看到一個錯誤RequestLimitExceeded,這也是反咬企業的錯誤之一。
如果大家進行了過多的AWS調用,大家的調用就會出現RequestLimitExceeded錯誤。然而,AWS并沒有明確多少調用算“過多”,很可能是因為這是一個復雜的且未公開的算法,AWS也有待進一步開發。但是這意味著沒辦法預測什么時候這個錯誤會發生。
解決方法
首先將AWS作為有約束的資源考慮,而且往返周期昂貴。正如大家無法一次按字節閱讀一個文件,不要在一個小的組塊中詢問AWS。
如果大家希望了解正在運行的每一個實例,可以對每一個實例運行一個單獨的AWS調用,或者使用靈活的API來針對AWS EC2實例列表的信息進行單獨請求。第一種方法更有可能導致問題。
第二種選擇是考慮大家多久需要更新一下請求的AWS數據。假定大家正在收集實例數據來進行手動擴展決定。頻繁更新數據增加了精準度,知道大家收到了請求拒絕提示,而且不得不以指數方式退下。要平衡大家所請求的數據頻率。
然而,在做了這些時候,所有的AWS調用需要防止請求限制異常,大家必須決定如何處理。一些調用可以失敗,而且大家可以基于邏輯嘗試一次;其他的調用需要局部再次嘗試直到成功為止。
對于第二種情況,很多管理員會編寫類似的代碼:
int backOffFactor = 0;
while(true) {
try {
amazonclientsomeCall();
break;
} catch(AmazonServiceException e) {
if(e.getErrorCode().equalsIgnoreCase("RequestLimitExceeded")) {
quietSleepSeconds(++backOffFactor);
}
}
這個代碼是一種改進的強制性重傳延遲,通過使用重試之間的更長周期的休眠實現,使用一個實用功能來完成,即所有的管理員編寫休眠和捕捉/忽略“InterruptedException”,直到“過多”情況消失。大家可以調整多快增加休眠時間,而且也可以創建最高上限限制休眠時間。
這并不是完美的代碼,而且可以作為一個lambda表達式在這些語言支持閉包中處理,但是表達了基本的意圖:假設失敗的可能,并且放慢失敗直到系統停止抱怨。
參考資料 >