こんにちは、SRE1課の冨塚です。
みなさんAuto Scaling利用していますか?負荷に応じてインスタンスをスケールアウトやスケールインしてくれる便利なサービスですよね。
ELB配下のEC2をAuto Scaling Groupで構成し状況に応じてスケーリングする環境があるとします。そんな中、稼働中のインスタンスをメンテナンスしたくてサービス止めたいんだけどな、とか思ったことありませんか?もしくはAuto Scaling Groupから外して管理したいんだけどな、などの利用シーンがあるかと思います。実際にサービス(たとえばHTTP)止めた場合はELBのヘルスチェックが失敗し異常とみなされたインスタンスは削除され新しいインスタンスが起動してきます。
そこで今回はメンテナンスしたいインスタンスをAuto Scaling Groupから外した(デタッチ)内容を紹介します。
やりたいこと
ALB+EC2構成でWebサービスを展開している環境で対象インスタンスをデタッチしたい。 EC2はAuto Scaling groupでスケーリングを制御していて、EC2の増減は発生させずに対応したい。
すること
- Auto Scaling Groupから対象インスタンスをデタッチ
作業前の状態
今回の構成はALBで構築しています。最初にターゲットグループを確認します 登録済みターゲットに2台のインスタンスが表示されていることが確認できます
次にAuto Scaling Groupを確認します Auto Scaling Groupにも2台のインスタンスが対象であることが確認できます
デタッチ作業
- EC2コンソール > Auto Scaling グループ > 詳細 を選択し現在の設定を確認します それぞれのインスタンス数は 希望=2、最小=1、最大4 で設定しています。
今回はEC2インスタンス増やしたくないので「負荷を分散するため、新しいインスタンスを Auto Scaling グループに追加します」のチェックはしないですすめます デタッチするとALBのターゲットからも外れてしまいます。そのためALBからバランシングされるEC2が1台減ることになりますので、デタッチする場合は負荷状況を考慮してから実施されることをおすすめします。
操作後はAuto Scaling Groupのライフサイクルの表示はデタッチ中になります ここまでで対象インスタンスをAuto Scaling Groupからデタッチする作業は完了となります。
作業後の状態
デタッチが完了したらそれぞれ状態を確認していきます。 ALBのターゲットグループから対象インスタンスが外れていることを確認します Auto Scaling Groupのインスタンスから対象インスタンスが表示されていないことを確認しますその他
- インスタンスをAuto Scaling Groupへアタッチしたい場合 デタッチしたインスタンスをもう一度Auto Scaling Groupへアタッチすることも可能です。アタッチする場合はインスタンス数の最大サイズを超えていないことを確認してください。 Auto Scaling グループへの EC2 インスタンスのアタッチ
Auto Scaling Groupからデタッチせずにメンテナンスしたい場合 今回ご紹介したデタッチ以外にもインスタンスをスタンバイ状態へ設定することが可能です。一時的にメンテナンスを実施する場合はこちらの内容をご検討ください。 Auto Scaling グループからの一時的なインスタンスの削除
まとめ
- EC2インスタンスを削除せずにAuto Scaling Groupからデタッチできた
- デタッチ後にEC2インスタンスが自動で追加されない動作を確認できた
今回は動いているWebサーバを別のALBへ移すために実施した内容を記載してみました。その他でご紹介したデタッチ以外の対応方法もありますので、ご利用の環境とやりたいことに応じてご検討いただけると幸いです。
それではよいAWSライフをお送りください。
swx-tomitsuka (執筆記事の一覧)