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)
#

IPVS1.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
#

kernel-2.6.18-274.3.1.el5では、ip_vsのバージョンが1.2.1となっている事が確認できたため、
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を取得する。

ソースファイル(〜.tar.gz)とspecファイルが配置されるので、buildに進む。

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)
$
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
ようやくRPMパッケージが作成できた。

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)
#
ip_vs1.2.1がサポートされていることが確認できた。

次は、これまでに作成した ipvsadm と keepalivedパッケージを利用して、
LVS環境を構築する。