• 締切済み

ロードバランサのhttpリクエストについて

ロードバランサのhttpリクエストについて ロードバランサ経由でWebシステムにアクセスする方法を検討している者です。 以下の構成を組んでいるところです。 ############################################ Webシステムサーバ2台 ロードバランサ1台 クライアント5台 ############################################ そこで、ロードバランサを下記のとおり設定しました。 ############################################ ロードバランサIP:10.10.10.100 バーチャルサーバIP:10.10.10.1 リアルサーバ1IP:10.10.10.2 リアルサーバ2IP:10.10.10.3 ############################################ Webシステムサーバがリアルサーバ1とリアルサーバ2になり、それぞれを負荷分散する予定です。 現在の現象としては、クライアントマシンのブラウザから「http://10.10.10.2/」や「http://10.10.10.3/」でアクセスするとWebシステムに接続できるのですが 「http://10.10.10.1/」で接続してもアクセスできません。 『Webページが見つかりました。応答を~』というのは出るのですが、それ以降何の変化もなく、最終的にページが表示できない旨のメッセージが表示されます。 統計データの機能がロードバランサについていたのでそれを見ていると、どうやらhttpリクエストはロードバランサとして受信しているようなのですが そのリクエストが成功していないみたいです。 ロードバランサの設定として、あるいは一般的にでも構いませんので、httpリクエストが通らない理由のようなものが考えられればご教示下さい。

みんなの回答

  • dagian
  • ベストアンサー率100% (1/1)
回答No.4

恐らく、サーバのレスポンスが、ロードバランサを経由しないで、 クライアントに直接応答されているのではないかと思います。 設定から察するに、リクエストは以下のような流れになるかと思います。 リクエスト: クライアント -> ロードバランサ -> サーバ このとき、サーバに届いたパケットのアドレスは以下のようになります。 Source IP: クライアント Destination IP: サーバ ポイントは、Source IPがクライアントのIPアドレスとなっていることで、 このようなリクエストになると、サーバから見たクライアントは、 同一ネットワークにある機器のため、レスポンスは、以下のように 送信元(ロードバランサ)ではなくクライアントに直接応答してしまいます。 レスポンス: サーバ -> クライアント クライアントとしては、突然わけのわからないIPからレスポンスが 帰ってきたためにRSTを返してしまうというわけです。 この対策としては、ロードバランサ側にSNATを設定する方法などが考えられます。 ロードバランサの設定は、サーバに以下のようなIPアドレスで リクエストが送信されるように設定すると良いかと思います。 Source IP: ロードバランサ Destination IP: サーバ

nepia400
質問者

お礼

WebサーバにrouteコマンドでクライアントIPに対するゲートウェイをロードバランサIPにしてやることで最終的にうまくいきました。 ありがとうございました。

nepia400
質問者

補足

なるほど、同一ネットワークだと直接返してしまったりもするんですね。 確かに、Webサーバには「GET HTTP/1.1 200」とログが残っていたので サーバへはリクエストがいっていて、サーバからロードバランサ方面への送信で問題があるのかもしれません。 SNATの設定については試みたいと覆います。

  • pakuti
  • ベストアンサー率50% (317/631)
回答No.3

LBは何を利用していますか? ブリッジで利用する場合に、ARP関連の問題でリアルサーバーに追加設定が必要な場合があります。 WebサーバーのOSが何かが不明ですが、パケットキャプチャで 通信が来ているかどうか、どのように返しているかを確認してみてはどうでしょう?

nepia400
質問者

お礼

WebサーバにrouteコマンドでクライアントIPに対するゲートウェイをロードバランサIPにしてやることで最終的にうまくいきました。 ありがとうございました。

nepia400
質問者

補足

LBはA10ネットワークスのAXシリーズを使用してます。 ARP関連ですか、なるほど。確認してみようかと思います。 ちなみにWebサーバのOSはWindowsなのですが、Webサーバのログを見ると、httpリクエストに対して下記のログが残ってました。 10.10.10.100 GET HTTP/1.1 200 38 httpリクエストは来ていますが、その返答がどこかで落っこちてるのかな?と思っています。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.2

http://10.10.10.100/だとどうなるのでしょうか? ロードバランサを使う場合は外部側とwebサーバ側は別のネットワークにするんじゃないでしょうか。 そうでないと外部側とweb側のトラフィックが同じ経路を使うのでスループットが低下します。

nepia400
質問者

お礼

WebサーバにrouteコマンドでクライアントIPに対するゲートウェイをロードバランサIPにしてやることで最終的にうまくいきました。 ありがとうございました。

nepia400
質問者

補足

確かに、ロードバランサ用の別ネットワークのIPも、ロードバランサとWebサーバ達には割り当てています。 ただ、うまくいかなかったので、同一ネットワークのIPで試してるところです。。。 ちなみに、http://10.10.10.100/でも、http://10.10.10.1/と同じ動きをします。。。

  • 774danger
  • ベストアンサー率53% (1010/1877)
回答No.1

ロードバランサ側で最低限「10.10.10.1の80/TCP宛の通信を10.10.10.2の80/TCPならびに10.10.10.3の80/TCPに振り分ける」というような設定が必要ですが、それは行ったのですか?

nepia400
質問者

お礼

WebサーバにrouteコマンドでクライアントIPに対するゲートウェイをロードバランサIPにしてやることで最終的にうまくいきました。 ありがとうございました。

nepia400
質問者

補足

振り分けの設定は行っています。 作成したバーチャルサーバに対し、リアルサーバの割り当て設定を行ってます。 あと、補足ですが、ヘルスモニタでhttpプロトコルを指定して10.10.10.2や10.10.10.3を確認しても正常結果が返ってきています。。。。 すいませんが、心当たりがあればまた回答をお願いします。

関連するQ&A