fc2ブログ

ホーム

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

んでは、これからビルドとインストール手順を説明します :-)

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

BRCOMPATyesに設定します。

デフォルトではコメントアウトされているので、コメントをはずして設定してください。
これを有効にすると、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に実験できるといいなぁ....
(」・ω・)」うー!(/・ω・)/にゃー!

プログラミング コメント: 1 トラックバック: 0

< 前の記事 ホーム 次の記事 >

コメント

この記事にコメントする

承認待ちコメント

このコメントは管理者の承認待ちです

2014年06月22日 13:04 | | | 編集

コメントを書く






    



管理者にだけ公開させる

ホーム

プロフィール

PANTOMAIMU

Author:PANTOMAIMU
本当は仕様を決めたり設計だけじゃなく、プログラミングもしたいのに~というジレンマを抱えながらも、時間があれば家でプログラムを作ったりしている、しがないSE....
趣味はお絵描きに曲作りに自転車 :-)

Twitter @PANTOMAIMU

カレンダー

11 | 2024/12 | 01
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

FC2カウンター

最新トラックバック

検索フォーム

ブロとも申請フォーム

この人とブロともになる