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の設定を確認してください。
RHEL5にheartbeat-ldirectordをインストール
RHEL5にheartbeat-ldirectordをインストールしようとしたら少しつまずいたのでメモ。
既にheartbeatのインストールは完了してるのを前提に書きます。
ipvsadmをインストール
# wget ftp://ftp.ntua.gr/pub/linux/centos/5.5/os/x86_64/CentOS/ipvsadm-1.24-10.x86_64.rpm # rpm -ivh ipvsadm-1.24-10.x86_64.rpm
heartbeat-ldirectordをインストール
# rpm -ivh heartbeat-ldirectord-2.1.4-1.x86_64.rpm エラー: 依存性の欠如: perl(Mail::Send) は heartbeat-ldirectord-2.1.4-1.x86_64 に必要とされています perl-Authen-Radius は heartbeat-ldirectord-2.1.4-1.x86_64 に必要とされています perl-MailTools は heartbeat-ldirectord-2.1.4-1.x86_64 に必要とされています perl-Net-IMAP-Simple は heartbeat-ldirectord-2.1.4-1.x86_64 に必要とされています perl-Net-IMAP-Simple-SSL は heartbeat-ldirectord-2.1.4-1.x86_64 に必要とされています perl-POP3Client は heartbeat-ldirectord-2.1.4-1.x86_64 に必要とされています perl-ldap は heartbeat-ldirectord-2.1.4-1.x86_64 に必要とされています perl-libnet は heartbeat-ldirectord-2.1.4-1.x86_64 に必要とされています
なんか色々と足りないようです。
epelをレポジトリに追加し幾つかのソフトウェアをインストール
# wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm # rpm -ivh epel-release-5-4.noarch.rpm # yum -y install perl-Mail-POP3Client.noarch # yum -y install perl-MailTools.noarch # yum -y install perl-Authen-Radius.noarch
# wget http://ftp.belnet.be/packages/dries.ulyssis.org/fedora/fc6/x86_64/RPMS.dries/perl-ldap-0.33-1.fc6.rf.noarch.rpm # rpm -ivh perl-ldap-0.33-1.fc6.rf.noarch.rpm
perl-Net-IMAP-Simple-SSLをインストール
# wget http://download.fedora.redhat.com/pub/epel/testing/5/i386/perl-Net-IMAP-Simple-SSL-1.3-2.el5.noarch.rpm # rpm -ivh perl-Net-IMAP-Simple-SSL-1.3-2.el5.noarch.rpm
perl-libnetはperl本体に入っているらしいので、--nodepsを付けて強制的にインストールします。
sudo rpm -ivh heartbeat-ldirectord-2.1.4-1.x86_64.rpm --nodeps