ロードバランサーとは?複数のサーバーへのトラフィック分散
ロードバランサーは複数のサーバーの前に位置し、受信リクエストをそれらに分散するため、単一のサーバーが過負荷にならず、1つが故障してもサービスが利用可能なままになります。
1台のサーバーでは不十分な場合、複数台を稼働させ、その前にロードバランサーを配置します。ロードバランサーは正常なインスタンスにリクエストを分散し、故障したものをローテーションから外し、クライアントに単一の安定したエンドポイントを提示します。ロードバランサーは、スケーリングとゼロダウンタイムデプロイの基礎です。
トラフィックを分散する仕組み
ロードバランサーはアルゴリズム(round robin、least connectionsなど)を使って、各リクエストをどのバックエンドが処理するかを選びます。ヘルスチェックを実行し、失敗したインスタンスへのトラフィック送信を停止するため、ユーザーが壊れたサーバーにアクセスすることはありません。
レイヤー4対レイヤー7
レイヤー4のロードバランサーはIPとポート(TCP/UDP)でルーティングし、高速ですがコンテンツを認識しません。レイヤー7のロードバランサーはHTTPを理解するため、パスやホストでルーティングし、TLSを終端し、アプリケーションレベルのルールを適用できます。Application Load Balancerはレイヤー7です。
何を可能にするか
- 多数のインスタンスにまたがる水平スケーリング。
- インスタンスが故障したときの高可用性。
- 単一のポイントでのTLS終端。
- 異なるサービスへのパスおよびホストベースのルーティング。
ヘルスチェック
ロードバランサーは各バックエンドを定期的にプローブします。ヘルスチェックに失敗したインスタンスは、回復するまでローテーションから外されます。これにより、ユーザーに気づかれることなくデプロイ中にインスタンスを置き換えることができます。
CI/CDでの役割
ロードバランサーはゼロダウンタイムのデプロイを可能にします。パイプラインは新しいインスタンスを立ち上げ、ヘルスチェックに合格するのを待ち、トラフィックをそれらに移し、その後古いものをドレインします。ローリング、ブルーグリーン、カナリアの各戦略はすべて、どのバージョンがトラフィックを受け取るかを制御するためにロードバランサーに依存しています。
重要なポイント
- ロードバランサーは、単一のエンドポイントの背後で正常なバックエンドにトラフィックを分散します。
- レイヤー4はIPとポートでルーティングし、レイヤー7はより高度なルーティングのためにHTTPを理解します。
- ヘルスチェックとトラフィックシフトにより、ゼロダウンタイムのローリングデプロイとブルーグリーンデプロイが可能になります。