本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:使用測試 Spot 執行個體中斷 AWS FIS
競價型執行個體使用可用的備用EC2容量,與隨需定價相比,可享受高達 90% 的 discount。但是,Amazon EC2 可以在需要恢復容量時中斷您的 Spot 執行個體。使用 Spot 執行個體時,您必須為潛在中斷做好準備。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的 Spot 執行個體中斷。
您可以使用... AWS 故障注入服務AWS FIS) 以測試您的應用程式如何處理 Spot 執行個體中斷。使用此自學課程建立使用 AWS FISaws:ec2:send-spot-instance-interruptions
中斷其中一個 Spot 執行個體的動作。
或者,若要使用 Amazon EC2 主控台啟動實驗,請參閱 Amazon 使用EC2者指南中的啟動競價型執行個體中斷。
必要條件
在您可以使用之前 AWS FIS若要中斷 Spot 執行個體,請完成下列先決條件。
1. 建立 IAM 角色
建立角色並附加啟用的原則 AWS FIS以代表您執行aws:ec2:send-spot-instance-interruptions
動作。如需詳細資訊,請參閱適用於 AWS FIS 實驗的 IAM 角色。
2. 驗證存取權 AWS FIS
確保您可以訪問 AWS FIS。如需詳細資訊,請參閱 AWS FIS政策範例。
3. (選擇性) 建立競價型執行個體請求
如果您希望新的 Spot 執行個體用於此實驗,請使用執行個體命令來請求 Spot 執行個體。預設值是終止中斷的 Spot 執行個體。如果您將中斷行為設定為stop
,您也必須將類型設定為persistent
。在本教學課程中,請勿將中斷行為設定為hibernate
,因為休眠程序會立即開始。
aws ec2 run-instances \ --image-id
ami-0ab193018fEXAMPLE
\ --instance-type "t2.micro
" \ --count 1 \ --subnet-idsubnet-1234567890abcdef0
\ --security-group-idssg-111222333444aaab
\ --instance-market-options file://spot-options.json
\ --query Instances[*].InstanceId
以下是 spot-options.json
檔案的範例。
{ "MarketType": "spot", "SpotOptions": { "SpotInstanceType": "persistent", "InstanceInterruptionBehavior": "stop" } }
範例指令中的--query
選項可讓指令僅傳回 Spot 執行個體的執行個體 ID。下列為範例輸出。
[ "i-0abcdef1234567890" ]
4. 添加一個標籤,以便 AWS FIS可以識別目標競價型例證
使用「建立標籤」指令新增標籤 Name=interruptMe 至您的目標競價型執行個體。
aws ec2 create-tags \ --resources
i-0abcdef1234567890
\ --tags Key=Name,Value=interruptMe
步驟 1:建立實驗範本
使用建立實驗範本 AWS FIS控制台。在範本中,您可以指定要執行的動作。此動作會使用指定的標籤中斷 Spot 執行個體。如果有多個具有該標籤的定點例證, AWS FIS隨機選擇其中一個。
建立實驗樣板的步驟
打開 AWS FIS控制台在https://console.aws.amazon.com/fis/
。 -
在導覽窗格中,選擇 [實驗範本]。
-
選擇創建實驗模板。
-
在「描述」和「名稱」中,輸入範本的描述和名稱。
-
對於 Actions (動作),執行下列動作:
-
選擇新增動作。
-
輸入動作的名稱。例如,輸入
interruptSpotInstance
。 -
針對「動作類型」,選擇 aw: ec2:。send-spot-instance-interruptions
-
對於目標保持目標 AWS FIS為您創造。
-
對於動作參數,中斷前的持續時間,指定 2 分鐘 (PT2M)。
-
選擇 Save (儲存)。
-
-
對於 Targets (目標),執行下列動作:
-
為目標選擇編輯 AWS FIS在上一個步驟中為您自動建立。
-
以更具描述性的名稱取代預設名稱。例如,輸入
oneSpotInstance
。 -
驗證資源類型是 aw:ec2: 現場實例。
-
對於 Target 方法,請選擇資源標籤、篩選器和參數。
-
對於資源標籤,選擇新增標籤,然後輸入標籤鍵和標籤值。使用您新增至 Spot 執行個體的標籤來中斷,如本教學課程的先決條件中所述。
-
對於資源過濾器,選擇添加新的過濾器,然後輸入
State.Name
running
作為路徑和值。 -
在選取模式中,選擇「計數」。針對「資源數目」,輸入
1
。 -
選擇 Save (儲存)。
-
-
對於「服務存取」,請選擇「使用現有IAM角色」,然後按照本教學課程的先決條件中所述選擇您建立的IAM角色。如果未顯示您的角色,請確認其具有必要的信任關係。如需詳細資訊,請參閱適用於 AWS FIS 實驗的 IAM 角色。
-
(選擇性) 對於標籤,請選擇「新增標籤」,然後指定標籤鍵和標籤值。您新增的標籤會套用至您的實驗範本,而不是使用範本執行的實驗。
-
選擇創建實驗模板。出現確認提示時,請輸入,
create
然後選擇「創建實驗模板」。
(可選) 檢視實驗樣板 JSON
選擇 [匯出] 索引標籤。以下是上述控制台程序所JSON建立的範例。
{ "description": "Test Spot Instance interruptions", "targets": { "oneSpotInstance": { "resourceType": "aws:ec2:spot-instance", "resourceTags": { "Name": "interruptMe" }, "filters": [ { "path": "State.Name", "values": [ "running" ] } ], "selectionMode": "COUNT(1)" } }, "actions": { "interruptSpotInstance": { "actionId": "aws:ec2:send-spot-instance-interruptions", "parameters": { "durationBeforeInterruption": "PT2M" }, "targets": { "SpotInstances": "oneSpotInstance" } } }, "stopConditions": [ { "source": "none" } ], "roleArn": "arn:aws:iam::
123456789012
:role/AllowFISSpotInterruptionActions
", "tags": { "Name": "my-template" } }
步驟 2:開始實驗
完成實驗模板的創建後,您可以使用它來開始實驗。
開始實驗的步驟
-
您應該在剛剛創建的實驗模板的詳細信息頁面上。否則,請選擇實驗模板,然後選擇實驗模板的 ID 以打開詳細信息頁面。
-
選擇 Start experiment (開始實驗)。
-
(可選)要在實驗中添加標籤,請選擇「添加新標籤」,然後輸入標籤鍵和標籤值。
-
選擇 Start experiment (開始實驗)。出現確認提示時,輸入
start
並選擇「開始實驗」。
步驟 3:追蹤實驗進度
您可以追蹤執行中實驗的進度,直到實驗完成、停止或失敗為止。
追蹤實驗進度
-
您應該在剛開始實驗的詳細信息頁面上。否則,請選擇實驗,然後選擇實驗的 ID 以打開詳細信息頁面。
-
要查看實驗的狀態,請檢查詳細信息窗格中的狀態。如需詳細資訊,請參閱實驗狀態。
-
當實驗的狀態為「運行」時,請轉到下一個步驟。
步驟 4:驗證實驗結果
完成此實驗的動作後,會發生下列情況:
-
目標 Spot 執行個體會收到執行個體重新平衡建議。
-
Amazon EC2 會在 Amazon 終止或停止執行個體前兩分鐘發出 Spot 執行個體中斷通知。
-
兩分鐘後,Spot 執行個體就會終止或停止。
-
已停止的競價型執行個體 AWS FIS一直停止,直到您重新啟動它。
驗證實例是否被實驗中斷
-
在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/
。 -
從導覽窗格中,在單獨的瀏覽器索引標籤或視窗中開啟 Spot Requests (Spot 請求) 和 Instances (執行個體)。
-
對於 Spot Requests (Spot 請求),選取 Spot 執行個體請求。起始狀態為
fulfilled
。實驗完成後,狀態會變更如下:terminate
-狀態變更為instance-terminated-by-experiment
。stop
-狀態變更為,marked-for-stop-by-experiment
然後instance-stopped-by-experiment
。
-
對於 Instances (執行個體),選取 Spot 執行個體。起始狀態為
Running
。收到 Spot 執行個體中斷通知後兩分鐘,狀態會變更如下:stop
-狀態變更為,Stopping
然後Stopped
。terminate
-狀態變更為,Shutting-down
然後Terminated
。
步驟 5:清除
如果您為此實驗建立了測試競價型執行個體的中斷行為,stop
而您不再需要它,則可以取消競價型執行個體請求並終止 Spot 執行個體。
若要使用取消要求並終止執行個體 AWS CLI
-
使用命cancel-spot-instance-requests令取消 Spot 執行個體請求。
aws ec2 cancel-spot-instance-requests --spot-instance-request-ids
sir-ksie869j
-
使用終止實例命令終止實例。
aws ec2 terminate-instances --instance-ids
i-0abcdef1234567890
如果您不再需要實驗範本,可以將其刪除。
若要使用刪除實驗範本 AWS FIS控制台
打開 AWS FIS控制台在https://console.aws.amazon.com/fis/
。 -
在導覽窗格中,選擇 [實驗範本]。
-
選取實驗範本,然後選擇 [動作] > [刪除實驗範本]。
-
當系統提示您進行確認時,請輸入,
delete
然後選擇刪除實驗模板。