Amazon ECSでインスタンスタイプを変更する

弊社ではスケーラブルかつポータブルなインフラ基盤を実現するため、各種サービスでDocker/ECSを運用しています。Docker/ECSを利用したシステム開発についてご興味のある方は弊社窓口までお問い合わせくださいませ。


最近、ECSでのインスタンスタイプの変更を行う機会が多くあり、手順をまとめてみました。ECSではデフォルトでAuto Scalingを利用するため、基本的にAuto Scalingのインスタンスタイプ変更に沿った形で行っていくことになります。ただ、適当にやると意外とハマります ^^;
今回ご紹介するのは、2インスタンスのクラスタ、Auto Scalingを利用している場合で、一時的に1インスタンスでの縮退運転が許される場合の手順となります。

まず、Auto Scalingでインスタンスタイプを変更する際の一般的な方法に沿って作業します。

1. Auto Scaling Groupの起動設定で、既存の起動設定をコピーして、インスンタンスタイプを変更した起動設定を作成します。

2. Auto Scaling Groupの起動設定を上記で作成したものに変更します。

3. ECS側で、1台のコンテナインスタンスの詳細画面から、「登録解除」します。

登録解除をすることで、タスクを停止し、ELBからの安全な切り離しを行います。なお、この時点ではEC2インスタンス自体は起動したままの状態です。

4. EC2側から上記インスタンスを停止します。

インスタンスを停止すると、Auto Scalingの新しい起動設定に従い、新しいインスタンスタイプでインスタンスが立ち上がってきます。

5. 新しいインスタンスタイプでインスタンスが起動していることを確認します。

今回の場合、t2.micro→t2.smallに変更したのですが、無事に変更できていることが確認できました。

一般的なWebサービスでしたらELBに紐付けしている場合が多いと思いますので、タスクの確認およびELBでIn Serviceになっていることも確認したほうがよいかと思います。

これで片系のインスタンスタイプ変更が完了しました。もう一台は3〜5と全く同じ手順でOKです。

これで完了です。縮退運転をしたくない場合には3からの手順をちょっと変えて、オートスケールでインスタンス数を増やしてから、再度オートスケールで減らすという手順でOKです。

注意点

ECS側のコンソールにもインスタンスをスケールさせるボタンがあります。

このボタンがちょっとクセモノです。
インスンタンスタイプを変更した起動設定を作成して、Auto Scaling Groupの起動設定を変更後、このボタンを使って台数を増やすと、変更したはずのAuto Scaling Groupの起動設定が元に戻ってしまい、変更前のインスタンスタイプで起動してしまうという現象が発生しました。インスタンスタイプ変更のためのスケール時には2017年9月現在このボタンは使えません。

以上、ECSでのインスタンスタイプの変更方法をご紹介しました。ECSは内部で利用しているEC2, Auto Scaling, ELBなどの連携がちょっとイマイチな感じで、もうちょっとシームレスになっててくれればよいなと思います。

このエントリーをはてなブックマークに追加