/home/by-natures/dev*

ソフトウェア開発者としての技術的なメモと、たまに普通の日記。

2019/06/19 Elastic Beanstalk の ALB の scaling trigger では RequestCount がうまく機能しない

Elastic Beanstalk では ALB を簡単に定義することができます。今構築しているアプリケーションでは、リクエストがシンプルかつ大量であるため、リクエスト数に応じてスケーリングさせようと思い、スケーリングトリガーのメトリクスで RequestCount を設定していました。

ただあまりこの値を利用している例が見つからず、、AutoScalingGroup で直接、RequestCountPerTarget を設定している方はいましたが、RequestCountPerTarget は Elastic Beanstalk の管理画面では設定できません。ひとまずインスタンス化下限を十分大きな値にしてステージング環境で色々と調べたところ、RequestCount は ELB に対する指標で、有効指標が Sum であることから、ロードバランサーにどれだけリクエストが届いているか、という値で、いくらスケーリングしてもこの値は変化することはないようです。この辺りのフォーラムと:

https://forums.aws.amazon.com/thread.jspa?threadID=247542

https://forums.aws.amazon.com/message.jspa?messageID=399607

あとは公式の指標説明のドキュメントが役に立ちます:

docs.aws.amazon.com

そうすると、TargetResponseTime を使うか、NetworkIn/Out を使うかといったところで(CPU 消費するアプリケーションならCPUが良いと思いますが今回はCPUほとんど消費しないアプリケーションなのです)、リクエストがシンプルなので NetworkOut が有効指標になるかなと思っています。まだクラスタ立ち上げたばかりなので多めのインスタンスで立てておいて様子見中です。Beanstalk の公式ドキュメントでは NetworkOut をベースに説明されていて、初期値も NetworkOut の下限2MB上限6MBなので、とりあえずこれを参考にしつつ閾値調整かなぁと思っています。

docs.aws.amazon.com