TATEISHI Katsuyuki
tatei****@oss*****
2009年 5月 15日 (金) 13:16:36 JST
立石です。お疲れさまです。 コメントありがとうございます。 From: 森下徹 <moris****@nttco*****> Subject: [Ultramonkey-l7-develop 371] Re: 仮想サーバに INADDR_ANY を指定できないようになっている理由 Date: Fri, 15 May 2009 10:13:03 +0900 >> 現在の l7vsadm では 仮想サーバの IP アドレスに 0.0.0.0 を指 >> 定できないようになっていますが、 >> ============================================================ >> [root @ charlie ~]# l7vsadm -A -t 0.0.0.0:443 -m sslid >> PARSE ERROR : You can't specify INADDR_ANY for endpoint. >> Usage: >> (以下略) >> ============================================================ >> これにはどのような意図があるのでしょうか? >> ご存知の方がいたら教えていただけますか? > > まず、この処理に相当するコードですが、0.xのバージョン > あたりでもすでに入っていることから、L4から受け継がれている > ものではないかと思います。 なるほど。 sf.net の ultramonkey プロジェクトページ http://ultramonkey.cvs.sourceforge.net/ultramonkey/ を見てみましたが、CVS リポジトリには何も入ってませんでし た・・・orz > コメントを見ると > We always use the first entry, because we can't distinguish > which entry you want to specify if we have multiple entries > となっているので、明示的でないIPアドレスを > 指定させたくないという考えのように思います。 このコメントはおそらく sin = (struct sockaddr_in *)res->ai_addr; にかかっていて、ai_next 以降の addrinfo を見ずに最初の addrinfo の ai_addr に決め打ちしてる(first entry を使ってい る)理由の説明だと思います。 >> ざっとコードを見たところ、リアルサーバに 0.0.0.0 を指定させな >> いためのコードを -A のときも通ってしまっているのかなぁと予想 >> してます。 >> # "endpoint" というエラーメッセージからもそんな気がします > > この部分の処理は、指定されたendopointをチェックしている部分で > VirtualService、RealServerのどちらのチェックにも使用しています。 > # 古いコードでメッセージは、You can't specify INADDR_ANY > # for virtual service だったのですが、l7vsadmの処理見直し時 > # に、どちらのチェックでも使っているので "endpoint"に > # 変えています。 ではもともと virtual service として INADDR_ANY を使わせたく なかった理由があったのかもしれませんね・・・ ただ、現在では理由はわからなくなっている、と。 >> 現在 Heartbeat で Act-Stb の クラスタ構成をとったときに仮想サー >> バの IP アドレスとして 0.0.0.0 を指定できないので、両系で >> l7directord をあげておくことはできませんが、仮想サーバとして >> 0.0.0.0 待ち受けが可能になれば、Heartbeat で管理するのは仮想 >> IP アドレスの付け替えだけにできてうれしいと思うのですが・・・ >> # どっちみちHBでプロセス監視が必要というのは置いておくとして > > VirtualServiceを0.0.0.0として運用するという方法も「あり」 > なのですね。。。 「あり」だと思います。 -- TATEISHI Katsuyuki <tatei****@oss*****>