こんにちは、@Manabu です。
最近、1からAWS環境を構築する機会がありました
その中で、AutoScalingを使用してEC2を複数のアベイラビリティゾーン(以下、AZ)に分散して配置しようとした際に、期待通りに動作なかった事象が発生しました。
簡単なことなのに、解決するまでに3時間以上かかりましたので、共有させていただきます。
ぜひ参考にして下さい。
今回の構成
今回想定している構成は、よくある以下のようなCloudFront+ALB+EC2(2台)構成です。
EC2のインスタンスタイプは、「t3a.mideum」で、配置するAZに関しては特に決めていませんでした。
ALBとASGの設定
ALBには以下のように、1aと1cに作成したサブネットにルーティングするように設定しました。
また、AutoScalingグループの設定でも、それぞれ作成したAZのサブネットに作成させるように設定していました。
発生した問題と原因、解決策
上記のように設定しているにも関わらず、2台のインスタンスはどちらも1aのAZにあるサブネットに作成されました。
ネットで検索しても、設定する場所に関しては問題ないようでしたので、何度も挑戦し色々試しましたが、うまくいきませんでした。
原因
色々調査した中で、EC2のインスタンスタイプには、サポートされていないAZがあるということを知りました。
調べてみると、案の定1cではt3a.mideumのインスタンスタイプがサポートされていませんでした。
解決策
サポートされているのは、1aと1dだということがわかったため、ALBとASGの設定を対象のAZに変更し、起動させると正しくAZが分散された状態でEC2が立ち上がりました。
サポートされているAZで起動させるということが大事ですね。
まとめ
これまで、インスタンスタイプにはサポートされていないAZがあるなんてことは知りませんでした。
警告も出ず、サポートされているAZでのみ起動するため、見逃しがちになります。
皆さんはこのような事象が発生しないように、注意して構成を検討することをお勧めします。