From shohei @ plugandplaytechcenter.com Wed Feb 20 03:31:25 2008 From: shohei @ plugandplaytechcenter.com (Shohei Azuma) Date: Tue, 19 Feb 2008 10:31:25 -0800 Subject: [Ultramonkey-l7-users 107] Re: =?utf-8?b?4oCcSFRUUCDjg6Hjgr3jg4Pjg4njg5njg7zjgrkg44Ot44O8?= =?utf-8?b?44OJ44OQ44Op44Oz44K344Oz44Kw4oCdIOOBq+OBpOOBjeOBvuOBlw==?= =?utf-8?b?44Gm?= In-Reply-To: <6d0a157f0802151022o4278400an262fa51a1bdc0cd4@mail.gmail.com> References: <1203032351.12300.13.camel@PnP-nc6320-SA> <20080215085403.4f6ac936.takebayashi.shinya@nttcom.co.jp> <1203096616.12300.24.camel@PnP-nc6320-SA> <6d0a157f0802151022o4278400an262fa51a1bdc0cd4@mail.gmail.com> Message-ID: <1203445885.12300.66.camel@PnP-nc6320-SA> 田沼さま、 先日は新しいソースコード有難うございました。 添付説明通り置き換えました。こちらでテストした範囲では問題なく動作してお ります。 現在、 IF POST THEN HOST1 IF GET THEN HOST2 IF PATTERN THEN HOST3 のように動作しておりますが、 If POST and PATTERN then HOST1 else HOST2 のようなことは可能でしょうか。 多々なる質問、恐縮です。よろしくお願いいたします。 東 -----Original Message----- From: Kouhei TANUMA To: Shohei Azuma Cc: Shinya TAKEBAYASHI , ultramonkey-l7-users @ lists.sourceforge.jp Subject: Re: [Ultramonkey-l7-users 105] Re: “HTTP メソッドベース ロード バランシング” につきまして Date: Sat, 16 Feb 2008 03:22:09 +0900 東さん はじめまして。 田沼と申します。 HTTPメソッドによるバランシングについてですが、既存モジュールを多少変更するだけで 済みそうだったので、ちょっとテストがてらに作成してみました。(httpmethodモジュール) CentOS5 で簡単に確認していますが、バグがあるかもしれません・・・。 正式に実装されてリリースとなるかどうかはわかりませんが、興味がありましたら、 試してみてください。 手順は、添付ファイルの Makefile.am, protomod_httpmethod.c を 1.0.2-1 のソースコードにいれて、 autogen.sh (autogen64,sh), configure, make, make install です。 また、l7directord も変更が必要なので既存と置き換えてください。 設定についてですが、仮想サービスのモジュールに httpmethod モジュールを指定、 --method で振り分ける HTTP メソッドを指定(必須)、振り分ける実サーバを任意数追加です。 詳細は添付の l7directord.cf をご確認の上、適宜変更してください。 ★ 添付の l7directord.cf での振り分け情報 % sudo l7vsadm -K Layer-7 Virtual Server version 1.0.2 Prot LocalAddress:Port ProtoMod Scheduler Reschedule Protomod_key_string SorryAddress:Port Sorry_cc Sorry_flag -> RemoteAddress:Port Forward Weight ActiveConn InactConn TCP moon:80 httpmethod rr 1 --method GET -> sourceforge.net:http Masq 1 0 3 -> sourceforge.jp:http Masq 1 0 3 TCP moon:80 httpmethod rr 1 --method POST -> www.amazon.co.uk:http Masq 1 0 2 -> www.amazon.de:http Masq 1 0 1 TCP moon:80 httpmethod rr 1 --method HEAD -> www.Sony.CO.JP:http Masq 1 0 1 -> www.sony.net:http Masq 1 0 1 TCP moon:80 sessionless rr 1 -> www.mcdonalds.co.jp:http Masq 1 0 1 -> mcdonalds.com:http Masq 1 0 1 ★ この場合の振り分け moon:80 に GET リクエストがきた場合 → sourceforge サーバグループに振り分け moon:80 に POST リクエストがきた場合 → amazon サーバグループに振り分け moon:80 に HEAD リクエストがきた場合 → sony サーバグループに振り分け moon:80 に上記以外のリクエストがきた場合 → mcdonalds サーバグループに振り分け(sessionlessモジュールを利用) なお、URL モジュールで振り分けを行う場合も上記のように同一の VIP:PORT で 複数の仮想サービスを設定することとなります。 また、仮想サービスの追加順序も考慮する必要がありますので気をつけてください。 -- Shohei Azuma PlugandPlayTechCenter -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: http://lists.sourceforge.jp/mailman/archives/ultramonkey-l7-users/attachments/20080219/906aafd3/attachment.htm From clammbon.p.q @ gmail.com Wed Feb 20 23:54:23 2008 From: clammbon.p.q @ gmail.com (Kouhei TANUMA) Date: Wed, 20 Feb 2008 23:54:23 +0900 Subject: [Ultramonkey-l7-users 108] Re: =?iso-2022-jp?b?GyRCIUgbKEJIVFRQIBskQiVhJT0lQyVJJVkhPCU5GyhC?= =?iso-2022-jp?b?IBskQiVtITwlSSVQJWklcyU3JXMlMCFJGyhCIBskQiRLGyhC?= =?iso-2022-jp?b?GyRCJEQkLSReJDckRhsoQg==?= In-Reply-To: <1203445885.12300.66.camel@PnP-nc6320-SA> References: <1203032351.12300.13.camel@PnP-nc6320-SA> <20080215085403.4f6ac936.takebayashi.shinya@nttcom.co.jp> <1203096616.12300.24.camel@PnP-nc6320-SA> <6d0a157f0802151022o4278400an262fa51a1bdc0cd4@mail.gmail.com> <1203445885.12300.66.camel@PnP-nc6320-SA> Message-ID: <6d0a157f0802200654x45c196dcs6e61d48ee793d5b3@mail.gmail.com> 東さん 動作確認していただきありがとうございます。 すいません、PATTERN が何を意味しているのかわからないのですが、 Request URL(URI)の一部と想定して回答します。(URLモジュール使用) 間違っていましたら、詳細をお教えください。 現状ですと同一の仮想IPアドレスに対する複数の振り分け方法の設定としては OR 条件しか設定できません。 そのため、AND 条件の設定はできないのですが、以下のように別の仮想IPアドレスに 振り直すことで同様の動きとなります。 External-VIP:80 IF POST THEN Internal-VIP:8888 ELSE HOST2 Internal-VIP:8888 IF PATTERN THEN HOST1 ELSE HOST2 l7directord.cf だと以下のようになります。 (PATTERN を 'cgi-bin' としています) #----- # POSTリクエスト を InternalVIP:8888 に転送 virtual=ExternalVIP:80 real=InternalVIP:8888 masq module=httpmethod --method 'POST' checktype=connect scheduler=rr protocol=tcp # POSTリクエスト以外は、HOST2 virtual=ExternalVIP:80 real=HOST2:80 masq module=sessionless checktype=connect scheduler=rr protocol=tcp # POSTリクエストで転送されてきたものの URL に cgi-bin が含まれる場合は、HOST1 virtual=InternalVIP:8888 real=HOST1:80 masq module=url --pattern-match 'cgi-bin' checktype=connect scheduler=rr protocol=tcp # cgi-bin が含まれない場合は、HOST2 virtual=InternalVIP:8888 real=HOST2:80 masq module=sessionless checktype=connect scheduler=rr protocol=tcp #----- 以上、ご確認ください。 なお、よろしければで結構ですが、どのような場合にこのような設定をするのか 後学のために教えていただけますでしょうか。 HOST1 で POST による特定の処理を行い、かつ、通常来ないはずのGETなどでの 不正アクセスを HOST2 側でエラー処理するといった感じなのでしょうか?