tail -f /dev/null

If you haven't had any obstacles lately, you're not challenging. be the worst.

サービスが稼働している既存構成に AZ を追加し 3AZ 構成にする

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 する.