2012年8月27日月曜日

keepalived で負荷分散 - 1. IPVSとkeepalivedのインストール

IPVSと、keepalivedをCentOS 6.3で使用する場合のインストールから運用までの流れを紹介します。
IPVSはロードバランサーとしての役割を担います。しかし、ロードバランサー配下のリアルサーバがダウンしてもそれを検知できないため、keepalivedによるヘルスチェックを行うことで反応のないサーバを負荷分散の対象から外すといった役割を担います。
さらに、VRRPを使うことでロードバランサー自身をアクティブ-スタンバイ構成で冗長化できます。
keepalived で負荷分散 - 2. keepalivedの設定へ続く。

1. IPVSインストール

■ CentOSのセットアップ

CentOS6.3をテキストモード(CUI)でインストールすると、最小限の構成になるようです。そこで、OSインストール後、構築に不足するパッケージをインストール。
※ ネットワークの設定はすでに完了しているものとします。
# yum groupinstall "Development tools"
# yum install sudo wget 
# yum update

■ IPVSのインストール

IPVSをインストールするために必要なパッケージをイントール。
# yum install libnl-devel popt-devel popt-static openssl-devel
下記コマンド内のkernelのバージョンは、インストールされていて且つ現在起動しているkernelを指定。
$ cd /tmp
$ wget http://www.linux-vs.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
$ tar zxfv ipvsadm-1.26.tar.gz
$ cd ipvsadm-1.26
$ sudo ln -s /usr/src/kernels/`uname -r` /usr/src/linux
$ make
# make install
# /sbin/ipvsadm --version
ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)

■ ip_forwardの設定

IPVSを稼動させるロードバランサーサーバと分散対象のサーバとの間でパケットを通すために、ip_forwardを有効に。
/etc/sysctl.conf の net.ipv4.ip_forward = 0 を 1にし、 sysctl -p を実行し、設定を反映。
# /sbin/sysctl -p
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
上記のエラーが発生する場合は、/sbin/modprobe bridgeを実行。
# /sbin/modprobe bridge
# /sbin/sysctl -p

2. keepalivedのインストール

続いて、keepalivedをインストール。
$ cd /tmp
$ wge http://www.keepalived.org/software/keepalived-1.2.6.tar.gz
$ tar xvfz keepalived-1.2.6.tar.gz
$ cd keepalived-1.2.6
$ ./configure --prefix=/usr/local/keepalived-1.2.6
$ make 
# make install
インストールした環境へシンボリックリンクを作成。
# ln -s /usr/local/keepalived-1.2.6 /usr/local/keepalived
# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
# ln -s  /usr/local/keepalived/bin/genhash /usr/bin/
起動スクリプトのコピーと、設定ファイルの置き場を作成。
$ sudo cp -dpR /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
$ sudo cp -dpR /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
$ sudo mkdir /etc/keepalived
OS起動時にサービスが自動起動するように。
$ sudo /sbin/chkconfig --add keepalived
$ sudo /sbin/chkconfig --level 3 keepalived on
/etc/keepalived 以下に配置するconfは、/usr/local/keepalived/etc/keepalived 以下に多数のサンプルがあるので、それを参考に。
keepalived で負荷分散 - 2. keepalivedの設定へ続く。