Hatena::ブログ(Diary)

夢見る大学生のはてな日記

2010-12-02

CARP


CARPとは

CARP(Common Adress Redundancy Protocol)とはOpenBSD由来のサーバ冗長化プロトコル

なんだとか。これを用いることで、冗長化を図ることが出来ます。

具体的には、仮想のIPアドレスを複数のマシンで共有することができるので

もしマシンが止まってしまった場合、バックアップのマシンに自動的に切り替わってくれるというもの。

難しい設定もないので、実際に動作を見たほうが説明するよりも理解しやすいと思います。



今回は、この環境の構築を行っていきたいと思います。



今回使用したのは、 FreeBSD 8.0 マシンを2台使用しました。

(以前に、VMware仮想マシンを用いて構築しようとした際には失敗しています。)

なかなか個人では用意できないかもしれませんが、物理的にマシンを複数台用意したほうがよさそうです。

快諾してマシンを提供してくれたゼミのK先輩に感謝感謝。



カーネルの再構築


標準の状態では、CARPを使用することは出来ないのでカーネルの再構築を行う必要があります。


# cd /usr/src/sys/i386/conf

# cp GENERIC MYKERNEL

で、MYKERNELをエディタで開いて

device carp

という1行を最終行にでも、追加してください。


/usr/src ディレクトリに移動します。

# cd /usr/src

カーネルコンパイルします。

# make buildkernel KERNCONF=MYKERNEL

新しいカーネルインストールします。

# make installkernel KERNCONF=MYKERNEL

そして、再起動で再構築が完了。



CARPの設定


続いて、CARPの設定を。

etc/rc.confに以下の2行を追加

cloned_interfaces="carp0"

ifconfig_carp0="vhid 1 pass ******(パスワード) ***.***.***.***/**(仮想IPアドレス)"

という感じに設定してあげます。


あとは再起動で設定自体は終了です。


確認


$ifconfig

等で設定が有効になっているかどうか確認してみてください。


・マシン1

carp0: flags=49<UP,LOOPBACK,RUNNING> metric 0 mtu 1500

inet 10.1.123.100 netmask 0xffffff00

carp: MASTER vhid 1 advbase 1 advskew 0

・マシン2

carp0: flags=49<UP,LOOPBACK,RUNNING> metric 0 mtu 1500

inet 10.1.123.100 netmask 0xffffff00

carp: BACKUP vhid 1 advbase 1 advskew 0


"MASTER"のマシンで

#ifconfig carp0 down

とすると、マシン2がMASTERに変わっていることが確認できると思います。

今度は、マシン1を

#ifconfig carp0 up

とすることで、MASTERと復帰していることが確認できると思います。




参考にさせていただいたサイト

カスタムカーネルの構築とインストール − FreeBSD ハンドブック

第3の冗長化プロトコル、CARPを試す - 負け組アーキテクトの憂鬱

投稿したコメントは管理者が承認するまで公開されません。

トラックバック - http://d.hatena.ne.jp/nk87/20101202/1291263149