DNSとIPの負荷分散の違い-転送とリダイレクト


9

理解できない状況に遭遇しました。2つのバックエンドApache Webサーバー間でロードバランシングを実行できるようにしたFortigateファイアウォールがあります。次に、DNS名がロードバランサーの仮想IPにマップされます。

予想どおり、DNS名/ URL(例:www.something.com)を参照すると、ロードバランサはバックエンドApache Webサーバーの1つからページを提供します。ブラウザのURLはwww.something.comのまま です。私が理解していることから、この場合のロードバランサーは、常にパス内にとどまりながら、ブラウザーとApacheの間でパケットを転送するだけです。

ただし、DNSがマップされているIPアドレスを参照すると、ロードバランサーがHTTP 302 Foundを返し、LocationヘッダーがいずれかのApacheのDNS URLに設定されています。ブラウザーのURLがバックエンドサーバーのDNSに変わります。

ロードバランサがIP経由でクエリされたときにリダイレクトするのに、DNS名経由でクエリされたときにパス内を正しく転送するのはなぜですか。

回答:


10

負荷分散にFortigate FWを使用していないので、より一般的な質問のいくつかに回答します。

まず、問題については、ロードバランサーが想定どおりに動作しており、サーバーがIPアドレスの要求に応答するように正しく構成されていない可能性があります。負荷分散の背後でこれをテストする場合は、サーバーのファイアウォールの背後にあるローカルクライアントのホストファイルにドメイン名を設定し、ドメイン名と内部IPの両方でアクセスできます。あなたはおそらくあなたが今見ているのと同じ結果を得るでしょう。

(単一のサーバーで複数のドメインをサポートするために)仮想ホスティングがオンになっていて、「デフォルト」がドメインと同じページを提供していないと思います。どちらの場合も、サーバーからWebページが返されます。Webサーバーの構成についてサポートが必要な場合は、ServerFaultを試してみてください。

次に、もう少し詳しく説明します。ロードバランサーは通常、少なくともHTTPおよびHTTPSクラスターのL7で動作します。つまり、IPアドレスを見て転送するだけでなく、ページを「リダイレクト」することもありません。

リクエストを受信すると、実際にリクエストを解析し、リクエストの処理後にサーバーに転送します。この時点でできることはたくさんあります。たとえば、ヘッダーを両方向に書き換えたり、クライアントに返されるデータに(永続化のために)Cookieを追加したり、SSLセッションを終了したり、URLに基​​づいて照合したりなどです。

少し時間をかけてベンダーのドキュメントをよく読んで、ロードバランシングのしくみをよく理解することをお勧めします(Fortigateを使用すると、彼らとCoyote Pointの両方を読むことができます-Fortigateが取得した別のロードバランシング会社)。それが何をしているのかを理解することは、このような場合にあなたを助け、あなたが存在していたとは知らなかった機能のロックを解除することを可能にします。


問題は、バックエンドのApacheウェブサーバーの設定でした。新しいDNS名をエイリアスとして追加する必要がありました。
ユスフ

3

読んだ後にHTTPホストベースのロードバランシングをしてFortigateを負荷分散のdoc、私はあなたが記述するものにつながる可能性が非定型ロードバランシング設定を持つことができるかを見ることができます。ただし、構成の一部がなければ、これが当てはまるかどうかはわかりません。

Fortigate FortiOSでは、それぞれが異なるホストヘッダー構成を持つ実サーバーに関連付けられた仮想サーバーを作成できます。リクエストが仮想サーバーのVIPと一致する場合、負荷分散されたリクエストは、それに一致する実サーバーのみに送信されますhost header症状をうまく説明する最も重要な部分は、実サーバーの1つがホストヘッダーを省略できるため、どのホストヘッダーに一致することです。

ホストヘッダーのない実サーバは、リダイレクトを行うサイトに到達する一種の「キャッチオール」として設定されている可能性があります。

以下の例を使用すると、1番目と2番目のrserverのみがホストヘッダーを介して優先DNS名と一致するトラフィックを処理しますが、3番目のrserverはDNS VIP自体を含む他のすべてのホストヘッダーと一致するトラフィックを受け取り、リダイレクトを実行できるサイトに送信します。

設定ファイアウォールvip
 「http-host-ldb」を編集
  セット型サーバー負荷分散
  extip 192.0.2.1を設定
  extintf "lan"を設定します
  サーバータイプhttpを設定する
  ldb-method http-hostを設定します。
  extport 80を設定
  構成リアルサーバー
    編集1
      http-host "www.example.com"を設定します
      set IP 192.168.2.1
      ポート80を設定
      次
    編集2
      http-host "www.example.com"を設定します
      set IP 192.168.2.2
      ポート80を設定
      次
    編集3
      set ip 192.168.2.3
      ポート80を設定
      次
    終わり
 終わり

ファイアウォールのロードバランシングがリダイレクト自体を実行している可能性がありますが、提供された限られた情報ではわかりません。


この構成では、名前ベースのマッチングに設定されています。そしてそれが問題です。VIPにアドレスでアクセスした場合、VIPで何をすべきかわかりません。(通常のNATルールが適用されます)
リッキービーム

これが答えであるとは思わなかった主な理由は、私が知っているFW /ロードバランサーが、ロケーションを内部リソースのホスト名/ドメインに設定して302を返さないことです(少なくとも、具体的に設定することなく)そう、それは質問に基づいてそうであるように聞こえませんでした)。
YLearn

@RickyBeam、最初のrserversのみがホスト名のマッチングを行います。最後のrserverは、ホストとしてのVIPアドレスと一致します。
generalnetworkerror 2013

@YLearn、これは変だと思う。私は、LBではなく、rserverが302を実行し、そのように構成されていると言っていました。私はそれをしたであろうLBも知らない。
generalnetworkerror
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.