heartbeat-ldirectordに複数の仮想IPを設定
heartbeatのバランサで複数の仮想IPを設定する方法を調べてみました。
あまりやろうと思う人は居ないと思いますが、海外フォーラムを漁ってもなかなか見つからなかったので書いておきます。
今回は例として既に仮想IP10.0.0.3を設定し稼働している環境に仮想IP10.0.0.4を追加します。
ldirectordの設定
ldirectord.cfの末尾にバランサの設定を追加します。# vi /etc/ha.d/ldirectord.cf virtual=10.0.0.3:80 fallback=127.0.0.1:80 real=10.0.0.5:80 gate 5 real=10.0.0.6:80 gate 5 service=http request="check.html" receive="OK" scheduler=lc protocol=tcp checktype=negotiate checkport=80 virtual=10.0.0.4:80 fallback=127.0.0.1:80 real=10.0.0.7:80 gate 5 real=10.0.0.8:80 gate 5 service=http request="check.html" receive="OK" scheduler=lc protocol=tcp checktype=negotiate checkport=80
haresourcesの設定
haresourcesに仮想IPの設定を追加します# vi /etc/ha.d/haresources lvs1 MailTo::info@example.com IPaddr2::10.0.0.3/24/eth0:0 IPaddr2::10.0.0.4/24/eth0:1 ldirectord
セカンダリLVSも同じように設定します。
1つの設定で書くのがポイントです。
lvs1 MailTo::info@example.com IPaddr2::10.0.0.3/24/eth0:0 ldirectord
lvs1 MailTo::info@example.com IPaddr2::10.0.0.4/24/eth0:1 ldirectord
というように設定を2つに分けることはできません。
設定反映
heartbeatを再起動すればharesourcesの設定が反映されるのですが、既に稼働している環境でそんなことはできません。今回はフェイルオーバーした際にharesourcesが読み込まれるのを利用して設定反映を行います。
まずはプライマリLVSを落とします。
# /etc/rc.d/init.d/heartbeat stop
フェイルオーバーしたセカンダリLVSに複数の仮想IPが振られていることを確認します。
# ifconfig eth0:0 Link encap:Ethernet HWaddr 00:07:32:12:8F:05 inet addr:10.0.0.3 Bcast:10.0.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Memory:fd6c0000-fd6e0000 eth0:1 Link encap:Ethernet HWaddr 00:07:32:12:8F:05 inet addr:10.0.0.4 Bcast:10.0.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Memory:fd6c0000-fd6e0000
プライマリLVSにフェイルバックさせ、複数の仮想IPが振られていることを確認します。
# /etc/rc.d/init.d/heartbeat start # ifconfig eth0:0 Link encap:Ethernet HWaddr 00:07:32:12:8F:5F inet addr:10.0.0.3 Bcast:10.0.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Memory:fd6c0000-fd6e0000 eth0:1 Link encap:Ethernet HWaddr 00:07:32:12:8F:5F inet addr:10.0.0.4 Bcast:10.0.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
これで設定完了です。
いつまで経っても仮想IPが振られない場合、一度振られた仮想IPが剥がれてしまった場合はharesourcesの設定を確認してください。