はじめに
概要
本記事では、AWSのElastic Load Balancing(ELB)についてわかりやすく解説します。ELBは受け取った通信(トラフィック)を複数のサーバーに振り分ける仕組みで、サービスの安定稼働と拡張性を支える重要な役割を果たします。
なぜ重要か
例えばオンラインショップを想像してください。訪問者が増えると、一台のサーバーだけでは処理が追いつかなくなります。ELBを使えばアクセスを複数のサーバーに分散し、応答速度の低下や停止を防ぎます。また、故障したサーバーを自動で外すことでサービスの信頼性を高めます。
誰に向けた記事か
システム担当者や運用担当、これからクラウドを学ぶ技術者、さらにはサービスの可用性や拡張性に関心がある方に向けています。専門用語はできるだけ抑え、具体例を交えて説明します。
本記事の構成
全6章で構成します。第2章でELBの基本、第3章で主要な機能、第4章で種類の違い、第5章で導入の効果、第6章で実装時の注意点を順に解説します。まずは第1章として全体像をつかんでください。
AWS ELBとは何か
概要
AWS ELB(Elastic Load Balancing)は、受け取ったアクセスを複数のサーバーやコンテナに自動で振り分けるフルマネージド型のサービスです。交通整理のようにリクエストをさばき、特定のサーバーに負荷が集中するのを防ぎます。これによりサイトの表示遅延やダウンを減らします。
動き方(しくみのイメージ)
ELBは「入口」に当たる役割を果たします。ユーザーからの通信を一旦受け取り、登録された複数のサーバー(ターゲット)へ順番に振り分けます。サーバーの状態を定期的に確認(ヘルスチェック)し、問題があるサーバーには配信を止めます。たとえば、店舗に並ぶお客さんを各レジに案内する係のようなイメージです。
具体例
- Webサイト:アクセスが増えたときに複数のEC2やコンテナに振り分けて応答速度を保ちます。
- API:短時間に多くのリクエストが来ても、複数のインスタンスで処理を分担します。
付随する機能の簡単な説明
- 自動的な故障回避:不調なサーバーを自動で除外します。
- 暗号化対応:SSL/TLSの終端処理をELB側で行い、サーバーの負担を減らします。
- スケールとの連携:サーバー台数を増減する仕組みと一緒に使えます。
ELBは、運用の手間を減らしつつ可用性と応答性を高めるための基盤的なサービスです。初心者でも概念をつかみやすく、実際の構成では他サービスと組み合わせて使います。
ELBの主要な機能
負荷分散(ロードバランシング)
ELBは受信するリクエストを複数のサーバーに自動で振り分けます。例えば、Webサイトに同時に多くの人が来ても、ELBがリクエストを分散して各サーバーの負担を軽くします。
ヘルスチェック
ELBは各サーバーの状態を定期的に確認します。応答がないサーバーを発見したら、そのサーバーには新しいリクエストを送らず、正常なサーバーにだけ振り分けます。これで利用者に障害の影響を与えにくくします。
自動スケーリングとの連携
トラフィックが増えればサーバーを増やし、減れば減らす仕組みに簡単に接続できます。たとえばアクセスが急増した通販のセール時に、自動でリソースを追加して処理を保ちます。
SSL/TLSオフロードとセキュリティ
暗号化通信の処理をELB側で行うと、各サーバーの負担を減らせます。証明書の管理も集中できるので運用が楽になります。
セッション維持(スティッキーセッション)とルーティング
同じ利用者のリクエストを同じサーバーに送る設定が可能です。ログイン状態やカート情報を保持したいアプリで便利です。さらに、URLのパスやホスト名で振り分ける細かなルールも使えます。
ログとモニタリング
アクセスログやメトリクスを出力して、トラフィック傾向やエラーを確認できます。運用中の問題発見や性能改善に役立ちます。
ELBの4つの種類
Application Load Balancer (ALB)
ALBはアプリケーション層(HTTP/HTTPS)で動作し、URLのパスやホスト名で細かく振り分けます。たとえば「/api」はAPIサーバへ、「/images」は画像サーバへ送るといった使い方が簡単です。Webサービスやマイクロサービスに向いています。SSL終了(HTTPSの復号)やWebSocketもサポートします。
Network Load Balancer (NLB)
NLBはトランスポート層(TCP/UDP)で高速かつ低遅延の負荷分散を行います。大量の接続や高いスループットが必要なサービスに適しています。静的IPを割り当てられるため、ファイアウォール設定と相性が良いです。
Classic Load Balancer (CLB)
CLBは以前からある従来型のロードバランサーです。古いアーキテクチャや互換性を優先する既存システムで使われます。機能は限定的なので、新規構築ではALBかNLBを選ぶことが多いです。
Gateway Load Balancer (GWLB)
GWLBはトラフィックを仮想アプライアンス(IDS/IPSやファイアウォール)に透過的に送る用途に特化します。セキュリティ機器やトラフィック解析を複数のバックエンドでスケールさせたい場合に便利です。
ELBの利点と効果
高可用性の実現
ELBは複数のアベイラビリティゾーン(AZ)にトラフィックを分散します。これにより、あるゾーンで障害が発生しても他のゾーンが受け持ってサービスを継続できます。たとえば、東京リージョンで1つのサーバー群が停止しても、別のAZが自動で処理を引き継ぎます。
スケーラビリティの向上
トラフィックが増えるとELBがリクエストを均等に振り分けます。オートスケーリングと組み合わせれば、アクセス集中時も応答を保てます。たとえばセール時の突発的なアクセス増加でも、ユーザーの待ち時間を抑えられます。
運用コストと管理負担の軽減
ELBはマネージドサービスのため、ロードバランサー自体の保守やソフトウェア更新をAWSが行います。自社でロードバランサーを立てて維持するより運用工数とコストが少なくて済みます。
信頼性と可観測性の向上
ヘルスチェック機能が正常でないバックエンドを自動で切り離します。これにより障害の影響を最小化できます。また、アクセスログやメトリクスでトラフィック状況を把握でき、問題検出や改善につなげやすいです。
性能とセキュリティの補助
TLS終端(SSLオフロード)をELBで行うとバックエンドの負荷が下がり、応答性能が向上します。簡単なWAF連携やIP制限でセキュリティ強化も図れます。
具体的な効果の例
ショッピングサイトでの例:複数AZに展開したアプリにELBを置くことで、突発的なアクセス増でも購入処理が止まりにくくなり、運用負荷も減ります。したがってビジネス継続性と顧客満足度が高まります。
実装上の考慮点
1) ロードバランサーの選択基準
用途に合ったタイプを選びます。例えば、WebサイトやAPIでURLやヘッダー単位の振り分けが必要ならALB、TCPやUDPで高スループット・低遅延が重要ならNLBが適します。シンプルなレイヤー4の振り分けだけでよければ、CLBやNLBを検討します。
2) 可用性と冗長化
複数のアベイラビリティゾーン(AZ)にインスタンスを分散して、高可用性を確保します。AZ間で同じ設定を用意し、ヘルスチェックで不調なバックエンドを即座に外すようにします。障害時のフェイルオーバーを想定した計画を作成してください。
3) スケーリング設計
トラフィックの増減に合わせて自動スケールを設定します。CPUやリクエスト数など具体的な指標を閾値にして、必要な台数を自動で増減させます。ピーク時のテストを行い、スケールが追いつくか確認します。
4) セキュリティと接続設定
HTTPSを必ず使い、証明書管理(例:AWS Certificate Manager)を自動化します。セキュリティグループやファイアウォールで不要なポートを閉じ、クライアントIP制限やWAFで攻撃対策を行います。
5) 監視・ログとアラート
ELBのアクセスログとメトリクスを有効にして、異常時に通知が届くようにします。平均応答時間やエラー率を監視し、閾値を越えたら運用担当にアラートを出す設定にします。
6) コスト管理
不要なリソースを止める自動化や、利用状況に応じたインスタンスタイプの見直しでコストを抑えます。ログ保存期間や転送量もコストに影響しますので定期的に確認してください。
7) テストと運用手順
デプロイ前にステージング環境で切替テストや障害注入テストを実施します。運用手順書を作り、再現手順・ロールバック手順・連絡先を明確にしておきます。












