Kohei TANUMA
tanum****@nttco*****
2010年 2月 3日 (水) 14:39:07 JST
稲垣さま 田沼です。 こちらでは正常な動作を確認できました。 以下についてご確認ください。 ・LB サーバ(172.31.208.181)に mod_ssl 等の HTTPS を処理する モジュールがインストールされているか ・HTTPS で使うサーバ証明書が LB サーバとリアルサーバで同じものを 使っているか(ブラウザによってエラーになります) 2010/02/03 13:58, 稲垣 wrote: > 田沼様 > > お世話になります。 > 稲垣です。 > > リアルサーバのhttpdを停止したらfallbackのあて先が表示されました。 > ただ、httpsの方がfallbackに同じ宛先を指定しているのですが表示されません。 > > 「プロキシサーバへの接続を拒否されました。」 > がブラウザに表示されます。 > > 以上、宜しくお願いします。 > > Kohei TANUMA さんは書きました: >> 稲垣さま >> >> 田沼です。 >> >> 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 >>>>>>>>> >>>>>>>>> 何か設定不備等ありますか? >>>>>>>>> 以上、ご教授の程宜しくお願いします。 >>>>>>>>>