[新機能]ECSがAutoScalingに対応しました!

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンニチハ、首が長くなっていた千葉です。(待ちすぎて)

ECSがAutoScalingに対応しました!さっそく試してみました。

対応リージョン

20160519時点で

  • US East (N. Virginia)
  • US West (Oregon)
  • EU (Ireland)

AWSはアップデートが早いのでリージョン追加されているかもしれないので、最新情報をご確認ください。

何ができるの?

ECSのサービスに対して、Auto Scalingを行うことができます。スケーリングポリシーとしてCloudWatchのアラームを指定します。つまり、CloudWatchのアラームベースでサービス数をスケーリングすることができます。サービスで利用しているメモリ、CPU利用状況、また独自のアラーム(ELBやSQS)も指定可能です。このメトリクスに変化がった時に、スケールアップ、ダウンが実施することができます。

ただ、ECSサービスのAuto Scalingと、ECSクラスタ(EC2)のAuto Scalingは連動しないようです(例えば、ECSサービスが3になったから、ECSクラスタも3になるというような動作)。ECSクラスタ(EC2)のAuto Scalingは別途考慮する必要がありそうです。

環境セットアップ

まずは、ECSの環境をセットアップします。(ECS環境がない人向け。すでにセットアップしてあればスキップ)

ECSの[Getting Started(https://console.aws.amazon.com/ecs/home?region=us-east-1#/firstRun)よりセットアップします。

20160519-ecs-as-1

ECRへpushするデモ用のDockerfile

FROM ubuntu:12.04

# Install dependencies
RUN apt-get update -y
RUN apt-get install -y git curl apache2 php5 libapache2-mod-php5 php5-mcrypt php5-mysql

# Install app
RUN rm -rf /var/www/*
ADD src /var/www

# Configure apache
RUN a2enmod rewrite
RUN chown -R www-data:www-data /var/www
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2

EXPOSE 80

CMD ["/usr/sbin/apache2", "-D",  "FOREGROUND"]

参考

ECSサービスのAuto Scalingの設定

ECSサービスのAuto Scalingは、以下より設定します。

20160519-ecs-as-2

20160519-ecs-as-3

設定は、サービスの最低数、最大数、希望数となります。スケーリングポリシーとしては、CloudWatchのアラームを指定できます。

20160519-ecs-as-4

20160519-ecs-as-5

最後に

ECSサービスがAuto Scalingに対応しました。待っていた方も多いのではないかと思います。今後は、ECSサービスとECSクラスタ(EC2)それぞれAuto Scalingポリシーを設定する必要があるため、もう少し検証してベストな設定についてブログを書きたいと思います。

参考

http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/service-auto-scaling.html

  • pottava

    うちの社内でも妄想で検証してみたのですが、現実的に複数のサービスが稼働している状態でスケールダウンさせるための設定が結構難しそうです。ベストな設定楽しみにしています!!

    • Jun Chiba

      コメントありがとうございます!
      そうなんですよね(汗
      機能改善要望にたどり着くかもしれませんが、検証してみます!