[Ultramonkey-l7-users 298] Re: fallback設定について

Back to archive index

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
>>>>>
>>>>> 何か設定不備等ありますか?
>>>>> 以上、ご教授の程宜しくお願いします。
>>>>>         





Ultramonkey-l7-users メーリングリストの案内
Back to archive index