keepalivedでweight設定が戻らない!! (#`Д´)ゴ---!!

XenServerの罠なのか?自分が悪いのか?わからないです。(#`Д´)ゴ---!!

XenServer5.5(VMはCentOS5.5)で、keepalivedを試し中です。


緑の枠は、ホストサーバの範囲です。
1つのホストサーバ内に6つのVMを立てて実験してみました。


こんな感じの構成で、だいたい思ったような動作をしてくれているのですが・・・

例えば、配下のWebサーバが落ちたり、監視対象パス(check.htmlとか)を削除したりとか、そういう事をするとバランス対象から一旦外れて、復活後にはまた元通りです。

なのですが・・・、

以下の事をすると期待する動作になりません。(#`Д´)ゴ---!!


1)バランサ-1側がMASTER状態の時に「ifdown eth1」を実施。
  ↓
  MASTERがバランサ-2に切り替わる(ここまで問題無し)

2)バランサ-1側にて、「ifup eth1」を実施。
  ↓
  バランサ-1の方のpriorityを高くしているので、MASTERがバランサ-1に戻る
  (ここまでも期待通り)

3)バランサ-1から配下のWebサーバに流れなくなる!!
  ↓
  1)で「ifdown eth1」を実施した時に配下Webサーバに対するWeight値が「0」に
  なるのですが、それが復旧後も直りません。
  ※復旧後にweight値が最初の「1」に戻る事を期待してました。

「ifdown eth0」の実行前:
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.100:http rr
  -> 10.1.1.110:http              Masq    1      0          10
  -> 10.1.1.120:http              Masq    1      0          11
  -> 10.1.1.130:http              Masq    1      0          11
「ifdown eth0」の実行後:
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.100:http rr
  -> 10.1.1.110:http              Masq    0      0          10
  -> 10.1.1.120:http              Masq    0      0          11
  -> 10.1.1.130:http              Masq    0      0          11


この状態のまま、バランサ-1がMASTERになるので、クライアントからの接続要求が何処にも行かずに止まってしまいます。(#`Д´)ゴ---!!


これは何かを間違えているのでしょうか????

因みに、XenServerを使わずに物理マシンだけで構成するとこのような状態にはなりませんでした。

keepalived.confの設定は以下の通りです。(・◇・;)

vrrp_sync_group VG {
  group {
    VI_eth0
    VI_eth1
  }
}

vrrp_instance VI_eth0 {

    state MASTER
    interface eth0
    garp_master_delay 5
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass naisho
    }
    virtual_ipaddress {
        192.168.1.100  dev eth0
    }
}

vrrp_instance VI_eth1 {

    state MASTER
    interface eth1
    garp_master_delay 5
    virtual_router_id 52
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass naisho
    }
    virtual_ipaddress {
        10.1.1.100  dev eth1
    }
}


virtual_server_group mtest {
  192.168.1.100 80
}

virtual_server group mtest {

  lvs_sched  wrr
  lvs_method NAT
  protocol   TCP
  virtualhost mhealth

  real_server 10.1.1.110 80 {
    weight 1
    inhibit_on_failure
    HTTP_GET {
      url {
        path        /index.html
        status_code 200
      }
      connect_timeout  3
    }
  }

  real_server 10.1.1.120 80 {
    weight 1
    inhibit_on_failure
    HTTP_GET {
      url {
        path        /index.html
        status_code 200
      }
      connect_timeout  3
    }
  }

  real_server 10.1.1.130 80 {
    weight 1
    inhibit_on_failure
    HTTP_GET {
      url {
        path        /index.html
        status_code 200
      }
      connect_timeout  3
    }
  }

}