web-dev-qa-db-ja.com

AWS自動スケーリンググループで頻繁に終了するスポットインスタンス(システムヘルスチェックの失敗)

2つの自動スケーリンググループがあり(1つはオンデマンド用、もう1つはスポットインスタンス用)、どちらも静的なインスタンス数に設定されています(この場合、最小、最大、および希望はすべて同じです-この場合は5)。オンデマンドグループのインスタンスは稼働し続けますが、スポットグループのインスタンスは、システムヘルスチェックのために頻繁に終了します。 EC2管理コンソールの[Scaling History]タブで終了したインスタンスに対して表示されるメッセージは次のとおりです。

「2014-05-07T18:06:45Zに、システムヘルスチェックに応じてインスタンスがサービスを停止しました。」

スポットインスタンスがヘルスチェックに失敗した理由がわかりません。私たちの入札価格は高く、インスタンスはスポット価格(スポット価格の履歴に基づく)のために終了されるべきではないと思います。インスタンスが起動されるAZも調整しましたが、違いがわかりません。最近終了したインスタンスのsyslogを確認しても、疑わしいメッセージは表示されません。両方のグループでプライベート/カスタムAMIを使用していますが、より一般的なAMIに切り替えると同じ動作が見られます(alestic.comにリストされている「Ubuntu 12.04 LTS Precise EBSブート」イメージ-AMI-5db4a934)。繰り返しになりますが、オンデマンドインスタンスは稼働し続け、ヘルスチェックに失敗しません。 「EC2」ヘルスチェックタイプを使用しています。

AWS CLIを介して起動設定を作成するために使用しているコマンドは次のとおりです。

aws autoscaling create-launch-configuration \
--launch-configuration-name [name] \
--image-id AMI-5db4a934 \
--key-name [our key] \
--security-groups [our SGs] \
--instance-type m3.xlarge \
--block-device-mappings '[ { "DeviceName": "/dev/sda1", "Ebs": { "VolumeSize": 8 } } ]' \
--spot-price "1.00"

これが何であるか、またはスポットインスタンスがヘルスチェックに失敗している理由をより明確にする方法を誰かが知っていますか?

7
Derek Morrison

更新

私たちの入札価格は高く、インスタンスはスポット価格(スポット価格の履歴に基づく)のために終了されるべきではなかったと思います

Amazon EC2スポットインスタンス がAWSによって終了される唯一の原因はスポット価格の競合ではありません。別の注目すべき問題は、容量の競合です。

  • 利用可能なスポットインスタンスの容量は、通常のインスタンスの需要に依存します。通常のオンデマンドインスタンスをリクエストするユーザーが利用できる特定のタイプのインスタンスがない場合、AWSはそれらのリクエストを満たすためにスポットインスタンスの終了を開始します。
  • 実際、私はus-east-1これまでのところ他の場所よりも頻繁であり、最近の月は新しいm3/c3/i3インスタンスタイプファミリーの方がはるかに頻繁です(時間の経過とともに容量が増加することの理解できる影響)。

スポットリクエストの終了の実際の原因は、 AWS Management Console で手動で確認できます。 AWS CLIの describe-spot-instance-requests を介して。スポットインスタンスの高度な使用法については、 スポットリクエストの追跡を入札ステータスコード で開始し、インスタンスの終了と関連付けて、運用上の最適な洞察を得ることをお勧めします。詳細については、 スポットリクエストのライフサイクル および スポット入札ステータスコードリファレンス を参照してください。特に、AWSによるスポット終了の次の理由をご覧ください。 :

  • instance-terminated-by-price

    スポット価格が入札価格を上回りました。リクエストが永続的な入札である場合、プロセスまたはライフサイクルが再開され、入札は再び評価待ちになります。

  • instance-terminated-no-capacity

    インスタンスで使用可能なスポット容量はなくなりました。

  • instance-terminated-capacity-oversubscribed

    入札価格が入札価格以上のスポットリクエストの数がこのプールで利用可能な容量を超えたため、インスタンスは終了しました。これは、入札がスポット価格で行われたためにスポット価格が変更されていない場合でも、インスタンスが中断されたことを意味します。

  • instance-terminated-launch-group-constraint

    起動グループ内のインスタンスの1つが終了したため、起動グループの制約が満たされなくなりました。


最初の回答

「2014-05-07T18:06:45Zに、システムヘルスチェックに応じてインスタンスがサービスを停止しました。」

この誤解を招くメッセージは、スポット価格の競合が原因で Amazon EC2スポットインスタンス が終了したときに報告されるメッセージにすぎません。 Auto Scalingメッセージとスポットインスタンスの終了に対するAWSチームの応答

スポット価格が原因でインスタンスが終了したのは正しいです。

ヘルスチェックの直前にインスタンスが終了したため、インスタンスはまだASグループに関連付けられているため、サービスから除外されました。

これに関してAWSが Auto ScalingAmazon EC2 の統合を改善できなかった理由は、私にはわかりませんが、これらは実際には2つの別個のサービスであると考えるとより意味があります。したがって、「外部」スポットマーケットバックエンドがEC2インスタンスを終了すると、Auto Scalingの観点からは単に「不健全」になります-これは一種の文書化されています Auto Scalingによって起動されたインスタンスに関する情報の取得

  • 原因:2012-06-01T00:47:51Zに、システムのヘルスチェックに応じてインスタンスがサービスを停止しました。説明:EC2インスタンスを終了しています:i-88ce28f1

    Auto Scalingは、Auto Scalingグループ内のインスタンスのヘルスステータスを監視することにより、必要なインスタンス数を維持します。 Auto Scalingは、インスタンスが異常または終了したという通知を受け取ると、異常なインスタンスの代わりに別のインスタンスを起動します。 [...]


    Auto Scalingは、スケーリングアクティビティの結果ではないインスタンスの終了の原因を提供します。 これには、スポット価格が入札価格を超えたために終了したインスタンスが含まれます[重点鉱山]
11
Steffen Opel

気にしないでください-それは私たちの側の問題でした(誤ったバックグラウンド処理でスポットインスタンスが強制終了)。恥ずかしい!

1
Derek Morrison