アプリ版:「スタンプのみでお礼する」機能のリリースについて

ロードバランサの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リクエストが通らない理由のようなものが考えられればご教示下さい。

A 回答 (4件)

恐らく、サーバのレスポンスが、ロードバランサを経由しないで、


クライアントに直接応答されているのではないかと思います。

設定から察するに、リクエストは以下のような流れになるかと思います。

リクエスト:
クライアント -> ロードバランサ -> サーバ

このとき、サーバに届いたパケットのアドレスは以下のようになります。

Source IP: クライアント
Destination IP: サーバ

ポイントは、Source IPがクライアントのIPアドレスとなっていることで、
このようなリクエストになると、サーバから見たクライアントは、
同一ネットワークにある機器のため、レスポンスは、以下のように
送信元(ロードバランサ)ではなくクライアントに直接応答してしまいます。

レスポンス:
サーバ -> クライアント

クライアントとしては、突然わけのわからないIPからレスポンスが
帰ってきたためにRSTを返してしまうというわけです。

この対策としては、ロードバランサ側にSNATを設定する方法などが考えられます。
ロードバランサの設定は、サーバに以下のようなIPアドレスで
リクエストが送信されるように設定すると良いかと思います。

Source IP: ロードバランサ
Destination IP: サーバ

この回答への補足

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

SNATの設定については試みたいと覆います。

補足日時:2010/10/13 20:42
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2010/10/16 09:46

LBは何を利用していますか?


ブリッジで利用する場合に、ARP関連の問題でリアルサーバーに追加設定が必要な場合があります。

WebサーバーのOSが何かが不明ですが、パケットキャプチャで
通信が来ているかどうか、どのように返しているかを確認してみてはどうでしょう?

この回答への補足

LBはA10ネットワークスのAXシリーズを使用してます。

ARP関連ですか、なるほど。確認してみようかと思います。

ちなみにWebサーバのOSはWindowsなのですが、Webサーバのログを見ると、httpリクエストに対して下記のログが残ってました。
10.10.10.100 GET HTTP/1.1 200 38

httpリクエストは来ていますが、その返答がどこかで落っこちてるのかな?と思っています。

補足日時:2010/10/13 20:39
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2010/10/16 09:47

http://10.10.10.100/だとどうなるのでしょうか?

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

この回答への補足

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

ちなみに、http://10.10.10.100/でも、http://10.10.10.1/と同じ動きをします。。。

補足日時:2010/10/13 20:27
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2010/10/16 09:48

ロードバランサ側で最低限「10.10.10.1の80/TCP宛の通信を10.10.10.2の80/TCPならびに10.10.10.

3の80/TCPに振り分ける」というような設定が必要ですが、それは行ったのですか?

この回答への補足

振り分けの設定は行っています。
作成したバーチャルサーバに対し、リアルサーバの割り当て設定を行ってます。

あと、補足ですが、ヘルスモニタでhttpプロトコルを指定して10.10.10.2や10.10.10.3を確認しても正常結果が返ってきています。。。。


すいませんが、心当たりがあればまた回答をお願いします。

補足日時:2010/10/13 01:50
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2010/10/16 09:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!