ipvsadm、RPMパッケージ作成
pukiwikiに慣れ過ぎて、はてな記法に慣れないな...。
はじめに
centos5.6で、LVS環境を構築するにあたり、ipvsadmのRPMパッケージを作成する。
Baseリポジトリ提供のipvsadm RPMでは、IPVS v1.2.0対応となっているための処置。
現状確認
今回、LVS環境を構築するサーバ環境は以下の通り。
-
- OS :centOS5.6
- kernel:2.6.18-274.3.1.el5
- ipvsadm RPMパッケージインストール
まず、Baseリポジトリで提供されているRPMをインストールし、バージョン確認。
# yum install ipvsadm
# rpm -qa | grep ipvsadm
ipvsadm-1.24-13.el5
#
# ipvsadm -v
ipvsadm v1.24 2003/06/07 (compiled with popt and IPVS v1.2.0)
#
- kernel内のip_vsバージョン確認
LVS環境と同じkernelソースを用意し、ip_vsのバージョンを確認。
※ここでは、build環境で kernel-develを入れて確認した。
# yum install kernel-devel
# grep VERSION_CODE /usr/src/kernels/2.6.18-274.3.1.el5-x86_64/include/net/ip_vs.h
#define IP_VS_VERSION_CODE 0x010201
#
ip_vsの1.2.1に対応したipvsadm RPMパッケージを作成することにする。
- 参考
勉強不足のため根本理由が把握できていないが、下記klabさんの記事によると、
「ipvsadmをコンパイルしたときのIPVSのバージョンと、
kernelのIPVSのバージョンが異なっていると期待した動作をしないことがある」
とのことで、ip_vsの1.2.1に対応したipvsadm RPMパッケージを作成することにした。
DSAS開発者の部屋 -こんなに簡単! Linuxでロードバランサ (1)-
RPM作成
- ソースファイルのダウンロード
RPMの作成はbuild環境で行う。
こちらのサイトから、LVS環境のkernelに適応したバージョンのsrcRPMを取得する。
# cd /usr/local/src/
# wget http://www.linux-vs.org/software/kernel-2.6/ipvsadm-1.24-6.src.rpm
# rpm -ivh ipvsadm-1.24-6.src.rpm
- RPM作成
rpmbuildで、RPMパッケージを作成する。
$ cd /usr/src/redhat/SPECS/
$ rpmbuild -ba ./SPECS/keepalived.spec
エラー: 旧来の構文はサポートされません: copyright
エラー: 7 行目: 不明なタグ: Copyright: GNU General Public Licence
$
ほう、rpm4.1以降では、ライセンスの定義を行うタグが「Copyright」から「License」に変更されたために発生する模様。
specファイルで以下の修正をする。
$ vim ./SPECS/keepalived.spec
- Copyright: GNU General Public Licence
+ License: GNU General Public Licence
$
改めて、rpmbuild。
$ rpmbuild -ba ./SPECS/keepalived.spec
〜
libipvs.c:23 から include されたファイル中:
libipvs.h:14:23: error: net/ip_vs.h: そのようなファイルやディレクトリはありません
In file included from libipvs.c:23:
〜
RPM ビルドエラー:
/var/tmp/rpm-tmp.73389 の不正な終了ステータス (%build)
$
調査したところ、こちらの掲示板で make時にkernelソースを見に行くとの情報があったので、
kernelソースのシンボリックリンクを作成して、再度rpmbuildしてみる。
# ln -s /usr/src/kernels/2.6.18-274.3.1.el5-x86_64 /usr/src/linux
$ rpmbuild -ba ./SPECS/keepalived.spec
ipvsadmのサポートするip_vsバージョン確認
LVS環境にインストールする前に、build環境で作成したRPMパッケージをインストールし、
サポートするip_vsのバージョンを確認する。
# rpm -ivh /usr/src/redhat/RPMS/x86_64/ipvsadm-1.24-6.x86_64.rpm
# ipvsadm -v
ipvsadm v1.24 2005/12/10 (compiled with popt and IPVS v1.2.1)
#
次は、これまでに作成した ipvsadm と keepalivedパッケージを利用して、
LVS環境を構築する。