本文へスキップ
BecomeCoder

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

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

導入

アクセスが増えたときにサーバー1台で受け続けると、いずれ限界が来てサイトが落ちてしまいます。ELBAuto 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=台数の自動調整」という役割分担と、水平スケーリングが可用性・弾力性の両方を高めることを押さえておきましょう。