本文へスキップ
BecomeCoder

AWSコース · 第3章 コンピューティング · レッスン15

ELBとAuto Scaling ― 負荷分散とスケーリング

導入

アクセスが増えたときにサーバー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台が壊れても他が処理を続けられる(可用性が上がる)うえ、需要に応じて柔軟に増減できる(弾力性が上がる)。

クラウドでは、複数の安価なサーバーを組み合わせる水平スケーリングが基本戦略になります。

具体例

チケット販売サイトの「人気公演の発売日」を想像してください。普段は2台のEC2で足りていますが、発売の瞬間に一気にアクセスが殺到します。

ELBとAuto Scalingを組み合わせておくと、こう動きます。

  1. すべてのアクセスは、まずELBという1つの入り口が受け、2台のEC2へ均等に振り分ける
  2. 発売開始でCPU使用率が跳ね上がると、Auto Scalingが自動でEC2を2台→8台へ増設(スケールアウト)。ELBは増えた8台にも振り分ける
  3. 売り切れてアクセスが落ち着くと、Auto Scalingが台数を2台へ戻し(スケールイン)、料金もムダに増えない
  4. もし8台のうち1台が壊れても、ELBが残りの正常なサーバーだけに振り分けるので、サイトは止まらない

「発売日だけ手動でサーバーを増やす」必要がなく、山にも谷にも自動で追従する——これが水平スケーリングの威力です。

読んでみよう

「ELB=振り分け」「Auto Scaling=台数の自動調整」という役割分担と、水平スケーリングが可用性・弾力性の両方を高めることを押さえておきましょう。

次のレッスンへ →