前回はAuto Scalingがインスタンス障害を検知してリプレースするまでのタイムラグが約20分だと分かりました。
本日、インスタンスの状態をチェックするEC2 Status Checkが1分間隔になった(以前は5分間隔)と発表されたので、
これによってタイムラグが短縮されたかを検証してみます。
設定
手順は前回と一緒なので省略
自動復旧
通信を遮断し、Status Check Failを発動させる
123
ubuntu@ip-10-123-32-180:~$ date; sudo ifdown eth0
Sat Dec 14 14:19:19 UTC 2013
Write failed: Broken pipe
EC2のStatus Checkを流す
while true; do date; aws ec2 describe-instance-status --instance-ids i-b03788b5 --query 'InstanceStatuses[*].InstanceStatus' --output text ; echo ; sleep 10; done
123456789101112131415
Sat Dec 14 23:22:05 JST 2013
ok
DETAILS reachability passed
Sat Dec 14 23:22:16 JST 2013
ok
DETAILS reachability passed
Sat Dec 14 23:22:27 JST 2013
impaired
DETAILS 2013-12-14T14:22:00.000Z reachability failed
Sat Dec 14 23:22:37 JST 2013
impaired
DETAILS 2013-12-14T14:22:00.000Z reachability failed
約3分でStatus異常が検知されました。
Auto ScalingのHealthStatusを流す
while true; do date; aws autoscaling describe-auto-scaling-instances --query 'AutoScalingInstances[*].HealthStatus' --output text; echo; sleep 10; done
Sat Dec 14 23:38:06 JST 2013
[
{
"State": "InService",
"Health": "HEALTHY",
"ID": "i-b03788b5"
}
]
Sat Dec 14 23:38:17 JST 2013
[
{
"State": "InService",
"Health": "UNHEALTHY",
"ID": "i-b03788b5"
}
]
Sat Dec 14 23:38:28 JST 2013
[
{
"State": "InService",
"Health": "UNHEALTHY",
"ID": "i-b03788b5"
}
]
Sat Dec 14 23:38:38 JST 2013
[
{
"State": "Terminating",
"Health": "UNHEALTHY",
"ID": "i-b03788b5"
}
]
Sat Dec 14 23:38:49 JST 2013
[
{
"State": "Terminating",
"Health": "UNHEALTHY",
"ID": "i-b03788b5"
}
]
Sat Dec 14 23:38:59 JST 2013
[
{
"State": "Terminating",
"Health": "UNHEALTHY",
"ID": "i-b03788b5"
}
]
Sat Dec 14 23:39:10 JST 2013
[
{
"State": "Pending",
"Health": "HEALTHY",
"ID": "i-4cc7a849"
},
{
"State": "Terminating",
"Health": "UNHEALTHY",
"ID": "i-b03788b5"
}
]
やっとAuto Scalingの方でも異常検知。
SNS通知
12345678910111213141516
Service: AWS Auto Scaling
Time: 2013-12-14T14:39:41.271Z
RequestId: f622c6d2-8c77-4fef-8b38-ece463574712
Event: autoscaling:EC2_INSTANCE_TERMINATE
AccountId: 111155559999
AutoScalingGroupName: test-sg
AutoScalingGroupARN: arn:aws:autoscaling:ap-northeast-1:11115559999:autoScalingGroup:0e771015-f979-4afe-b065-595abafdbf9b:autoScalingGroupName/test-sg
ActivityId: f622c6d2-8c77-4fef-8b38-ece463574712
Description: Terminating EC2 instance: i-b03788b5
Cause: At 2013-12-14T14:38:38Z an instance was taken out of service in response to a system health-check.
StartTime: 2013-12-14T14:38:38.257Z
EndTime: 2013-12-14T14:39:41.271Z
StatusCode: InProgress
StatusMessage:
Progress: 50
EC2InstanceId: i-b03788b5
やはり20分のタイムラグ変わらずですね。。
結論
というわけで、EC2 Status Checkが1分間隔になっても、EC2のみ(ELBを使わい場合)のAuto Scalingによる不調インスタンスの自動復旧時間は変わらずでした。