アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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と実行。
    • good
    • 0
この回答へのお礼

まず、(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分もあればいいシステムです。
*商用ではないということです。
提示されたシェルで大体の感覚(?)はわかりました。ここまでくれば構築できます。
ありがとうございました。

お礼日時:2004/08/12 10:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!