簡単な紹介
プロトコル自体は、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の場合はファイルなどのレベルの同期についても考慮する必要があります。