• ベストアンサー

LinuxのバーチャルIPアドレスの設定方法

2台のLinuxのサーバ(redhat)を正/副として使用したいのですが、監視のため両方との稼動させたままでLANに接続したいです。そこで、もう一個の仮のIPアドレスを使って、正サーバが故障したときに副サーバにそのIPアドレスを引き継いで稼動させたいのですが、設定方法をご存知の方教えてください。 *市販のソフトを使うと値がはるので。。。切り替えは手動でもいいかなと思ってます。

質問者が選んだベストアンサー

  • ベストアンサー
noname#17908
noname#17908
回答No.1

高可用性クラスタを実現する前に いくつかチェックポイントがあるんですけど。 (1)高可用性クラスタの知識はお持ちですか? (2)求めるのはIPエイリアス方式のIPテイクオーバですか? (3)テイクオーバポリシーは、どのようなものですか? (カスケーディング、ローテーティングなど) (4)非IPネットワークに何を使います? (5)稼働させるアプリケーションは何ですか? (6)商用(賠償責任がある)システムを構築予定ですか? (1)がない場合は無理です。 (2)~(5)が明確でなくては商用HA製品を購入しても扱いきれません。 (6)が該当するのであれば、考え直すことを強く奨めます。 SSHとシェルスクリプトだけで実現する簡単な方法を 提案しておきます。基本的な考え方は商用ソフトと同じです。 前提条件 *サービスIPは192.168.0.100とする。 *起動IPはHostA:192.168.0.1、HostB:192.168.0.2とする。 *NFSサーバ(HostC)を共有ディスク(コンテンツがある場所)とする。 *サービスアプリケーションはWebサーバとFTPサーバとする。 *ゲートウェイのIPアドレスは192.168.0.254とする。 *イーサネットはHostA,B共にeth0とする。 *ゲートウェイに1パケットPINGを打ち、中継するスイッチのMACテーブルを書き換える為。 以下のスクリプトを2つのサーバに置いておきます。 ha_host_active.sh #!/bin/sh /sbin/ifconfig eth0:0 192.168.0.100 netmask 255.255.255.0 up /bin/ping -c 1 -I "eth0:0" 192.168.0.254 > /dev/null /bin/mount -at nfs /etc/init.d/httpd start /etc/init.d/ftpd start ha_host_standby.sh #!/bin/sh /etc/init.d/ftpd stop /etc/init.d/httpd stop /bin/umount -at nfs /sbin/ifconfig eth0:0 down 以下のスクリプトを管理クライアントPCに置いておきます。 takeover_a2b.sh #!/bin/sh /usr/bin/ssh root@192.168.0.1 ha_host_standby.sh /usr/bin/ssh root@192.168.0.2 ha_host_active.sh takeover_b2a.sh #!/bin/sh /usr/bin/ssh root@192.168.0.2 ha_host_standby.sh /usr/bin/ssh root@192.168.0.1 ha_host_active.sh これでHostAで稼働中でHostBにテイクオーバーしたい場合、 管理クライアントPCでtakeover_a2b.shと実行。 HostBで稼働中でHostAにテイクオーバーしたい場合、 管理クライアントPCでtakeover_b2a.shと実行。

Kuma1127
質問者

お礼

まず、(1)についてですがSolarisでFirstWatch(べりタス社製)を扱ったことがあります。 (2)ですがIPテークオーバーになるかな?バーチャルIPを設定して,そのIPを引き継ぐといった方式です。 つまり、Host-Aの固有IP、Host-Bの固有IP、VIPの3個のIPが必要です。 (3)ポリシーは、通常はHost-A、Bとも稼動していますが、Host-Bではアプリは起動させません。Host-Aに障害が発生した場合は、IP切り替え後、手動でHost-Bでアプリを起動します。 (4)(5)についてはこれからですね。用途はメールサーバです。 (6)は障害復旧に10分もあればいいシステムです。 *商用ではないということです。 提示されたシェルで大体の感覚(?)はわかりました。ここまでくれば構築できます。 ありがとうございました。

関連するQ&A