• ベストアンサー

負荷分散装置を経由する同一ネットワークセグメント内の通信は可能?

SE修行中の者です。「Webクライアント-負荷分散装置(以下、LB)-Webサーバー」という構成を考えています。 このとき、サーバーと同じネットワークセグメント内のクライアントからHTTPリクエストが発行された場合、「行き」パケットはLBを経由しても「戻り」パケットはLBを経由せずに直接クライアントに戻ってしまうのではないかと思います(別セグメントのクライアントならば、サーバー側のデフォルトゲートウェイをLBのIPにしておけば「戻り」もLBを通ってくれると思いますが。) そうなると、TCPのコネクションが確立できない、すなわち通信ができない、ということになるような気がするのです。 このような問題を回避するにはどのようにしたらよいものでしょうか?(ちなみに負荷分散装置はAlteon Application Switchというものらしいです)

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

 Alteon Application Switchなるものはさっぱり知らないので申し訳ないが、どのレイヤで分散するかやね。  例えばゲートウェイタイプなら同一セグメントだろうとLBがなんとかしてくれる。ルータタイプだとそもそもクライアントとサーバが同一セグメントには無いし、仮りにあったとしたらそれはネットワーク設計者がアホすぎる。  で、本当にそんな状況があったら確かに通信できんよなぁ、でも実際はどうなんやろと思い、「しょぼいルータタイプ(つまり単なる分散DNAT)でクライアントと実サーバが同一セグメントにあったらどうなるか」を試してみた。  果たしてサーバの80番はSYN_RECVの状態で止まったままだった。面白い事に、ブラウザでF5を連打したらサーバ側の古いSYN_RECVはTIME_WAITに変わった。同じIPアドレスの別ポートからSYNを受け取ると安全の為に古いソケットを破棄するのかも知れない。ちなみにサーバはLinux 2.4.31とApache2.0.??、LBはLinux 2.6.11、クライアントはWindows XP SP2のIE6SP1。  で、もしそのAASとやらがルータタイプだった場合は、回避策としてはNAPTするしか無いよね。LBで。ただ、その場合負荷を分散させるLBに負荷がかからないか心配。この辺は#1さんのおっしゃる通り、ベンダを呼びつけてデモをさせましょう。

kaito_azamaru
質問者

お礼

わざわざ確認までして頂いて、どうもありがとうございます。やはり「SYN_RECV」で止まってしまうんですね。。。 実現可能/不可能(これが第一ですが)以外にも「LBの負荷」という観点、おっしゃるとおりだと思います。

その他の回答 (3)

  • kuma-ku
  • ベストアンサー率54% (1558/2845)
回答No.4

”[Client]---[AAS]---[Web Server]” と言うことで、かつ ”AAS のPort にClient とServer が接続されている” と言うことであれば。 ”Clientへの「戻り」はAASを経由せずに直で行くのではないか?” という事はありえません。 AAS の配下にL2SW があって、そのL2SW にClient とServer が接続されていれば、 話は別ですが・・・。 Web Server から見たSrcIP の如何に関わらず、 AAS のPort に接続されており、AAS にコネクションテーブルがクリエイトされていれば、 必ずそのコネクションテーブルによって通信が処理されます。 SLB の行為が、必ずIP アドレスの変換が伴われると言うわけではありません。 たとえ別セグメントであっても、NAT をしない限りSrcIP が変換されることはありえません。 純粋なルーティング処理を行うSLB は、 SrcMAC アドレスが、Server が接続されたAAS のPort のMAC アドレスに変換するだけで、 IP アドレスの変換処理は行いません。 TCP コネクションの問題を考えるのであれば、 ・Client のコネクションテーブル ・Server のコネクションテーブル そしてL7 でAAS が動作していれば、AAS のコネクションテーブル この3つが一致しなければ、確かに通信はおかしいと言えます。 検証したわけではないので、あまり強くは断言できませんが、 Server 側でTCPDump などをかけて、 AAS 経由で流れてきたパケットのMAC アドレスなどを確認してみてください。

