Open vSwitch のRPMパッケージ生成とインストール
2012年04月20日 23:14
4/7にあった「Open vSwitchソースコードリーディング その1」あたりをきっかけに、Open vSwitchを調べている今日この頃...
一応うちのCentOS6.2マシンにOpen vSwitchをインストールして、OpenFlowで遊ぶ準備をしています :-)
で、Webを探していても、手作業でのビルド&インストールの情報ぐらいしか見つからなかったので、RPMとしてビルド&インストールする手順をまとめてみました :-)
とりあえず今回は、Gitから最新のものをGetしてビルドをします。
2012/4/7時点のバージョンは、1.6.90です。
リリース版を、ここから持ってきてもOKです...多分
http://openvswitch.org/releases/openvswitch-1.4.0.tar.gz
んでは、これからビルドとインストール手順を説明します :-)
まずはビルドに必要な環境を構築します。
yumで、ビルドに必要なライブラリやToolをインストールします。
openvswitch 1.3以上では、ビルドにautoconf 2.64以上が必要になります。
環境によっては、autoconf 2.64より古いこともあるので、
と実行して、autoconfのバージョンを確認してください。
2.64より前であれば、適当な作業ディレクトリに移動して
と入力して、autoconf 2.68を取得して、以下の手順でビルドします。
※インストールはrootで実行します
適当な作業ディレクトリに移動して、GitからOpen vSwitchのソースを取得&ビルドします。
ビルドに成功すると、ビルドしたディレクトリに
openvswitch-1.6.90.tar.gz
というファイルができています。
これを展開して、Open vSwitchのRPMを作成します。
まずは、RPMを生成するためのディレクトリを生成します。
そのあと、openvswitch-1.6.90.tar.gzを移動させて、以下の手順でRPMを生成します。
RPMの生成に成功すると、~/rpmbuild/RPMS/x86_64/の下に
kmod-openvswitch-1.6.90-1.el6.x86_64.rpm
openvswitch-1.6.90-1.x86_64.rpm
openvswitch-debuginfo-1.6.90-1.x86_64.rpm
の3パッケージが生成されています。
※32bitの場合は、~/rpmbuild/RPMSの下に32bit用のディレクトリができているはずです...多分
生成した3つのパッケージを、以下の手順でインストールします。
インストールするためにはrootになる必要があります。
インストールに成功すると、Open vSwitchカーネルモジュールは
/lib/modules/2.6.32-220.7.1.el6.x86_64/extra/openvswitch/openvswitch.ko
/lib/modules/2.6.32-220.7.1.el6.x86_64/extra/openvswitch/brcompat.ko
にインストールされています。
(環境によっては、/lib/modules配下の別ディレクトリ...)
Open vSwitchデーモンのバイナリは
/usr/local/sbin/
にインストールされて、
Open vSwitchコマンドは
/usr/bin/
にインストールされます。
これで、必要なコマンドなどのインストールが完了です。
インストールが完了したら、環境の初期化を行います。
Open vSwitchの設定を保持するDB(JSONファイル)の初期化を行います。
この初期化は、rootのままで行います。
vswitch.ovsschemaには、DBのテーブルスキーマが定義されています。
これを読むと、Open vSwitchで何ができるのかが、ある程度予測できます...多分 orz
Open vSwitchをbridge互換で動作させるため、Open vSwitchの定義を追加します。
定義を追加するコンフィグファイルは
/etc/sysconfig/openvswitch
のBRCOMPATをyesに設定します。
デフォルトではコメントアウトされているので、コメントをはずして設定してください。
これを有効にすると、Open vSwitchをスタートする際にovs-brcompatdが有効になります。
※/usr/share/openvswitch/scripts/ovs-ctl を読むと、なんとなく動きがわかるかも...
設定が終わったので、Open vSwitchを実行します。
サービスとして実行させるので、お約束の/etc/init.d として実行します。
※もちろんrootで実行させます。
これでOpen vSwitchが実行されます。
うまくいかなかったら、再起動してください....orz
rcの設定もインストール時に行われているので、再起動でOpen vSwitchサービスが実行されています。
動作しているかどうかは
$ /etc/init.d/openvswitch status
と実行すると
ovsdb-server is running with pid 4401
ovs-vswitchd is running with pid 4410
という感じに、実行しているデーモンが表示されます。
ovs-brcompatdも動作しているのですが、なぜか表示されません..
まぁ、ps -aef | grep ovs ってやれば、動作していることは確認できます...
バージョンは
$ /etc/init.d/openvswitch version
と打てば、
ovsdb-server (Open vSwitch) 1.6.90
Compiled Apr 3 2012 16:38:27
ovs-vswitchd (Open vSwitch) 1.6.90
Compiled Apr 3 2012 16:38:30
OpenFlow versions 0x1:0x1
って感じに出力されます。
OpenFlowは1.0で動作しているようです...
あとは、KVMのゲスト間のブリッジとして動作させて、TremaからOpenFlowで制御してみようとしています...
GWに実験できるといいなぁ....
(」・ω・)」うー!(/・ω・)/にゃー!
一応うちのCentOS6.2マシンにOpen vSwitchをインストールして、OpenFlowで遊ぶ準備をしています :-)
で、Webを探していても、手作業でのビルド&インストールの情報ぐらいしか見つからなかったので、RPMとしてビルド&インストールする手順をまとめてみました :-)
とりあえず今回は、Gitから最新のものをGetしてビルドをします。
2012/4/7時点のバージョンは、1.6.90です。
リリース版を、ここから持ってきてもOKです...多分
http://openvswitch.org/releases/openvswitch-1.4.0.tar.gz
んでは、これからビルドとインストール手順を説明します :-)
1.前準備
まずはビルドに必要な環境を構築します。
1)依存するライブラリやToolのインストール
yumで、ビルドに必要なライブラリやToolをインストールします。
> su
$ yum install gcc make autoconf rpm-build redhat-rpm-config kernel-devel openssl-devel
2)autoconf 2.64以上のinstall
openvswitch 1.3以上では、ビルドにautoconf 2.64以上が必要になります。
環境によっては、autoconf 2.64より古いこともあるので、
>autoconf --version
と実行して、autoconfのバージョンを確認してください。
2.64より前であれば、適当な作業ディレクトリに移動して
>cd ~/Download
>wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz
と入力して、autoconf 2.68を取得して、以下の手順でビルドします。
> tar zxvf autoconf-2.68.tar.gz
> cd autoconf-2.68
> ./configure
> make
> su -
$ cd "ビルドしたユーザのカレントディレクトリ"/Download/autoconf-2.68
$ make install
※インストールはrootで実行します
2.GitからOpen vSwitchの取得&ビルド
適当な作業ディレクトリに移動して、GitからOpen vSwitchのソースを取得&ビルドします。
> cd ~/Download
> git clone git://openvswitch.org/openvswitch
> cd openvswitch
> ./boot.sh
> ./configure --with-linux=/lib/modules/`uname -r`/build
> make
> make dist
ビルドに成功すると、ビルドしたディレクトリに
openvswitch-1.6.90.tar.gz
というファイルができています。
これを展開して、Open vSwitchのRPMを作成します。
3.Open vSwitchのRPMの生成
まずは、RPMを生成するためのディレクトリを生成します。
> mkdir -p ~/rpmbuild/SOURCES
そのあと、openvswitch-1.6.90.tar.gzを移動させて、以下の手順でRPMを生成します。
> mv openvswitch-1.6.90.tar.gz ~/rpmbuild/SOURCES/.
> cd ~/rpmbuild/SOURCES/
> tar xzvf openvswitch-1.6.90.tar.gz
> cd openvswitch-1.6.90
> rpmbuild -bb rhel/openvswitch-kmod-rhel6.spec
> rpmbuild -bb rhel/openvswitch.spec
RPMの生成に成功すると、~/rpmbuild/RPMS/x86_64/の下に
kmod-openvswitch-1.6.90-1.el6.x86_64.rpm
openvswitch-1.6.90-1.x86_64.rpm
openvswitch-debuginfo-1.6.90-1.x86_64.rpm
の3パッケージが生成されています。
※32bitの場合は、~/rpmbuild/RPMSの下に32bit用のディレクトリができているはずです...多分
4.Open vSwitchのインストール
生成した3つのパッケージを、以下の手順でインストールします。
インストールするためにはrootになる必要があります。
> su -
$ cd "ビルドしたユーザのカレントディレクトリ"/rpmbuild/RPMS/x86_64/
$ rpm -ivh kmod-openvswitch-1.6.90-1.el6.x86_64.rpm
$ rpm -ivh openvswitch-1.6.90-1.x86_64.rpm
$ rpm -ivh openvswitch-debuginfo-1.6.90-1.x86_64.rpm
インストールに成功すると、Open vSwitchカーネルモジュールは
/lib/modules/2.6.32-220.7.1.el6.x86_64/extra/openvswitch/openvswitch.ko
/lib/modules/2.6.32-220.7.1.el6.x86_64/extra/openvswitch/brcompat.ko
にインストールされています。
(環境によっては、/lib/modules配下の別ディレクトリ...)
Open vSwitchデーモンのバイナリは
/usr/local/sbin/
にインストールされて、
Open vSwitchコマンドは
/usr/bin/
にインストールされます。
これで、必要なコマンドなどのインストールが完了です。
5.Open vSwitchの環境設定と起動
インストールが完了したら、環境の初期化を行います。
1)DB初期化
Open vSwitchの設定を保持するDB(JSONファイル)の初期化を行います。
この初期化は、rootのままで行います。
$ ovsdb-tool create /usr/local/etc/openvswitch/conf.db "ビルドしたユーザのカレントディレクトリ"/rpmbuild/SOURCES/openvswitch-1.6.90/vswitchd/vswitch.ovsschema
vswitch.ovsschemaには、DBのテーブルスキーマが定義されています。
これを読むと、Open vSwitchで何ができるのかが、ある程度予測できます...多分 orz
2)ovs-brcompatdの有効化
Open vSwitchをbridge互換で動作させるため、Open vSwitchの定義を追加します。
定義を追加するコンフィグファイルは
/etc/sysconfig/openvswitch
で、
# BRCOMPAT: If 'yes' compatibility mode will be enabled.
BRCOMPAT=yes
のBRCOMPATをyesに設定します。
デフォルトではコメントアウトされているので、コメントをはずして設定してください。
これを有効にすると、Open vSwitchをスタートする際にovs-brcompatdが有効になります。
※/usr/share/openvswitch/scripts/ovs-ctl を読むと、なんとなく動きがわかるかも...
3)Open vSwitchの実行
設定が終わったので、Open vSwitchを実行します。
サービスとして実行させるので、お約束の/etc/init.d として実行します。
※もちろんrootで実行させます。
$ /etc/init.d/openvswitch start
Starting ovsdb-server [ OK ]
Configuring Open vSwitch system IDs [ OK ]
Starting ovs-vswitchd [ OK ]
Starting ovs-brcompatd [ OK ]
これでOpen vSwitchが実行されます。
うまくいかなかったら、再起動してください....orz
rcの設定もインストール時に行われているので、再起動でOpen vSwitchサービスが実行されています。
動作しているかどうかは
$ /etc/init.d/openvswitch status
と実行すると
ovsdb-server is running with pid 4401
ovs-vswitchd is running with pid 4410
という感じに、実行しているデーモンが表示されます。
ovs-brcompatdも動作しているのですが、なぜか表示されません..
まぁ、ps -aef | grep ovs ってやれば、動作していることは確認できます...
バージョンは
$ /etc/init.d/openvswitch version
と打てば、
ovsdb-server (Open vSwitch) 1.6.90
Compiled Apr 3 2012 16:38:27
ovs-vswitchd (Open vSwitch) 1.6.90
Compiled Apr 3 2012 16:38:30
OpenFlow versions 0x1:0x1
って感じに出力されます。
OpenFlowは1.0で動作しているようです...
あとは、KVMのゲスト間のブリッジとして動作させて、TremaからOpenFlowで制御してみようとしています...
GWに実験できるといいなぁ....
(」・ω・)」うー!(/・ω・)/にゃー!