Kohei TANUMA
tanum****@nttco*****
2010年 2月 2日 (火) 14:49:29 JST
稲垣さま 田沼です。 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 >>>>> >>>>> 何か設定不備等ありますか? >>>>> 以上、ご教授の程宜しくお願いします。 >>>>>