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は仕組みとして面白いです。