簡介
亞馬遜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 {
amazonClient.someCall();
break;
} catch(AmazonServiceException e) {
if(e.getErrorCode().equalsIgnoreCase("RequestLimitExceeded")) {
quietSleepSeconds(++backOffFactor);
}
}
這個代碼是一種改進的強制性重傳延遲,通過使用重試之間的更長周期的休眠實現,使用一個實用功能來完成,即所有的管理員編寫休眠和捕捉/忽略“InterruptedException”,直到“過多”情況消失。你可以調整多快增加休眠時間,而且也可以創建最高上限限制休眠時間。
這並不是完美的代碼,而且可以作為一個lambda表達式在這些語言支持閉包中處理,但是表達了基本的意圖:假設失敗的可能,並且放慢失敗直到系統停止抱怨。