EC2のautoscalingの設定

Auto Scalingの仕組みを構築するには二つの作業が必要
1. 起動設定の作成
2. Auto Scalingグループの作成

自動で作成されるEC2がどのAMIを使うか、インスタンスタイプは何にするか、ボリュームサイズはどうするかなどを設定する

### 1.Launch Configurations
– EC2左メニューのLaunch Configurations
– Create launch configuration
– EBS, IAM role, Security Groupは通常のインスタンス作成時と同様
– Advance Detailsで「Assign a public IP address to every instance.」を選択する

### 2. Auto Scalingグループの作成
– 最大の台数と最小の台数を決定する
– Create Auto Scaling Group
– 1で作成したconfigを選択
– group name: autosacling-group
– Start with 1 instance
– Netwrok(VPC)とSubnetを1で構築したインスタント同様のものを選択
– [Keep this group at its initial size]は、障害時に同様のインスタンスを保つ
– [Use scaling policies to adjust the capacity of this group]はサーバ負荷に応じて増減する
— Scale between ${min} and ${max} instances
— Name: AutoScaling-group-size
— Metric type: Average CPU Utilization
— Target value: 70(%)
— Instances need: 300 seconds to warm up after scaling
->作成すると、EC2一覧で、auto scaleインスタンスが新規に作成される

### スケールアウトテスト
1.ターミナルを二つ起動
2.ssh login
$ ssh ec2-user@**.***.***.** -i ~/.ssh/*.pem

topコマンドで%Cpu(s)でCPU使用率を確認
$ top

top - 20:19:08 up 8 min,  2 users,  load average: 0.00, 0.01, 0.00
Tasks:  85 total,   1 running,  48 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   490884 total,   107768 free,    68180 used,   314936 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   409824 avail Mem 

もう一方のターミナルでサーバに負荷をかける
$ yes > /dev/null
-> %Cpu(s)が99近くに上昇

top - 20:21:38 up 11 min,  2 users,  load average: 0.44, 0.11, 0.04
Tasks:  86 total,   2 running,  48 sleeping,   0 stopped,   0 zombie
%Cpu(s): 99.3 us,  0.7 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   490884 total,   108424 free,    67140 used,   315320 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   410864 avail Mem

300秒(5分)程度、待ちます。
すると、自動的にインスタンスが作成されます。VPC, subnet, IAM-roleなどはconfigurationで設定した内容

### スケールインテスト
$ ps -a
CMDがyesをkillする

すると、%Cpu(s)が99%から0に急減します。

top - 20:35:06 up 24 min,  3 users,  load average: 0.85, 0.92, 0.61
Tasks:  88 total,   1 running,  51 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   490884 total,   104732 free,    70548 used,   315604 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   407424 avail Mem 

この状態で再度、300秒(5分)程度、待ちます。
※auto scaling groupのDesired Capacityが2だと、CPU使用率が下がっても、scale inしません。

すると、古い方のinstanceがterminateされました。
Last In First Outか、First In First Outかどちらか気になりましたが、FIFOのようです。
auto scalingは仕組みとして面白いです。