kaito_azamaru
質問者

お礼

そうですね。私のほうも実体験なしの想像レベルなので、実機で検証して確認したいと思います。どうもありがとうございました。

  • kuma-ku
  • ベストアンサー率54% (1558/2845)
回答No.3

こんばんは 構成はClient とWeb Server の通信線上に、AAS を介しているような構成なのでしょうか? 例えば、[Client]---[AAS]---[Web Server]や [Client]---[L2SW]---[AAS]---[Web Server]といった構成でしょうか? このような構成で多くとられる手法としては、 Virtual Server としてAAS のアドレスにアクセスし、 実際のWeb Server に転送するような方法です。 たとえば、以下のような構成となります。 ★[192.168.0.1]---●[192.168.0.10]---◎[192.168.0.100] ★Client、●AAS のVirtual Server Address、◎Real Web Server この構成で、Client ではAAS の●のアドレスを宛先として指定します。 AAS ではこの●のアドレスは自動的に◎に転送します。 そして、実際のWeb コンテンツは、◎である Real Web Server から提供されます。 以上のようなケースであれば、必ずAAS を介した通信が行われるため、 懸念されているセッションの問題からはフリーとなります。 また、設定によっては、L7(URI)やMAC アドレスでのSLB も可能です。 その通信がAAS を介して通信されているかを確認するには、 CLI やTelnet から”/info/slb/sess/dump”などで、 セッションが記録されているか確認してください。 ※この項目で表示されるのは。全セッションのDump 情報です。

kaito_azamaru
質問者

お礼

イメージは「[Client]---[AAS]---[Web Server]」です。 このときのAASの振る舞いはhttp://www.atmarkit.co.jp/fnetwork/rensai/lb01/lb01.htmlにあるような感じかなと認識してますが、AASがSrcIPアドレスを書き換えず、そのSrcがWeb Serverにとって同一ネットワークセグメント内だと判断されると、Clientへの「戻り」はAASを経由せずに直で行くのではないか?という気がするのですが・・・(#2で調査していただいた結果もそれを示しているのかな、という気がします)。

  • dee_honda
  • ベストアンサー率53% (26/49)
回答No.1

Alteon は触ったことがありませんが、 通常は、LBをルータみたいに使うというか、 Webサーバ(複数)を別セグメントに置いて、 クライアントはすべてLBを通してアクセスさせるのがセオリーですが、 ClientNATを使ってクライアントもWebサーバとLBを同一セグメントに置く構成も可能でした(別機種の話)。 詳細は、LBのサポート元に問い合わせてみるといいと思います。 当方では、購入前にLB実機を借用して、サポートのヒトに根掘り葉掘り聞きながら、実環境でいろいろ検証しました。 安くないモノなので、その辺のサポート体制はしっかりしていると思いますよ。

kaito_azamaru
質問者

お礼

ありがとうございます。 その後もいろいろ調べてたらAlteonでは「PIP(Proxy IP Addresses)」という機能があって、もしかしたらそれでいけるのかな・・・なんて思ってます。 ただ、やはり該当製品のサポート窓口へ聞くのが一番ですよね(じつは直接的なパスを持っている人に「そんなのムリムリ」といわれてこちらでご意見を聞いた次第なのですが、なんとかしたいとおもいます)。

