回答:
あなたの混乱は合理的です-それらはしばしば同じものです。しかしいつもではない。ロードバランサーとは、非常に具体的なもの、つまり、2つ以上のWebサーバー間で着信要求を分散して負荷を分散するサーバーまたはデバイスを指します。ただし、リバースプロキシには通常、次のような多くの機能があります。
負荷分散:前述のとおり
キャッシング:背後のWebサーバーからコンテンツをキャッシュできるため、Webサーバーの負荷を軽減し、Webサーバーからデータを取得せずに静的コンテンツをリクエスターに返すことができます。
セキュリティ:インターネットからの直接アクセスを防ぐことにより、Webサーバーを保護できます。Webサーバーを難読化するだけで簡単な方法でこれを行うか、実際にインバウンドリクエストを確認して悪意のあるコードを探すアクティブなコンポーネントを追加することがあります。
SSLアクセラレーション:SSLが使用される場合。暗号化を処理するワークロードがWebサーバーからオフロードされるように、それらのSSLセッションの終了ポイントとして機能する場合があります
これで大部分がカバーされると思いますが、おそらく私が見逃した他の機能がいくつかあります。確かに、デバイスやソフトウェアがロードバランサー/リバースプロキシとして販売されているのは珍しくありません。これは、機能が非常に一般的にバンドルされているためです。
また、リバースプロキシはWebサーバーに固有です。
ただし、ロードバランサーは他の多くのプロトコルを処理できます。今日、ウェブ(HTTP)は大きなアイデアですが、DNS、メール(SMTP、IMAP)などの負荷分散も可能です。ほとんどの人がウェブを考える「インターネット」または「IPネットワーク」を考えるのは、最近のことです。より多くの不明瞭なもの、またはニッチなものがたくさんあります。
最終結果(サーバー間での要求の分散)はさまざまなロードバランサーとリバースプロキシで同じですが、違いは要求の分散に使用される方法にあります。
一部のロードバランサーは、DNSを使用してトラフィックのバランスを取り、ラウンドロビンで同じ名前を異なるIPに解決して、リクエストを効果的にリダイレクトします。これは、データセンター間または他の物理的な場所間で要求を負荷分散するときに役立ちます。「インスタント」フェールオーバーが必要な場合、これは適切な選択ではありません。提供したTTLを尊重するために、クライアントのDNSサーバーに翻弄されているためです。シスコのGSS(Global Site Selector)は、DNSベースの負荷分散の良い例です。
他のロードバランサーは、仮想IP宛てのパケットヘッダーをファーム内のサーバーの実際のIPに書き換えることで機能します。これにより、リアルタイムの負荷分散とほぼ瞬時のフェイルオーバーが実現します。これの例はCiscoのCSM(Content Switching Module)です
上記の両方の例で、クライアントとサーバーの間にTCP会話があることに注意してください。
リバースプロキシは、Webサーバーに代わって要求を受け入れ、その要求をWebサーバーにエコーしてクライアントに返すことで機能し、オプションで同様の要求が続く場合に結果をキャッシュします。
クライアントは実際にはWebサーバーへの接続を確立しないことに注意してください。むしろ、会話は厳密にプロキシとクライアント間で行われます。
リバースプロキシは、クライアントからの要求を受け入れ、それを満たすことができるサーバに転送し、クライアントに対するサーバの応答を返す(リバースプロキシサーバの背後にあることを意味するプロトコル又は異なるプロトコルの幾分異なる機能と通信することができます。 )。
ロードバランサは、 それぞれの場合に適切なクライアントに選択されたサーバからの応答を返す、サーバーのグループ間で着信クライアント要求を配信します。