2020年8月19日水曜日

AppMeshを試す(4)

 

前回


これまでの関連記事は、下記のとおり


SpotFleet に設定した AutoScalling を試してみます。

AutoScaling の設定


AutoScaling の設定は下図のとおり


「ECSクラスタのCPU使用率」でアラームを設定しています。
CPU使用率が50%を超えるとスケールアウトします。


ECSインスタンスのCPU使用率を上昇


SSMのセッションマネージャで、ECSインスタンスにログインし、stressコマンドでCPU使用率を上昇させてスケールアップするか試してみます。

まず、ECSインスタンスにstress コマンドをインストールします。
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum -y install stress

ECSインスタンスでstress コマンドを実行してCPU使用率をあげます。
$ stress -c 1 -q &

top コマンドでみると下図のとおり. CPU使用率は50%をこえています。


ECSインスタンスのCPU使用率は上昇しましたが、ECSクラスタのCPU使用率は、あまり上
昇しません。
スケールアウトしませんでした。



ECSタスクのCPU使用率を上昇


ECSタスクのCPU使用率を上昇させて、スケールアウトするか試してみます。

テストでは bffコンテナを使用しますが、
bff構築時に設定したCPU割り当て(256)が少ないので、このままだとテストできません。
なぜなら、stressコマンドでCPUを使いすぎてヘルスチェックでNGになり、コンテナがSTOPするからです。
なので、bffコンテナ定義を変更してCPUの割り当てを無効にします。
下記のように cfnテンプレート(cfn_ecs_service_bff.yml)を修正します。


ローカルのcfnディレクトリで下記のようにコマンドを実行して、bffのスタックを更新します。
$ make cfnbff CFNCMD=update-stack

ECSインスタンスで下記コマンドを実行し、bffコンテナに stress コマンドをコピーします。
# docker ps | grep bff_flask
# docker cp /usr/bin/stress <container-id>:/root/.

各bffコンテナに入って、stressコマンドを実行します。
今回はECSサービスの AutoScalingは発動したくないので、CPU使用率を70%以下に抑えます。
# docker exec -it <container-id> bash
# /root/stress -c 1 -q &

クラスタのCPU使用率が50%を超えてアラームが発生します。


アラームが発生すると、SpotFleet がスケールアウトして、インスタンスが1つ増えます。


ECSクラスタのインスタンスは2台になります。


インスタンスが増えたので、クラスタのCPU使用率が下がります。



[MEMO]