ロードバランサーは何を返しますか?


12

ユーザーがロードバランサーをヒットし、ロードバランサーが転送先のWebサーバーを決定すると、次に何が起こりますか?ロードバランサーはリクエストとそのすべてのデータをウェブサーバーに転送し、ウェブサーバーの応答を受信して​​ユーザーに返しますか?

それとも、ロードバランサが選択したサーバーのIPアドレスをブラウザに返すだけで、ブラウザが特定のサーバーとの新しい接続を開かなければならないリダイレクトのようなものですか?

私の直感では、後者ではないだろうと言っています。これは、すべてのWebサーバーのIPアドレスが公開されることを意味し、セキュリティ上の理由から、ロードバランサーアドレスのみを公開するのが最善であると考えました。しかし、SSL terminationロードバランサーで有効にすると、リダイレクトされたサーバーでSSLを再確立する必要がないので、私は正確にはわかりません。


回答:


13

エンドIPは公開されません。このプロセスは、実際に、クライアント(バランサーにアクセスするユーザー)が、実際のノードと通信しながらバランサーと通信していると信じる方法で機能します。

非常に単純な説明では、ほとんどのトランザクションは次のように機能します。

  1. ユーザーがロードバランサーにリクエストを出します。
  2. バランサーは、どのノードが最も適しているか(バランシングに使用している戦略に基づいて)を決定し、宛先IPを選択(変更)します。
  3. (ここで魔法が起こります。)ノードはリクエストを受信し、接続を受け入れ、バランサーに応答します。
  4. バランサーは、応答IPを仮想バランサーの1つに変更し、応答をユーザーに転送します。
  5. ちなみに、実際には別の場所で処理されていたとしても、ユーザーは最初のリクエストのIPを含む応答を受け取ります。

パケットの書き換え(手順4でのIPアドレスの変更)は非常に重要です。これがないと、クライアントは、信頼できないIPからパケットを受信して​​も、応答を単に破棄します。


4

Ladバランサーは、レイヤー4 OSIで動作します。ポート番号までパケットをカプセル化解除し、3つのモードのいずれかでパケットを送信します。

ロードバランサーは3つのモードで機能します 。1.直接ルーティング このモードでは、実サーバーはIPパブリックを使用します。バランサーはパケットを受信し、レイヤー4までカプセル化を解除します。ロードバランスルールが一致する場合、パケットは(変更なしで)実サーバーの1つにリダイレクトされます。実サーバーはロードバランスアドレスと同じエイリアスアドレスを持っているため、実サーバーがxxx.xxx.xxx.xxx宛先のパケットを受信すると、そのパケットの権利を自分のアドレス(エイリアス)に定義します。次に、クライアントへの実サーバー応答要求を直接送信します(ロードバランスを介さない)。

2. NAT このモードでは、パケットは宛先アドレスを変更して実サーバーにリダイレクトします。宛先アドレスは実サーバーアドレス(NAT)に置き換えられます。このモードでは、実サーバーはIPパブリックを必要とせず、ローカルネットワークを使用できます。そして、パケットは新しい宛先アドレスなしで配信されます。実サーバーがパケットを受信すると、ゲートウェイ(ロードバランス)を介してクライアント要求アドレスに応答します。このモードでは、ロードバランスは実サーバーのルーターおよびゲートウェイとして使用されます。

3.トンネル このモードでは、パケットは新しいsrc-dstアドレス(vpnなど)でトンネリングされ、実サーバーにパケットを配信します。実サーバーでパケットを受信すると、実サーバーはトンネルパイプ経由でロードバランスに応答します。そして、実際のリクエスト送信元アドレスの配信応答をロードバランスします。

HTTPS / SSLの場合、ロードバランスはそれを処理せず、レイヤー4 OSIまでロードバランス処理します。上記のレイヤー5は実サーバーで処理されます。したがって、TCP 3ウェイハンシェイク、SSL / HTTPSは実サーバーで処理されました。パケットのディレクターのみのロードバランス。

私の小さな説明が何かに役立つことを願っています。


ここではlvsについて話しているようですが、必ずしもhttp(s)負荷分散の動作とは限りません。たとえばhaproxyを見てください。このアプリはユーザーランドで負荷分散を行い、バックエンドのルーティング機能も備えています。
Friek

私のデータセンターでは、lvsを使用してhttpsアプリサービスの負荷を分散しています。
dek.tiram 2016年

私の無知を失礼しますが、「lvs」とは何ですか?haproxyの競合相手ですか?
smaili 2016年

Haproxyもlvsを使用します。私はコアプロセスにlvsも使用するピラニアを使用しています。
dek.tiram 2016年

haproxyはスタンドアロンアプリケーションであり、lvsをまったく必要としません(lvsの存在さえも認識していません)。haproxyの負荷が非常に大きくなる場合は、lvsを使用してhaproxyノードのクラスターのバランスをとることができます。
Friek

-1

ロードバランサーは、ルーターまたはリバースプロキシのいずれかになります。

LVSは、Linuxカーネル用の業界標準のレイヤー4(ルーティングベース)ロードバランシングモジュールです。バラクーダ、Loadbalancer.org、Kemp Technologiesなどのさまざまな商用ロードバランサーで使用されています。BarracudaとLoadbalancer.orgは、レイヤー7ロードバランシング(リバースプロキシベース)にもHAProxyを使用しています。

Ps。これがどこから来たのかがわかりません。明らかにLoadbalancer.orgです。


1
外部リソースへのリンクを投稿するときは、所属を明らかにすることが予想されます。スパマーにならない方法を
gnat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.