関連するQ&A

  • 負荷分散装置について

    インターネットサービス(レンタル掲示板 など)を個人的に行う場合、専用サーバーをレンタルしてもいいのですが、負荷が大きくなった場合、複数のサーバーと負荷分散装置が必要になると思います。 しかしながら、負荷分散装置って数十万~数百万もして、非常に高いので、趣味としては手が出せません。 負荷分散装置を安く購入する方法、もしくは、負荷分散装置を使わずに、負荷分散させる方法ってあるのでしょうか? あと、負荷分散装置の有名な会社など、参考になるホームページを教えてもらえますでしょうか?

  • 負荷分散装置(CSS11500)の仕様

    クライアント(600台)ー負荷分散装置(2台)-L2SW(2台)-WEBアプリケーションサーバ(2台)の構成での負荷分散装置について下記の質問があります? なお、負荷分散装置はCISCOのCSS115001で、Active-Standbyの冗長化(コールドスタンバイではなく、ホットスタンバイ)です。 Q1ホットスタンバイでセッション引き継ぐ設定は可能でしょうか? Q2ホットスタンバイ、セッション引き継ぐ設定をしている構成でマスタの負荷分散装置が故障し場合、クライアント(ユーザ)は、再度、ログインする必要はありますか?再ログインなしで継続できますか? Q3ホットスタンバイ構成の系間ケーブルが断線した場合、どうなりますか?スタンバイ側もマスタになり。両系マスタ?また、系間にはIPアドレスの設定は不要だと聞きましたが、ほんとですか?(コールドスタンバイではIPアドレス必要) すみませんが、しろうとなのでわかりやすく教えて下さい。 以上

  • 負荷分散の時の接続について

    ファイアウォール、WEBサーバーを各10台を負荷分散して接続するサーバーでWEBサーバーの下にDBサーバーがある場合ファイアウォールから負荷分散装置に接続するところとWEBサーバーからDBサーバーに接続するところの装置はスイッチを使うのでしょうか。また負荷分散設置BIG-IPを多重化して使う場合BIG-IP間をどのようにするとアクティブ、スタンバイの制御が出来るのでしょうか。

  • 負荷分散装置?

    2台のLinuxサーバを「稼働系」「予備系」で動作させたいと考えています。ですが、知人に相談したところ、私がやりたいことを実現するためには、負荷分散装置という高価な物が必要だと言われました。何か安価に実現する方法は無いでしょうか? ・2台のWebサーバ(Linux, apache)をIPアドレス以外は同じ設定で起動しておく。 ・片方を「稼働系」として、普段はそちらを使用。緊急時のみ「予備系」を使用。 ・2つのサーバに共通の仮想IPのような物を設定したい。 今は常に両方立ち上げておいて、稼働系に障害が発生した場合に、予備系のサーバに接続しています。 ですがIPアドレスが異なるため、お気に入り(bookmark)も複数設定しないと駄目です。 ネットワークカードの冗長化のように、片方へアクセス出来ない場合には、 もう片方へ勝手にアクセスが切り替えられるような方法はないものでしょうか? Linuxの標準機能か、フリーソフトで実現出来れば嬉しいです。 それとも「負荷分散装置」を購入するしかないのでしょうか??

  • 負荷分散の組み合わせについての初歩的な質問です。

    【ロードバランサ】によって負荷が分散されているLANへのウェブアクセスを、同じ【クライアント】が繰り返している場合には、同じ【サーバ】との組み合わせを何らかの手段で維持させているのでしょうか? ロードバランサの中に主記憶装置が内蔵されているのか否かを存じておりませんので、そのせいで、奇妙な表現になっているのかも知れませんが、御教授を御願い申し上げます。

  • BGP4、負荷分散装置を利用しないマルチホーミング

    画像イメージを添付して質問させていただきます。 現在下図のようなネットワークの構成を考えております。 【目的】 公開サーバへのアクセスにおける、回線の可用性を確保することです。 回線の負荷を分散させることが目的ではないです。 片方のISP及び経路上の機器、回線に障害が発生した際に、 もう片方のISP経由で公開サーバまでの通信が確立できれば良いです。 またLinkProofなどの負荷分散装置を利用しない方法で考えています。 BGP4によるルーティングはないものとします。 【説明】 異なる2つのISPと契約し、2つの回線を1台のルータに集約させます。 このときルータではそれぞれのISPのグローバルIPアドレスを複数所有しています。 公開サーバへはルータでそれぞれのISPごとに1対1のNATを行い通信します。 使用するルータは主にアウトバウンドのロードバランスには対応している、 「CentreCOM AR570S」or「YAMAHA RTX1200」を検討しています。 DNSのキャッシュによる遅延はTTLを短く設定すれば、問題ないと考えております。 【マルチホーミングの動作】 ISP1に障害が発生した場合、クライアントはweb.a.co.jpの名前解決を試みた時、 クライアントが所属するドメインのDNSサーバにより、ISP1用のDNSサーバからは 応答がないため、ISP2用のDNSサーバへアクセスし、webの名前解決を行う。 その時ISP2用のDNSサーバは障害が発生していないISP2用のグローバルIPアドレスを返す為、 クライアントはISP2を経由しwebにアクセスが可能となる。 上記構成で目的の達成は可能でしょうか?また技術的に不可能なのでしょうか? あるいは認識不足の点がありますでしょうか? 不可能な場合、その理由も教えていただけたら助かります。m(__)m

  • 別々のGWを持つ、2つのセグメント間の通信

    2つのネットワークセグメントがあります。この2つのセグメントの通信を実現させたいです。 知識と経験不足なので教えて頂けるとたすかります。 ■環境■ 添付図の通りですが、 ・192.168.10.0/24  →  A社 ・192.168.20.0/24  →  B社 ※それぞれのサーバー/PCは全てWindows系。 ※それぞれが別々のゲートウェイを持ち、インターネットに接続可能。 ※ただしサーバーの保守の為だけの接続で、クライアントはインターネット接続されていない。 ※A,Bお互いのクライアントが通信出来てはいけない。 ※お互いのネットワークアドレスの変更は不可。 ※クライアントPCの設定変更も不可。 ※物理的に同じ部屋にあるので、配線の取り回しの心配はない。 ■質問■ 同一セグメントにそろえて、L2_VLANだと可能なのでしょうが、ネットワークアドレスを変更できないので ルーターかL3なのではと考えております。 ※AのクライアントはAのサーバ/クライアントとBのサーバーのみを見たい。 ※Bのクライアントも同様にBのサーバ/クライアントとAのサーバーのみを見たい。 この環境で上記内容を実現させようと思ったら、どのような機材でどのような設定にすればいいのでしょうか?

  • Webサーバ(Linux)を負荷分散したい

    Webサーバ(Linux)を負荷分散したい Windows ServerならOS標準機能のNLBがありますが、 Linuxで負荷分散する場合、 どのような負荷分散ソフトがあるでしょうか。 無料で使える負荷分散ソフトを教えて下さい。 ロードバランサー(機器)は価格的に導入できません。 よろしくお願いします。

  • 複数LANポート有効時の正しいネット経路とは?

    ここに到るまでにいくつかの質問をしたのですが、正直あるべき姿が分からなくなってしまったので、改めてネットワークの面から質問させていただきます。 <前提> サーバにはネットワークインタフェースを二つ設けています。 (1)IP:192.168.10.10。  ネットワーク:192.168.10.0/24。  ゲートウェイ:192.168.10.1  ※これをデフォルトゲートウェイとして設定。 (2)IP:192.168.1.10  ネットワーク:192.168.1.0/24。  ゲートウェイ:192.168.1.1 これらは同じルータに接続されておりますが、セグメントとしては別々です。 また、このルータからはサーバに接続するクライアントの属するネットワークがあります。 (3)ネットワーク:192.168.3.0/24  ゲートウェイ:192.168.3.1   --サーバ-- (1)|        |(2)   --ルータ--       |       |(3)   クライアント複数台 <質問> クライアントからサーバへDB接続を行いますが、2通りの接続があります。どのクライアントがどちらの接続をするかは分かりません。 (a)固定IP192.168.10.10に対してコネクションを確立する。(仮にクライアントAは192.168.3.50とします。) (b)固定IP192.168.1.10に対してコネクションを確立する。(仮にクライアントBは192.168.3.60とします。) それぞれの場合に、どういう経路で送受信されるように設定するのが正しいのでしょうか? ※実現するための設定についてではなく、本来ならどのように動くべきかという観念の質問です。(もちろん実現するための設定を教えて頂ければ尚良いのですが。) 私としては3論で悩んでいるので、参考までに以下に記します。 <持論1:サーバからクライアントへの送信はデフォルトゲートウェイのあるIFから送信されるべき>  (a)の場合   1)クライアントAからサーバへのコネクション確立要求は、ネット(3)-ネット(1)を経由して通信される。   2)サーバからクライアントAへのコネクション確立応答は、ネット(1)-ネット(3)を経由して通信される。   3)クライアントAからサーバへのコネクション確立応答は、ネット(3)-ネット(1)を経由して通信される。  (b)の場合   1)クライアントBからサーバへのコネクション確立要求は、ネット(3)-ネット(2)を経由して通信される。   2)サーバからクライアントBへのコネクション確立応答は、ネット(1)-ネット(3)を経由して通信される。    ※IPフォワーディング?   3)クライアントBからサーバへのコネクション確立応答は、ネット(3)-ネット(2)を経由して通信される。 <持論2:サーバからの送信はクライアントからの経路と同じ経路で返されるべき>  (a)の場合   1)クライアントAからサーバへのコネクション確立要求は、ネット(3)-ネット(1)を経由して通信される。   2)サーバからクライアントAへのコネクション確立応答は、ネット(1)-ネット(3)を経由して通信される。   3)クライアントAからサーバへのコネクション確立応答は、ネット(3)-ネット(1)を経由して通信される。  (b)の場合   1)クライアントBからサーバへのコネクション確立要求は、ネット(3)-ネット(2)を経由して通信される。   2)サーバからクライアントBへのコネクション確立応答は、ネット(2)-ネット(3)を経由して通信される。   3)クライアントBからサーバへのコネクション確立応答は、ネット(3)-ネット(2)を経由して通信される。 <持論3:そもそもこの環境では2つのIFを使い分ける事は無理である。>  (a)の場合   1)クライアントAからサーバへのコネクション確立要求は、ネット(3)-ネット(1)を経由して通信される。   2)サーバからクライアントAへのコネクション確立応答は、ネット(1)-ネット(3)を経由して通信される。   3)クライアントAからサーバへのコネクション確立応答は、ネット(3)-ネット(1)を経由して通信される。  (b)の場合   1)クライアントBからサーバへのコネクション確立要求は、ネット(3)-ネット(2)を経由して通信される。   2)サーバからクライアントBへのコネクション確立応答は、ネット(2)-ネット(3)を経由して通信しようとしても通信できない。    ※route add でネット(2)のゲートウェイを記載しようにも、そうすると(a)のパターンが崩れてしまう。 文字数が多くて煩わしいかと思いますが、回答宜しくお願いいたします。

  • apacheの負荷分散方法のアイデアありませんか?

    こんにちは。 Linuxで自宅サーバを立てています。 1台のPCにWEBサーバとしてapacheが入っています。負荷分散&PCが故障したときのためにPCを2台使って負荷分散的な事ができないかと思っています。googleで検索しましたら様々な方法や機器があるようですが、実際のところ本格的な負荷分散のため、というより(そこまでアクセスありません笑)勉強のためやってみたい、というところが大きいので高価な専用ハードやソフトを使わずにできる方法はないかなと模索しています。 ルータ--------| | --------------- | | PC-1(apache) PC-2(apache) | | ------|--------- | PC3(MYSQL) WEBサーバを二重化しても回線やDBがそのままだとあんまり意味無いよ、とつっこみどころはあるかと思いますがご経験談やアドバイスなどお聞かせください。