Prerequisites
- AWS 環境において EC2 前段に ALB が存在する構成とする.
- CodeDeploy 経由で application は deploy しており, EC2 は Auto scaling 化されているものとする.
- Staging 環境にて production 環境と同等の EC2 Instance type へ一時的に引き上げる.
- ALB には例として3台 AZ-a, AZ-c の instance が所属しているものとする.
- AZ-d に所属する instance が traffic を受け入れ始めた時点で (Allow Traffic) Apache Bench の test を実施する.
AB test
例として350並列で計17000 requests を送る.
ab -n 17000 -c 350 https://test.local
process が開ける file descriptor の上限値に引っ掛かる場合は上限を引き上げる.
socket: Too many open files (24) ulimit -n 256 ulimit -n 1024
ALB response status, EC2 web server log 等を確認する.
- ALB 5xx response status
- EC2 Web server error log
- AZ-d に所属する instance への request 総数も併せ確認する.
- Application error log
Result
- 現状の構成においては AZ 追加時に暖機は特に必要無かった.
- ので, 今回は AWS 側へ暖機依頼は行わない.
- ALB には例として3台 AZ-a, AZ-c の instance が所属していたが, この場合 ALB へ AZ-d 追加後, max capacity が3だった場合でも, AZ の rebalancing を行う為 4台目の instance が AZ-d にて起動した.
- Auto scaling の event として次のような log が記録される.
a user request added the zones ap-northeast-1d to this AutoScalingGroup and the group may require rebalancing. availability zones ap-northeast-1a ap-northeast-1d had 2 0 instances respectively. An instance was launched to aid in balancing the group's zones.
- 4台目が InService となった後, AZ-a, AZ-c の台数の多い方が Scale-In する.