私の戦闘力は53万です

awsとgcpについて書きます

AWS Autoscaling設定時に気をつけたいこと・アンチパターン

AWSのAutoscalingという機能があります。
これは便利な機能なのですが、アプリケーションもそれに対応した作りになっていた方が相性が良いです。
逆を言えば、AWSのベストプラクティスに従わないと途端に運用が大変になってしまいます。
検討時に気づいて欲しい・・・そんな願いを元にAutoscalingを設定する際に気をつけたいことをまとめてみました。

アプリケーションの作り

EC2内部のアプリケーションがAutoscalingに適した作り(ステートレス)になっているか

これがもっとも重要です。
Autoscalingは、特的の閾値(CPU利用率とか)でインスタンスを増減させます。
つまり、EC2がいつ増えても減っても良いように作っていなくてはいけません。
下記はよくある例です。

スケールインでEC2が削除された場合、
インスタンス内部のログやセッションが削除されます。
そのため、ログファイルを失ったり、
ログインユーザがいきなりログアウトするような事象が発生します。

そのため、上記のよくあるケースに対してはアプリを改良します。下記が対応例です。

  • インスタンス内にファイルを配置しない(EFSやS3を利用する)
  • インスタンス終了時等にログ等の消えて困るファイルをS3等に退避する
  • セッションをインスタンス内に保持しないようにする(elasticache等を利用)
  • LBのスティッキーセッションを利用する(AWS非推奨)

ライセンス関連

オートスケーリングにて増えたEC2内のライセンスが有効かどうかです。
起動して、特別な作業をしないとライセンス関連でエラーが出るケースがあります。
エラーにならなくても大人なのでライセンスはちゃんとしましょう。

AMIの運用

AMIとかをプログラムで世代管理している場合、設定したAMIが無くなることがあるため注意です。
AMIが削除されている場合はスケールアウトしてくれません。

Autoscalingの動きを認識しているか

稀に勘違いしている人がいるのですが、
Autoscalingは決められたAMIを元にEC2をスケールアウトします。
起動中のEC2をコピーして増えてくれると勘違いしている人がいるので


そのほか、AMIの更新運用をどうするか等の問題もありますが、
とりあえず上記は障害に繋がるので、まずは上記観点を気をつけると良いと思います。
誰かの参考になれば幸いです