CARPを使用したフェールオーバーサービス

簡単な紹介



プロトコル自体は、Wikipediaで非常によく書かれています。 詳細と歴史に興味がある人は誰でも。 一言で言えば、これは言うことができます:同じサブネット上の2つ以上のコンピューターが同時に同じIPアドレスを持つことを可能にする冗長プロトコルであり、このコンピューターのグループを交換可能として構成することができますもう1つは優先度が高い)が仕事のために取られ、以下同様に続きます。これにより、ほぼ100%のサービス可用性が確保されます。 CARPは、OpenBSD、FreeBSD、およびNetBSDにネイティブです。 2.4を超えるカーネルを持つLinuxでは、ucarpを介して利用できます。



少し面倒ですが、将来的には状況がより明確になることを願っています。



環境



この説明では、VMWare ESXでDebian GNU / Linux 4.0を使用しました。 Apache Webサーバーサービスをテストします。



スタート。 設置



まず、ucarpを入れます。 Debianではすべてが非常に簡単です:



apt-get install ucarp







並べ替えからのインストールはそれほど困難を引き起こさないはずです



wget download.pureftpd.org/pub/ucarp/ucarp-1.2.tar.bz2

tar jxf ucarp-1.2.tar.bz2

cd ucarp-1.2

./configure

make

make install








同時に、Webサーバーをセットアップします



apt-get install apache2







UCARP設定



構成の主な部分は、マスターとスレーブの両方に共通です(違いは個別に検討します)



まず、.confファイルを作成します。このファイルには、ucarpを起動し、仮想インターフェイスを構成するためのパラメーターを記述します



mkdir /etc/ucarp

touch /etc/ucarp/ucarp.conf








/etc/ucarp/ucarp.conf:



# ucarp

UCARP_INTERFACE=eth0



# ip

UCARP_IF_ALIAS=eth0:0



# ip . .

UCARP_SRCIP=172.16.0.11



# CARP ID

UCARP_VHID=1



# , .

# ,

UCARP_ADVBASE=1



# hmac ( sha1).

UCARP_PASS=geheim



# ip

UCARP_ADDR=172.16.0.1



#

UCARP_MASK=255.255.0.0



# /

UCARP_UPSCRIPT=/etc/ucarp/ucarp-up.sh

UCARP_DOWNSCRIPT=/etc/ucarp/ucarp-down.sh








ここで、管理(ウィザードステータス)が現在のホストに移動するとき、またはその逆の場合に仮想インターフェイスを上げるスクリプトを作成します。



cd /etc/ucarp

touch ./ucarp-up.sh

touch ./ucarp-down.sh








/etc/ucarp/ucarp-up.sh



#!/bin/bash

source /etc/ucarp/ucarp.conf

ifconfig $UCARP_IF_ALIAS $UCARP_ADDR netmask $UCARP_NETMASK








/etc/ucarp/ucarp-down.sh



#!/bin/bash

source /etc/ucarp/ucarp.conf

ifconfig $UCARP_IF_ALIAS down








ノードがアクティブになると、ucarp-up.shが起動します。 エイリアス、仮想インターフェイス、アドレス、およびマスクのパラメーターは、ucarp.confファイルから取得されます。 ノードがマスターのステータスを失うとすぐに、ucarp-down.shが起動し、仮想インターフェイスがシャットダウンします。



次の手順では、UCARP自体を起動するスクリプトを作成します(または、initスクリプトを作成できます)。 スクリプトをstart.shと呼び、/ etc / ucarpに配置します。



source /etc/ucarp/ucarp.conf



ucarp /

--interface=$UCARP_INTERFACE /

--srcip=$UCARP_SRCIP /

--vhid=$UCARP_VHID /

--pass=$UCARP_PASS /

--advbase=$UCARP_ADVBASE /

--preempt /

--addr=$UCARP_ADDR /

--daemonize /

--upscript=$UCARP_UPSCRIPT /

--downscript=$UCARP_DOWNSCRIPT








最初の行はucarp.conf構成を接続し、すべての変数はそこから取得されます。 --daemonizeオプションは、デーモンモードでUCARPを起動します。 重要なオプションは--preemtです。これはウィザードにのみ存在します。 最後のステップは、スクリプトをルートの下から実行することです



chmod 0700 /etc/ucarp/*.sh







テストを開始するために、MasterVmを複製し、次のパラメーターを変更しました



-IPアドレス

-ホスト名

-/etc/ucarp/ucarp.confのUCARP_SRCIP



また、ファイル/var/www/apache2-default/index.htmlには、どのノードに到達するかを知るためのサーバーの名前が示されています。



行こう



スクリプト/etc/ucarp/start.shを使用して、ウィザードとスレーブを起動します。 --daemonizeオプションを指定したため、メッセージは表示されません。 ウィザードのifconfigを介して、起動された仮想インターフェイスが表示されます。



  eth0リンクencap:イーサネットHWaddr 00:22:15:6a:80:d8
           inet addr:172.16.0.11 Bcast:172.16.255.255 Mask:255.255.0.0
           inet6 addr:fe80 :: 250:56ff:fe82:352c / 64 
           UP BROADCAST RUNNING MULTICAST MTU:1500メトリック:1
           RXパケット:402618エラー:0ドロップ:0オーバーラン:0フレーム:0
           TXパケット:9019エラー:0ドロップ:0オーバーラン:0キャリア:0
          衝突:0 txqueuelen:1000
           RXバイト:34064624(32.4 MiB)TXバイト:623570(608.9 KiB)
          割り込み:177

 eth0:0リンクencap:イーサネットHWaddr 00:22:15:6a:80:d8
           inet addr:172.16.0.1 Bcast:172.20.255.255 Maske:255.255.0.0
           UP BROADCAST RUNNING MULTICAST MTU:1500メトリック:1
          割り込み:177 




スレーブには仮想インターフェースはありません。もちろん、マスターのステータスが転送されたときにのみ起動されます。 ucapノードのステータスは、/ var / log / syslogに書き込まれます。 次のようになります。



マスターで:



Nov 26 03:49:17 vmdebian01 ucarp[2327]: [WARNING] Switching to state: MASTER

Nov 26 03:49:17 vmdebian01 ucarp[2327]: [WARNING] Spawning [/etc/ucarp/ucarp-up.sh eth0]








奴隷に



Nov 26 03:50:24 vmdebian02 ucarp[3802]: [WARNING] Switching to state: BACKUP

Nov 26 03:50:24 vmdebian02 ucarp[3802]: [WARNING] Spawning [/etc/ucarp/ucarp-down.sh eth0]








仮想IPにアクセスすると、サーバー番号1(マスターとして実行されている)にアクセスします。 ウィザードがネットワークから切断されると、スレーブは即座にステータスを変更し、ip / macクラスターを介してアクセス可能なインターフェイスを起動します。 ブラウザでページをリロードすると、すでにサーバー番号2にいることがわかります。ウィザードが接続されると、すべてが元の場所に戻ります。



まとめ



もちろん、上記のすべてはucarp構成の単純化されたバージョンです。 実際には、アプリケーションのレベル、Webサーバーの場合はセッション、ftpの場合はファイルなどのレベルの同期についても考慮する必要があります。



All Articles