keepalived を CentOS 5 にインストールする(1)

keepalived について で前提知識を扱ってきましたが、今回は CentOS 5(利用したのは 5.5)に実際にインストールする方法について説明します。

keepalived は IPVS を利用しています。IPVS は CentOS 5 系では既に kernel に機能としては組み込まれていますが制御するインタフェースがありません。ここでは管理ツールである ipvsadm のインストールも扱っています。

ipvsadm は CentOS であれば yum 経由でインストールすることが可能です。ただ、元々 kernel に組み込まれた IPVS のバージョンと異なっており、機能に支障をきたす可能性があります。

この為、今回はソースコードからインストールする方法を紹介しています。対象となるサーバは 等で説明した、バーチャルサーバとなります(リアルサーバへのインストールは不要)。

ipvsadm のインストール

kernel ヘッダソースのインストール

IPVS をソースコードからコンパイルする為、最初に kernel ヘッダをインストールします。

$ su –
# yum install -y kernel-devel
# grep IP_VS_VERSION_CODE /usr/src/kernels/2.6.18-194.32.1.el5-x86_64/include/net/ip_vs.h
[結果]
#define IP_VS_VERSION_CODE 0x010201

grep 結果で上記のように 0x010201 と出ています。これはどうやらバージョン 1.2.1 の様子です。この為、ipvsadm も同等のバージョンのものをインストールします。

ipvsadm のインストール

IP_VS_VERSION_CODE 1.2.1 に該当する ipvsadm は 1.24 である為、これをソースコードからインストールします。

# cd /usr/local/src
# tar zxvf ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
# mkdir -p /usr/src/linux
#ln -s /usr/src/kernels/2.6.18-194.32.1.el5-x86_64/include linux/include
# make
# make -e BUILD_ROOT=/usr/local install

IPVS は Redhat(CentOS)系で利用されている /usr/src/kernel を見てくれない様子なので /usr/src/linux ディレクトリを作成し、リンクを作成しています。また、今回は /usr/local 下にインストールしています。

次に PATH を通します。

# cd ~/
# vi .bash_profile

.bash_profile には以下の行を追加します(黄色で着色した箇所)

PATH=${PATH}:/usr/local/sbin
export PATH

次にインストールした ipvsadm のバージョンを確認します。

# ipvsadm -v
ipvsadm v1.24 2005/12/10 (compiled with popt and IPVS v1.2.1
# ipvsadm -C

ipvsadm の結果に  "IPVS v1.2.1" と表示されました。これが先ほどカーネルソースを grep した 0x010201と一致しているため OK です。

次に IP フォワードの設定を行います。この設定によりバーチャルサーバでは他のマシンからのリクエストを転送することが可能になります。

# vi /etc/sysctl.conf

/etc/sysctl.conf では以下のように設定を変更します

# Controls IP packet forwarding
#net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 1

最後に設定内容を反映します

# sysctl -p
# cat /proc/sys/net/ipv4/ip_forward
1

1 が表示されれば OK です。

【お勧め】負荷分散関連の記事

【お勧め】インストール関連の記事

2 Comments - Leave a comment
  1. nagaet says:

    ありがとうございました。たいへん参考になりました。
    ただ、私の環境(CentOS5.6)だと、以下のコマンドでエラーになりました。
    # ln -s /usr/src/kernels/2.6.18-194.32.1.el5-x86_64/include linux/include
    代わりに、以下のコマンドのようにするとうまくいきました。
    # ln -s /usr/src/kernels/2.6.18-274.12.1.el5-x86_64/include /usr/src/linux/include

Leave a Reply

Your email address will not be published. Required fields are marked *

*