From kondo.hideaki @ oss.ntt.co.jp Tue Jul 24 10:27:31 2007 From: kondo.hideaki @ oss.ntt.co.jp (Hideaki Kondo) Date: Tue, 24 Jul 2007 10:27:31 +0900 Subject: [Ultramonkey-l7-users 68] Re: =?iso-2022-jp?b?VWx0cmFtb25rZXktbDcbJEIkSyQqJDEkayEiIVYbKEI=?= =?iso-2022-jp?b?GyRCOWIyRE1RQC0hIklUMkRKLDs2JE44ek4oMj0hVyRHJE4lKCVpGyhC?= =?iso-2022-jp?b?GyRCITwbKEI=?= In-Reply-To: References: <000001c7cd24$016a5110$c703a8c0@TERAUCHI> Message-ID: <20070724101108.C1B5.KONDO.HIDEAKI@oss.ntt.co.jp> 近藤と申します。 少し補足です。 > もし最初に web1 に転送された場合は,ブラウザの cookie リストには > web1 を示す情報が入っており,実際に web1 がダウンしているにもかかわらず > web1 にリクエストが転送されてしまいます. > これが Windows 上で表示できない直接の原因と考えられます. 以下のマニュアルに書かれているcookieの有効期限( デフォルト1日間)を短く明示的に設定するようにすれば、 その設定時間経過後であれば、Windowsからでも 正常に振分け処理が再開されるようになると思います。 #実機で試していないので、間違っていたらすみません。 http://sourceforge.jp/projects/ultramonkey-l7/document/admin-manual-v1.4.1/ja/3/admin-manual-v1.4.1.txt --cookie-expire 数値 UltraMonkey-L7サーバ側で付与するcookieの有効期限のための期間を設定します。 設定可能な範囲は、0以上2147483647以下です。 オプションを記載しない場合は、デフォルト値として1日間がcookieの有効期限として設定されます。 例) --cookie-expire 172800 # cookieが設定されていても当該振分け先サーバが #ダウンしていた場合に無効にして、スケジューラに #任せるようなオプションがあれば良いのですが、 #現状はなかったと思います。 #マニュアルには書かれてませんが-rescheduleオプションも #この用途には確か使えなかったと思います。 参考までに。 -- Hideaki Kondo From j_terauchi @ msc-inc.co.jp Tue Jul 24 10:40:31 2007 From: j_terauchi @ msc-inc.co.jp (j_terauchi) Date: Tue, 24 Jul 2007 10:40:31 +0900 Subject: [Ultramonkey-l7-users 69] Re: =?iso-2022-jp?b?VWx0cmFtb25rZXktbDcbJEIkSyQqJDEkayEiIVYbKEI=?= =?iso-2022-jp?b?GyRCOWIyRE1RQC0hIklUMkRKLDs2JE44ek4oMj0hVyRHGyhC?= =?iso-2022-jp?b?GyRCJE4lKCVpITwbKEI=?= In-Reply-To: Message-ID: <000001c7cd93$a1d22960$c703a8c0@TERAUCHI> 竹林 様  寺内です。  早速の返信、ありがとうございます。  Cookie insert モードで設定した場合についての動作、確認致しました。 (気が付かなかったのがお恥ずかしい)  セッション情報については、実サーバ側でCookie情報を付与する形式にするか、も う少し検討したいと 思います。 今後とも、よろしくお願い致します。 ありがとうございました。 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 寺内 潤(Terauchi Jun) E-Mail:j_terauchi @ msc-inc.co.jp _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ -----Original Message----- From: Shinya TAKEBAYASHI [mailto:makoto @ kanon-net.jp] Sent: Monday, July 23, 2007 11:07 PM To: j_terauchi @ msc-inc.co.jp Cc: ultramonkey-l7-users @ lists.sourceforge.jp Subject: Re: [Ultramonkey-l7-users 66] Ultramonkey-l7における、「高可用性、 不可分散の効率化」でのエラー ※ 返信のメールの宛先に ML を入れ忘れたので,再送します. 寺内 様 竹林と申します. よろしくお願いします. > ◆少し、長くなりましたが、この状態で、サーバ1のhttpdサービスを停止 > すると、Windowsクライアントからのアクセスが、「ページを表示できません。 」 > となってしまいます。 Cookie insert モードの場合,クライアント側に振り分け先リアルサーバを 識別するための cookie を付与します. UltraMonkey-L7 は,この cookie の内容を元にリアルサーバを判定 することで,パーシステンス機能(同一のリアルサーバに割振る)を 実現しています. Windows 上の Web ブラウザの cookie をみると,monkey というエントリが 追加されているはずです. insert モードの処理の流れとしては, 1. クライアントからリクエストがくる UltraMonkey-L7 用の cookie(今回は monkey)を持っている場合は, その cookie も同時に受け取ります. 2. UltraMonkey-L7 がリクエストを解析し,リアルサーバを決定する 上記 cookie を持っている場合は,そのリアルサーバに リクエストを転送する.(※) 持っていない場合はスケジューラに渡し,リアルサーバを決定する. ※ リアルサーバの死活に関わらず,cookie の内容をもとに リアルサーバへリクエストを転送します. これが今回の接続エラーの原因と考えます. 3. リアルサーバからレスポンスを受信する 受け取ったレスポンスに UltraMonkey-L7 用の cookie が含まれている 場合は何もしない. 含まれていない場合は,今回割り振ったリアルサーバの情報を 数値化し,指定したエントリ(今回は monkey)を作成し, Set-Cookie を追加する. 4. クライアントにレスポンスを転送する クライアントに,リアルサーバから返されたレスポンスを転送する. となります. もし最初に web1 に転送された場合は,ブラウザの cookie リストには web1 を示す情報が入っており,実際に web1 がダウンしているにもかかわらず web1 にリクエストが転送されてしまいます. これが Windows 上で表示できない直接の原因と考えられます. curl で正常に web2 からページが取得できた理由ですが,これは curl が cookie をつけてリクエストを投げなかったために UltraMonkey-L7 はリアルサーバの割り当てをスケジューラに任せ, スケジューラは割り当て可能なリアルサーバ(今回は web2)を 割り当てたことになります. # wget にも同じ事が言えます curl でも Windows と同様の事象を起こさせるには, 1. web1 をダウンさせる l7vsadm で web2 のみ表示されることを確認する. 2. 「 curl -c cookie.txt http://msc-web:8089/index.html 」 を実行 cookie.txt には,おそらく monkey=036940409620480 という エントリが入っている. 3. web2 をダウンさせる l7vsadm で振り分け先が存在しないことを確認する. 4. web1 を回復させる l7vsadm で web1 のみ表示されることを確認する. 5. 「 curl -b cookie.txt http://msc-web:8089/index.html 」 を実行 接続が失敗する. この手順を踏むと,ページが取得できない旨のエラーが発生します. 以上,非常に簡単な説明となってしまいましたが,ご参考になれば幸いです. なお,l7vs はバグ修正や内部処理の見直しが行われた 0.6.0-0 が リリースされていますので,こちらをお使いください. http://prdownloads.sourceforge.jp/ultramonkey-l7/25375/l7vs-0.6.0-0.tar.gz 今後ともよろしくお願い致します. ------------------------------------------------------------- Shinya TAKEBAYASHI E-mail(Office) : takebayashi.shinya @ nttcom.co.jp E-mail(private): makoto @ kanon-net.jp GPG ID: FFD20D1F GPG FP: 7B5B E0FC B785 7457 683C 47D6 5564 DDDD FFD2 0D1F ------------------------------------------------------------- *** j_terauchi wrote in message <000001c7cd24$016a5110$ c703a8c0 @ TERAUCHI> *** Subject: [Ultramonkey-l7-users 66] Ultramonkey-l7における、「高可用 性、不可分散の効率化」でのエラー *** Date: Mon, 23 Jul 2007 21:21:26 +0900 > ■Ultramonkey-l7-usersの皆様 > > お世話になります。寺内と申します。 > > Ultramonkey-l7を実装するにあたり、 > Linux Director兼実サーバを2台構成でテストしています。 > > ○仮想IP > msc-web(192.168.4.20) > ○サーバ1 > web1(192.168.4.21) > ○サーバ2 > web2(192.168.4.22) > ※サーバ1、2共にサービスはhttpdが起動しています。 > > 基本的な各種設定は、「UltraMonkey-L7 インストールマニュアル v1.3」及び > 「高可用性、不可分散の効率化」トポロジを参考にしております。 > > ▼/etc/ha.d/ha.cf > debugfile /var/log/ha-debug > logfile /var/log/ha-log > logfacility local0 > keepalive 2 > deadtime 30 > warntime 10 > initdead 120 > udpport 694 > mcast eth0 225.0.0.1 694 1 0 > ucast eth0 192.168.4.22 > auto_failback off > node web1 > node web2 > apiauth lha-snmpagent uid=root > > ▼/etc/ha.d/haresources > web1 192.168.4.20 IPaddr::192.168.4.20/24/eth0:0 l7directord:: > > ▼/etc/ha.d/authkeys > auth 1 > 1 crc > > ▼/etc/ha.d/conf/l7directord.cf > # Global Directives > checktimeout=4 > checkinterval=3 > autoreload=yes > logfile="/var/log/l7directord.log" > quiescent=yes > # A sample virual with a fallback that will override the gobal setting > # Virtual Server for HTTP virtual=192.168.4.20:8089 > real=192.168.4.21:80 masq > real=192.168.4.22:80 masq > module=cinsert --cookie-name 'monkey' > #fallback=127.0.0.1:80 masq > service=http > request="index.html" > receive="Test Page" > scheduler=rr > protocol=tcp > checktype=negotiate > quiescent=no > > # Virtual Server for HTTPS > virtual=192.168.4.20:8443 > real=192.168.4.21:443 masq > real=192.168.4.22:443 masq > module=cinsert --cookie-name 'monkey' > #fallback=127.0.0.1:80 masq > service=https > request="index.html" > receive="Test Page" > scheduler=rr > protocol=tcp > checktype=negotiate > quiescent=no > > 上記の状態で、サーバ1→サーバ2の順に、 > l7vsd,l7syncd,l7Heartbeatを起動 > > サーバ1(web1)から、l7vsadm -L コマンドを実行すると、 > > Layer-7 Virtual Server version 0.5.0-3 > Prot LocalAddress:Port Scheduler ProtoMod > -> RemoteAddress:Port Forward Weight ActiveConn InactConn > TCP msc-web:8089 cinsert rr > -> web1:http Masq 1 0 0 > -> web2:http Masq 1 0 0 > TCP msc-web:8443 cinsert rr > -> web1:https Masq 1 0 0 > -> web2:https Masq 1 0 0 > ※http,https共に、仮想カーネルテーブルの設定を実サービスのポート番号 > と同一にすると、以下のエラーとなり、テーブル追加ができませんでした。 > 〜/var/log/l7directord.logの抜粋 > [Mon Jul 23 20:08:38 2007|l7directord] system(/usr/sbin/l7vsadm -A -t > 192.168.4.20:80 -m cinsert --cookie-name 'monkey' -s rr ) failed: [Mon > Jul 23 20:08:38 2007|l7directord] Added virtual server: 192.168.4. 20:80 > cinsert --cookie-name monkey > [Mon Jul 23 20:08:38 2007|l7directord] system(/usr/sbin/l7vsadm -A -t > 192.168.4.20:443 -m cinsert --cookie-name 'monkey' -s rr ) failed: > Inappropriate ioctl for device [Mon Jul 23 20:08:38 2007|l7directord] > Added virtual server: 192.168.4.20:443 cinsert --cookie-name monkey > その為、http,https用に別ポート番号を割り当てています。 > > ◇別のホスト(同一ネットワーク)からの接続テストの結果 > [root @ db1 ~]# curl http://msc-web:8089/index.html > > > > > Test Page > > > > > Test Page(Secondary:192.168.4.22) > > > [root @ db1 ~]# curl http://msc-web:8089/index.html > > > > > Test Page > > > > > Test Page(Primary:192.168.4.21) > > > > ◇アクセス毎に、サーバ1、サーバ2に分散されています。 > 又、Windowsクライアントから、http://msc-web:8089/index.html > にアクセスすると、該当ページが正常に表示されます。 > > ◆少し、長くなりましたが、この状態で、サーバ1のhttpdサービスを停止 > すると、Windowsクライアントからのアクセスが、「ページを表示できません。 」 > となってしまいます。 > ※但し、上記curl のテストでは、サーバ2のテストページが取得できていま す。 > > サーバ1(web1)から、l7vsadm -L コマンドを実行すると、 > > Layer-7 Virtual Server version 0.5.0-3 > Prot LocalAddress:Port Scheduler ProtoMod > -> RemoteAddress:Port Forward Weight ActiveConn InactConn > TCP msc-web:8089 cinsert rr > -> web2:http Masq 1 0 0 > TCP msc-web:8443 cinsert rr > -> web2:https Masq 1 0 0 > > となっています。 > ※サーバ1のHeartbeatを停止した際には、サーバ2にIPアドレスが引き継が れる > ことも確認できています。 > > 非常に長文になりましたが、解決の糸口が見つからず、ご助力頂けたらと思い > メールさせて頂きました。 > よろしくお願い致します。 > > _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ > > 寺内 潤(Terauchi Jun) > > E-Mail:j_terauchi @ msc-inc.co.jp > > _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ > > _______________________________________________ > Ultramonkey-l7-users mailing list > Ultramonkey-l7-users @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/ultramonkey-l7-users From j_terauchi @ msc-inc.co.jp Tue Jul 24 11:12:32 2007 From: j_terauchi @ msc-inc.co.jp (j_terauchi) Date: Tue, 24 Jul 2007 11:12:32 +0900 Subject: [Ultramonkey-l7-users 70] Re: =?iso-2022-jp?b?VWx0cmFtb25rZXktbDcbJEIkSyQqJDEkayEiIVYbKEI=?= =?iso-2022-jp?b?GyRCOWIyRE1RQC0hIklUMkRKLDs2JE44ek4oMj0hVyRHGyhC?= =?iso-2022-jp?b?GyRCJE4lKCVpITwbKEI=?= In-Reply-To: <20070724101108.C1B5.KONDO.HIDEAKI@oss.ntt.co.jp> Message-ID: <000101c7cd98$1b4c8070$c703a8c0@TERAUCHI> 近藤 様  寺内と申します。  補足でのご説明、ありがとうございます。  振分先サーバの状態により、Cookieかスケジューラ任せかの選択が可能であれば、 理想的ではありますが、 サーバの用途(検索系のみ等)によっては、セッション維持が不可能となった時点 で、クライアントにエラー表示 するというのも、正しい選択かもしれません。いろいろ検討してみます。 今後は、2台のWebサーバに、Apache+WebDAV+LDAP構成のサービスや、XOOPS等のWeb アプリを構築 していこうと考えております。 その上で、セッション情報の管理(維持)が必要と考え、Ultramonkey-l7にてテスト をさせて頂いている状況です。 今後ともご質問をさせて頂きながら、何かしらの貢献をしていけたらと思います。 よろしくお願い致します。 ※竹林 様  早速、l7vs-0.6.0-0をインストール致しました。  こちらを元にテストしていきたいと思います。 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 寺内 潤(Terauchi Jun) E-Mail:j_terauchi @ msc-inc.co.jp _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ From kondo.hideaki @ oss.ntt.co.jp Tue Jul 24 11:46:22 2007 From: kondo.hideaki @ oss.ntt.co.jp (Hideaki Kondo) Date: Tue, 24 Jul 2007 11:46:22 +0900 Subject: [Ultramonkey-l7-users 71] =?iso-2022-jp?b?UkhFTDQbJEJNURsoQlVsdHJhTW9ua2V5KExheWVyNCk=?= =?iso-2022-jp?b?GyRCOkc/NyVRJUMlMSE8JTgbKEIoMy04KRskQkRzNiEkTiQqQ04bKEI=?= =?iso-2022-jp?b?GyRCJGkkOxsoQg==?= Message-ID: <20070724113448.C1BD.KONDO.HIDEAKI@oss.ntt.co.jp> UM-L7ユーザの皆様 お世話になっております。 近藤と申します。 RHEL4用UltraMonkey(Layer4)最新パッケージ(ultramonkey3-8)提供 のお知らせです。 本家UltraMonkeyプロジェクトへの貢献の一つとして次のニュース記事 ( https://sourceforge.jp/forum/forum.php?forum_id=11556 )の通り、 2007/4/1にRHEL4用UltraMonkey(L4)パッケージ(ultramonkey3-7)を 提供しておりましたが、本家UltraMonkeyサイトより、以下の通り ldirectordのバグフィックスがアナウンスされました。 http://www.ultramonkey.org/ これに伴いまして、ldirectordバグフィックスが反映された heartbeat-1.2.3.cvs.20050927-1.rh.el.um.4を盛り込んだ RHEL4用最新UM-L4パッケージ(ultramonkey3-8)を作成・動作 検証しましたので、これまでと同様に以下のUM-L7公式サイト にて提供させていただきます。 https://sourceforge.jp/projects/ultramonkey-l7 https://sourceforge.jp/projects/ultramonkey-l7/files/?release_id=26379#26379 既にultramonkey3-7のパッケージをインストール済みの方は、 以下の要領でアップデート可能です。(既存の設定ファイル等 はそのまま保存された状態になります。) <アップデート方法> (1)x86用パッケージ:ultramonkey3-8.tar.gz  [Install]  # tar xvfz ultramonkey3-8.tar.gz  # cd ultramonkey3-8/RPMS  # rpm -Uvh heart* (2)x86_64用パッケージ:ultramonkey3-8_x86_64.tar.gz  [Install]  # tar xvfz ultramonkey3-8_x86_64.tar.gz  # cd ultramonkey3-8_x86_64/RPMS  # rpm -Uvh heart* 新規にインストールされる場合は、旧バージョンと同様に 以下の手順となります。 <新規インストール方法> (1)x86用パッケージ:ultramonkey3-8.tar.gz  [Install]  # tar xvfz ultramonkey3-8.tar.gz  # cd ultramonkey3-8/RPMS  # rpm -Uvh *  # ldconfig (2)x86_64用パッケージ:ultramonkey3-8_x86_64.tar.gz  [Install]  # tar xvfz ultramonkey3-8_x86_64.tar.gz  # cd ultramonkey3-8_x86_64/RPMS  # rpm -Uvh *  # ldconfig 尚、インストール後の各種設定につきましては、本家UltraMonkeyプロジェクト サイトをご参照願います。 http://www.ultramonkey.org/ http://ultramonkey.jp/ 補足情報として、UltraMonkey-L7プロジェクトメンバによる検証において、 バーチャルサービス(仮想IPアドレス,ポート番号)を分けて設定すれば、 UltraMonkey(L4)と共存させて動作可能であることを確認しています。 ※本件パッケージ提供につきましては、UltraMonkeyプロジェクトリーダである  Simon Horman(Horms)氏の了解を得て実施しております。  また、本提供パッケージは、OSSでありユーザ側の責任において利用願います。 UltraMonkey-L7含めてUltraMonkeyの益々の普及展開のお役に立てれば幸いです。 以上よろしくお願いします。 -- Hideaki Kondo