Auto Scalingからインスタンスをデタッチ・アタッチ
概要
- 今回は、EC2 Auto Scaling 利用時のAuto Scalingグループからインスタンスをデタッチ、アタッチする方法をご紹介します! メンテナンスやテスト等の目的で、すでに動作しているAuto Scaling グループからインスタンスを削除や追加が可能です。
Auto Scalingグループ内のインスタンスをメンテナンスする
手順
- 今回のシチュエーションは、Auto Scalingグループからインスタンスをデタッチして、インスタンスタイプを変更、再度アタッチする流れの作業をご紹介します。なお、Auto Scalingグループのインスタンスは起動テンプレートから起動しているため、最終的に起動テンプレートの更新も行います。
- 作業は、ダウンタイムを回避するため、下記の流れとなります。
- Auto Scalingグループから1台目のインスタンスをデタッチ
- 1台目のインスタンスタイプを変更
- 1台目のインスタンスをAuto Scalingグループにアタッチ
- Auto Scalingグループから2台目のインスタンスをデタッチ
- 2台目のインスタンスタイプを変更
- 2台目のインスタンスをAuto Scalingグループにアタッチ
- 起動テンプレートのインスタンスタイプを変更
- 上記手順以外に、あらかじめ起動テンプレートのインスタンスタイプを更新して、4台までスケールアウトし、2台にスケールインする方法もあります。状況に合わせて、作業手順を計画しましょう。
作業準備
- 現在、対象のインスタンスは2台あり、タイプはc5.largeとなります。
- 作業前に、Auto Scalingグループに登録されているインスタンスのヘルスステータスがhealthy であることを確認します。unhealthy の場合は、原因を調査・対処して、正常な状態から作業を開始しましょう。
インスタンスをデタッチする
- 続けて、Auto Scalingグループのインスタンスより、一方のインスタンスを選択して、デタッチを行います。
- インスタンスのデタッチ時に下記の確認が表示されます。インスタンスのデタッチ時に代替のインスタンスを追加する(Auto Scalingグループの希望数を維持する)場合はチェックを付けます。チェックを付けない場合、インスタンスのデタッチに合わせて、Auto Scalingグループの希望数が減ります。
- インスタンスの最小数(min-size)が2であったため、下記のエラーが表示されました。
- 「AutoScalingGroup XXXXXXXXXX has min-size=2, max-size=2, and desired-size=2. To detach 1 instances, please update the AutoScalingGroup sizes appropriately.」
- Auto Scalingグループの最小数を"1″ に変更して、再度デタッチを行います。
- インスタンスがデタッチ中となりました。希望数が"2″から"1″ に変わったことが分かります。インスタンスはELBの登録から解除され、Auto Scalingグループから切り離されます。
インスタンスのタイプを変更する
- デタッチしたインスタンスを停止し、インスタンスのタイプを変更します。今回は、c5.2xlargeに変更します。
インスタンスをアタッチする
- インスタンスを起動し、インスタンスをアタッチします。
- インスタンスのアタッチ時に下記の確認が表示されます。「既存のAuto Scalingグループ」を選択し、元のグループ名を選びます。アタッチを押すと、Auto Scalingグループへの追加とELBの登録が行われます。
- Auto Scalingグループへのアタッチが完了しました。
- インスタンスがアタッチされると、Auto Scalingグループの希望数が"1″から"2″ に戻っていることが分かります。
- 上記手順と同様に、Auto Scalingグループの他方のインスタンスをデタッチ、インスタンスタイプを変更、再度アタッチします。
- インスタンスの作業が2台とも完了したら、忘れずにAuto Scalingグループの最小数を"2″ に戻します。
起動テンプレートのインスタンスタイプを変更する
- 今回は、起動テンプレートを使ってAuto Scalingを行っているため、起動テンプレートのインスタンスタイプも変更します。これで、次から新たに起動するインスタンスは、変更後のタイプで起動されます。
- いかがでしたか? 今回は、Auto Scalingグループからインスタンスをデタッチ・アタッチしてインスタンスをメンテナンスする方法をご紹介しました。この方法はメンテナンス以外にテスト目的で、インスタンスを 1台切り離すといったことにも利用できますね。
- また、他の方法として、一時的なインスタンス数の増加が許容できれば、あらかじめ起動テンプレートのインスタンスタイプを更新して、4台までスケールアウトし、2台にスケールインする方法もあります。ご活用ください。