1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2 AutoScalingのヘルスチェック猶予期間の算出方法

Posted at

はじめに

AutoScalingのヘルスチェック猶予期間のパラメータの算出方法を備忘として書いておきます。

そもそもAutoScalingのヘルスチェック猶予期間とは?

AutoScalingのヘルスチェックには以下2つのタイプがあります。
・EC2
・ELB
EC2の場合、EC2のステータスチェック(コンソール上2/2OKと出るもの)が評価され、正常な状態であれば、AutoScalingは対象のEC2を正常とみなします。

ELB側を選択すると、ELBのヘルスチェック(HTTPやTCP)結果を元に正常か判断されるため、EC2だけでなく、アプリケーションとしての正常性も評価可能であることから、通常ELBタイプを選択しておくことが望ましいです。
ただし、AutoScalingが発動し、ELBのヘルスチェックに合格する前にAutoScalingがヘルスチェックをしてしまうと、AutoScalingが正常とみなさず、インスタンスを削除してしまいます。これを猶予する期間がヘルスチェック猶予期間です。

適切な設定でない場合の問題

よくある事象が以下の例です。OSなどの起動が間に合わず、ヘルスチェック猶予期間中にALBのヘルスチェックがOKにならず、AutoScalingがインスタンスの削除と追加を繰り返してしまうパターンです。
スクリーンショット 2024-01-28 22.28.46.png

適切な設定値

動きを見ていきましょう。※すべでデフォルト値前提です。
EC2が作成された時点で、ALBはヘルスチェックを開始します。
この時点ではOS、アプリが起動していない場合、30s間隔かつタイムアウト5秒で2連続失敗でNG判定されます。
以後30秒間隔で5連続成功でOK判定されます。
つまり、OS、アプリが起動する時間とヘルスチェックの連続成功するまでの時間をカウントに入れる必要があるということです。

実際の例を見てみましょう。
まずはOKの場合です。
デフォルトのヘルスチェック猶予期間300秒までの間に5連続成功する時間150秒より前にアプリの起動が成功していれば、大抵の場合ヘルスチェックに問題はありません。

スクリーンショット 2024-01-28 22.48.12.png

しかし、300秒より後にヘルスチェックが成功するパターンになると、AutoScalingは削除と作成を繰り返す動作になります。
スクリーンショット 2024-01-28 22.48.21.png

結論

ヘルスチェックの猶予期間は以下の時間を合計した値の最大を目安にするといいです。
・OSの起動時間
・APの起動時間
・ヘルスチェック待機時間(デフォルト30s)
・ヘルスチェック連続成功判定の時間(30s*5回+α)※APのレスポンスタイムを考慮にいれる

まとめ

APのリリースにより起動時間に差分が発生したりすることもあります。リリース後はAutoScalingが頻繁に発動していないかチェックを行い、猶予期間が問題ないかモニタリングしましょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?