web100tips’s blog

webエンジニアが知っておくべきこと100を1日1投稿します

Webエンジニア必須!ロードバランサー(ALB/Nginx)の基礎と実践ガイド

 

ロードバランサーとは?ALBとNginxによる負荷分散の仕組みと実践

サービスのアクセスが増えるにつれて、1台のサーバーで処理するには限界が来ます。そこで登場するのが「ロードバランサー」。本記事では、Webエンジニアが知っておくべきロードバランサーの基本、NginxやAWS ALB(Application Load Balancer)の役割と使い方を、実例を交えて徹底解説します。

1. ロードバランサーとは何か?

ロードバランサーは、複数のサーバー(バックエンド)にリクエストを分散して、高可用性・スケーラビリティを実現するためのミドルウェア/サービスです。

  • トラフィックの集中を避けてサーバーの負荷を分散
  • 障害時にも別サーバーへ切り替えることで可用性を確保
  • HTTPS終端やヘッダー書き換え、パスルーティングも可能

2. ロードバランサーの主な種類

3. Nginxによるロードバランシング

Nginxは軽量なWebサーバーであり、強力なリバースプロキシ/ロードバランサー機能を備えています。

設定例

http {
  upstream backend {
    server backend1.example.com;
    server backend2.example.com;
  }

  server {
    listen 80;

    location / {
      proxy_pass http://backend;
    }
  }
}

主な機能

4. AWS Application Load Balancer(ALB)

ALBはAWSが提供する第7層(アプリケーション層)のロードバランサーです。

  • URLパスやホスト名に基づいたルーティング(例:/api/* → APIサーバー)
  • HTTPS終端(証明書の自動管理)
  • ターゲットグループによるバックエンドの管理
  • CloudWatch連携でヘルスチェックやモニタリング可能

ALB構成例

  • ALB → ターゲットグループ → EC2 / ECS / Lambda
  • リスナー:HTTP(80) / HTTPS(443)
  • 条件付きフォワーディング(ホスト、パス、ヘッダーなど)

5. NginxとALBの比較

項目 Nginx ALB
提供形態 自ホスト型(VM/コンテナ) AWSマネージド
ルーティング制御 柔軟(設定ファイル) GUI/JSONで条件指定
SSL証明書管理 手動 or Let's Encrypt AWS ACMと統合
コスト 低コスト リクエスト/時間に応じた課金
導入の容易さ サーバー必要 数クリックで導入可能

6. よく使われる分散アルゴリズム

  • ラウンドロビン 順番に割り振る(デフォルト)
  • 最小接続: 最も接続数が少ないサーバーへ
  • IPハッシュ: クライアントIPに基づいて固定

7. 関連知識

  • スティッキーセッション: 同じユーザーを同じサーバーに維持する
  • ヘルスチェック: 異常なサーバーを自動的に切り離す
  • SSL終端: ロードバランサーSSL通信を解除して内部はHTTP
  • オートスケーリング: バックエンドのスケールアウトと連動可能

8. まとめ

ロードバランサーはWebシステムの安定運用と拡張性に欠かせない存在です。
小〜中規模ではNginx、大規模かつマネージド環境ではALBと、状況に応じて適切なツールを選定しましょう。

参考リンク