Kohei TANUMA
tanum****@nttco*****
2010年 2月 3日 (水) 13:43:35 JST
稲垣さま 田沼です。 fallback は実際のリアルサーバが全て異常と判断された際の 代替サーバになりますので、リアルサーバが正常な場合は 追加されない仕様のはずです。 リアルサーバの監視は ldirectord の checktype や service 設定に 従いますので、例えば、checktype = negotiate, service = http の 場合は、192.168.1.1, 192.168.1.2 の Apache 等を停止した際に fallback 設定の 127.0.0.1:80 が自動的に追加されるはずです。 checktype = ping の場合は、ケーブルを抜く、インタフェースを down させるなどして ping がリアルサーバに届かない状態にして みてください。 checktype = on の場合は、常にリアルサーバが正常と判断されるため fallback は追加されないと思います。 以上、宜しくお願い致します。 2010/02/03 11:20, 稲垣 wrote: > 田沼様 > > お世話になります。 > 稲垣です。 > > /etc/ha.d/ldirectord.cfに127.0.0.1:80を追加しましたが、 > fallbackの設定が追加されなくなりました。 > > # ipvsadm -l > IP Virtual Server version 1.2.1 (size=4096) > Prot LocalAddress:Port Scheduler Flags > -> RemoteAddress:Port Forward Weight ActiveConn InActConn > TCP 172.31.208.181:https rr > -> 192.168.1.1:https Masq 1 0 0 > -> 192.168.1.2:https Masq 1 0 0 > TCP 172.31.208.181:http rr > -> 192.168.1.2:http Masq 1 0 1 > -> 192.168.1.1:http Masq 1 0 1 > > なんででしょうか? > > 以上、宜しくお願い致します。 > > > Kohei TANUMA さんは書きました: >> 稲垣さま >> >> 田沼です。 >> >> LVS の理解が不足してるので間違っているかもしれませんが >> 私なりにわかったところまで回答します。 >> 先に結論として、127.0.0.1 を real や fallback に指定する場合は >> バーチャルサービスと同一のポートで動かす必要があるのではないかと >> 思います。(つまり fallback 81 番ポートは無理) >> そのため、先程の私の masq を指定するというのは間違いのようです。 >> >> 127.0.0.1 への振り分けはダイレクトにパケットが配送される >> ようで、バーチャルサービス宛(172.31.207.10:80宛) のパケットが >> 127.0.0.1:81 の Apache に飛ぶのでコネクションがリセットされて >> いるように見えます。 >> 試しに、iptables で 80 宛を 81 宛に無理やり書き換えると、 >> Apache で正常に処理することができました。 >> >> iptables -t nat -A PREROUTING -i eth0 -p tcp -d 172.31.207.10 --dport 80 >> -j DNAT --to 172.31.207.10:81 >> >> ただし、これだと通常の real が使い物にならなくなるので却下…。 >> (上記 iptables の -A を -D で削除) >> >> 以下の設定で動作確認できました。 >> >> ■ ldirectord >> fallback = 127.0.0.1:80 >> virtual = 172.31.207.10:80 >> real = 172.31.206.1:80 masq 1 >> real = 172.31.206.2:80 masq 1 >> checktype = negotiate >> service = http >> request = "index.html" >> receive = "test" >> scheduler = rr >> protocol = tcp >> >> ■ 172.31.207.10 の Apache >> ... >> Listen 80 >> ... >> >> ■ ipvsadm -ln (real が正常な場合) >> IP Virtual Server version 1.2.1 (size=4096) >> Prot LocalAddress:Port Scheduler Flags >> -> RemoteAddress:Port Forward Weight ActiveConn InActConn >> TCP 172.31.207.10:80 rr >> -> 172.31.206.1:80 Masq 1 0 0 >> -> 172.31.206.2:80 Masq 1 0 0 >> >> ■ ipvsadm -ln (real 全てが異常な場合 - index.html の test 文字を消す) >> IP Virtual Server version 1.2.1 (size=4096) >> Prot LocalAddress:Port Scheduler Flags >> -> RemoteAddress:Port Forward Weight ActiveConn InActConn >> TCP 172.31.207.10:80 rr >> -> 127.0.0.1:80 Local 1 0 0 >> -> 172.31.206.1:80 Masq 0 0 0 >> -> 172.31.206.2:80 Masq 0 0 0 >> >> とりあえず上記で fallback の Apache のページが表示されました。 >> >> 稲垣さんの設定の場合だと fallback のポートを 80 に設定し >> (masq も消して)172.31.207.10 のサーバで HTTPd を 80 ポートで >> 動かすように修正する必要があると思います。 >> >> ただし、間違いがあるかもしれませんので、他の識者の方々つっこみ >> お願いします。 >> >> 以上です。 >> >> >> 2010/02/02 12:19, 稲垣 wrote: >> >>> 田沼様 >>> >>> お世話になっております。 >>> 稲垣です。 >>> >>> コマンド結果は以下の通りです。 >>> # ipvsadm -ln >>> IP Virtual Server version 1.2.1 (size=4096) >>> Prot LocalAddress:Port Scheduler Flags >>> -> RemoteAddress:Port Forward Weight ActiveConn InActConn >>> TCP 172.31.207.10:80 rr >>> -> 127.0.0.1:81 Local 1 0 1 >>> >>> 以上宜しくお願いします。 >>> >>> Kohei TANUMA さんは書きました: >>> >>>> 稲垣さま >>>> >>>> 田沼です。 >>>> >>>> 表示されないというのはページが表示されないという意味でしょうか? >>>> 先のメールの ipvsadm の結果では以下のように fallback サーバの >>>> ポートを 81 に設定しているにもかかわらずポートが 80 で >>>> 追加されているのが問題と考えました。 >>>> >>>> >>>> >>>>>>> TCP 172.31.207.10:http rr >>>>>>> -> LB01:http Local 1 0 0 >>>>>>> >>>>>>> >>>> masq を追加した後の ipvsadm -ln の結果を >>>> 確認させていただけますでしょうか。 >>>> >>>> >>>> 2010/02/02 11:55, 稲垣 wrote: >>>> >>>> >>>>> 田沼様 >>>>> >>>>> お世話になっております。 >>>>> 稲垣です。 >>>>> >>>>> >>>>> >>>>>> fallback=127.0.0.1:81 masq >>>>>> >>>>>> >>>>>> >>>>> ご指摘の通りに設定しましたが、表示されません。 >>>>> >>>>> 以上、宜しくお願い致します。 >>>>> >>>>> >>>>> Kohei TANUMA さんは書きました: >>>>> >>>>> >>>>>> 稲垣さま >>>>>> >>>>>> 田沼と申します。 >>>>>> >>>>>> LVS についてはあまりわからないのですが、 >>>>>> ldirectord の動作を確認したところ fallback 行で >>>>>> forward 設定を省略すると gate として設定されるようです。 >>>>>> ldirectord.cf の fallback を以下のように変更してみてください。 >>>>>> >>>>>> fallback=127.0.0.1:81 masq >>>>>> >>>>>> 以上です。 >>>>>> >>>>>> >>>>>> 2010/02/02 10:50, 稲垣 wrote: >>>>>> >>>>>> >>>>>> >>>>>>> お世話になっております。 >>>>>>> 稲垣です。 >>>>>>> >>>>>>> ipvsadmコマンドで全リアルサーバ(HTTP)をメンテナンス状態にし、 >>>>>>> fallbackサーバを表示させたいのですが、 >>>>>>> /etc/ha.d/ldirectord.cfに記載したfallbackサーバが表示されません。 >>>>>>> >>>>>>> ipvsadm -lの状態はfallbackサーバを表示しております。 >>>>>>> >>>>>>> /etc/ha.d/ldirectord.cfの設定はHTTPのリアル設定をコメントしております。 >>>>>>> /etc/httpd/conf/httpd.confのListenは81になっており、直にたたくと問題なく >>>>>>> 表示されます。 >>>>>>> >>>>>>> >>>>>>> # ipvsadm -l >>>>>>> IP Virtual Server version 1.2.1 (size=4096) >>>>>>> Prot LocalAddress:Port Scheduler Flags >>>>>>> -> RemoteAddress:Port Forward Weight ActiveConn InActConn >>>>>>> TCP 172.31.207.10:http rr >>>>>>> -> LB01:http Local 1 0 0 >>>>>>> >>>>>>> # cat /etc/ha.d/ldirectord.cf >>>>>>> >>>>>>> # Global Directives >>>>>>> checktimeout=3 >>>>>>> checkinterval=1 >>>>>>> fallback=127.0.0.1:81 >>>>>>> autoreload=no >>>>>>> logfile="/var/log/ldirectord.log" >>>>>>> #logfile="local0" >>>>>>> #emailalert="admin****@x*****" >>>>>>> #emailalertfreq=3600 >>>>>>> #emailalertstatus=all >>>>>>> quiescent=no >>>>>>> >>>>>>> # Sample for an http virtual service >>>>>>> virtual=172.31.207.10:80 >>>>>>> # real=172.31.206.1:80 masq 1 >>>>>>> # real=172.31.206.2:80 masq 1 >>>>>>> service=http >>>>>>> request="index.html" >>>>>>> # receive="Test Page" >>>>>>> scheduler=rr >>>>>>> # persistent=600 >>>>>>> # netmask=255.255.255.255 >>>>>>> # protocol=tcp >>>>>>> checktype=negotiate >>>>>>> >>>>>>> 何か設定不備等ありますか? >>>>>>> 以上、ご教授の程宜しくお願いします。