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

セカンダリLVSも同じように設定します。

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の設定を確認してください。