Hideaki KONDO
kondo****@nttco*****
2011年 11月 9日 (水) 14:50:01 JST
竹田さん (Cc: UM-L7開発者各位) お疲れ様です。ご無沙汰してます。 近藤です。 少し気になりましたので、コメントさせて頂きます。 まず、これまでの設計思想の大原則として、各モジュールは UM-L7本体(コア部分)に汎用的に追加・拡張できることを 意図してきていたもので、各モジュールの仕様に引きずられて 本体側に手を加えなければならなくなることは、本来は避けな くてはならないと考えます。 もちろん、メジャーバージョンアップ等により汎用モジュールの 大幅な仕様拡張等によってl7vsdやl7directord等に手が加えられる ようなことは考えられますが、その場合は、少なくとも上位互換 による仕様拡張であるべきで、従来の設定ファイルがそのまま 使用できることが強く望まれると考えます。 (重々承知されているかと思いますが)そうでないと、V2→V3に UM-L7本体をバージョンアップした既存ユーザ等は、混乱してしまいます。 l7directord等を今回のURLモジュール仕様変更に特化して書き換える 場合、修正量も多くなるだろうと竹林さんが懸念されてましたが、 そもそもl7directord側に大幅に手を加えなければならなくなる 仕様(この場合上位互換ではないV3専用l7directordになってしまう のでしょうか)は、是非とも避けて頂きたいと考えます。 #最近l7directordの中身を見てないですが、修正方法によっては #それほど大幅な修正は必要ないかも知れません。 もし、V3はV2の上位互換ではなく完全な別物で、設定ファイルも 基本的に別物という設計方針であれば、今回のこの仕様変更だけに 限らず、V2とV3の仕様変更差分のドキュメント化、V2→V3設定ファイル 移行ドキュメント化(出来ればツール化が望ましいですが)等、 バージョン違いによるノウハウ情報提供がセットで必要になると思います。 後で判明した問題ということで、苦肉の策による仕様検討のように 思われますが、これまでの設計思想を壊して今後改悪とならないよう 十分な検討を望みます。 と偉そうなことを言っておきながら、今すぐに妙案が思いついた訳では ないので、思いついたら私もメールします。 (もし誰も妙案等が思いつかず、V2からご提案の仕様変更となる場合、 必ず差分のノウハウドキュメント化を希望致します。) > しかし、現状のV3は振り分けキーワードが異なったとしても > IP&ポートが同一なVirtual Serviceは登録不可能な仕様となっています。 > V3では、thread_pool内の各スレッドとmodule間で連携して > 通信処理を行っています。 > この通信処理はあくまで、ひとつのVirtualServiceに閉じられた > 処理であるため、VirtualSeviceのthread_pool内の情報を > ほかのVirtualServiceに渡すことができません。 ところで、上記のような設計は、他のモジュールについても、V2には なかった制約条件が新たに増えたりしていないでしょうか。 少々気になりました。もしあれば、その制約条件についてご教示頂きたい ですし、合わせて検討すべきかと思います。 以上よろしくお願い致します。 (2011/11/08 18:30), 竹田 健二 wrote: > モンキー開発者のみなさま > > お疲れ様です。新参者の竹田です。 > > URLモジュールの仕様についてご相談があります。 > > 以前、V3に追加するURLモジュールはV2の仕様を踏襲するという > 提案をみなさまにしたところ、基本方針はそれでよいという了解を得たと思います。 > > ところが、現状のV3ではVirtual Service追加に関する仕様が > V2と異なっているため、V2時代と同様の感覚でURLモジュールを扱うことが > 難しいことが判明しました。 > > ○問題 > 例えば、V2では下記のようなVirtual Serviceの > 設定を行うことが可能でした。 > > <例1> > l7vsadm -A -t 192.168.1.110:40000 -m url -P "abc" > l7vsadm -a -t 192.168.1.110:40000 -m url -P "abc" -r 192.168.1.101:50000 > > l7vsadm -A -t 192.168.1.110:40000 -m url -P "efg" > l7vsadm -a -t 192.168.1.110:40000 -m url -P "efg" -r 192.168.1.102:50000 > > > # 上記は「1つのVirtual Serviceに対して複数のキーワードを設定し、 > # そのキーワードそれぞれに対して1つのReal Serverを紐付けしたい!」 > # という場合を想定しています。 > > しかし、現状のV3は振り分けキーワードが異なったとしても > IP&ポートが同一なVirtual Serviceは登録不可能な仕様となっています。 > > V3では、thread_pool内の各スレッドとmodule間で連携して > 通信処理を行っています。 > この通信処理はあくまで、ひとつのVirtualServiceに閉じられた > 処理であるため、VirtualSeviceのthread_pool内の情報を > ほかのVirtualServiceに渡すことができません。 > > よって、V2のURLモジュールで可能だった「あるVirtualSevice > に登録されキーワード"abc"にmatchしない場合、 > 別のVirtualSeviceに登録された"efg"のルールにmatchするか判定する」 > という動作を実現することができません。 > > > ○解決策 > 「URLモジュール登録時に振り分けキーワードとReal Serverの > 紐付けを行ってしまうようにする」 > > これにより、V3においても<例1>のような設定を実現できるようになります。 > コマンドは、例えば下記のようになると思います。 > > <例2> > l7vsadm -A -t 192.168.1.110:40000 -m url -P "abc" -RS 192.168.1.101:50000\n > -P "efg" -RS 192.168.1.102:50000 192.168.1.102:50001 > > ・「-P」は登録するキーワードを示すオプション(V2と同じ)、 > 「-RS」は登録するReal Serverを示すオプションと仮定します。 > ・-P と -RS は1セットで記述すると想定しています。 > ・Real Serverは一つのキーワードに対して複数設定できます。 > > # この解決策はコマンドが少々長くなるという問題があります・・・ > > > 今のところ、上記の解決策でいこうと考えていますが、 > ご意見や妙案がありましたらご提示いただければと思います。 > > > 以上、よろしくお願いします。 > -- 近藤 秀明 (Hideaki KONDO)