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
metric 0 mtu 1500
inet 10.1.123.100 netmask 0xffffff00
carp: MASTER vhid 1 advbase 1 advskew 0
・マシン2
carp0: flags=49
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を試す - 負け組アーキテクトの憂鬱