導入
アクセスが増えたときにサーバー1台で受け続けると、いずれ限界が来てサイトが落ちてしまいます。ELBとAuto Scalingを組み合わせると、アクセスの増減に自動で対応できるようになります。
説明
**ELB(Elastic Load Balancing)**は、1つの入り口(エンドポイント)で受けたアクセスを、複数のEC2インスタンスへ自動的に振り分けるサービスです。主に次の2種類があります。
- ALB(Application Load Balancer) … HTTP/HTTPS(レイヤー7)を理解し、URLのパスやホスト名で振り分け先を変えられる。一般的なWebアプリで最もよく使う。
- NLB(Network Load Balancer) … TCP/UDP(レイヤー4)レベルで超高速に処理する。固定IPが必要、極めて高いパフォーマンスが必要、といった場面で使う。
Auto Scalingは、負荷(CPU使用率など)に応じてEC2インスタンスの台数を自動的に増減させる仕組みです。台数を増やすことをスケールアウト、減らすことをスケールインと呼びます。
graph TD user["ユーザーからのアクセス"] --> elb["ELB(負荷分散)"] elb --> e1["EC2 #1"] elb --> e2["EC2 #2"] elb --> e3["EC2 #3(Auto Scalingで追加)"] as["Auto Scaling"] -- 負荷が高いと増設 --> e3
ここで、スケールの方向性を区別しておきましょう。
- 垂直スケーリング(スケールアップ) … 1台のサーバーの性能そのものを強化する(インスタンスタイプを大きくする)。台数は変わらないが、単一障害点は残る。
- 水平スケーリング(スケールアウト) … サーバーの台数を増やす。ELBと組み合わせることで、1台が壊れても他が処理を続けられる(可用性が上がる)うえ、需要に応じて柔軟に増減できる(弾力性が上がる)。
クラウドでは、複数の安価なサーバーを組み合わせる水平スケーリングが基本戦略になります。
読んでみよう
「ELB=振り分け」「Auto Scaling=台数の自動調整」という役割分担と、水平スケーリングが可用性・弾力性の両方を高めることを押さえておきましょう。