12/2担当: Wakame Users Group Advent Calendar 2013

前日12/1に、記念すべき本企画最初の記事「Wakame-vdc編 - nested KVM を用いた環境で Wakame-VDC 環境の作り方」が羽深さんの手によりリリースされました。おかげさまで幸先良く無事開幕しました。Wakame-vdcのインストールに試行錯誤をした素敵な記事だったので、僕は最近リリースされたOpenVNetのインストールについて書いてみることにしました。これでアナタもOpenFlowの世界へ飛び込んでみてください!ちなみに、今からでもエントリは遅くありません。参加記事の中から最も素敵な記事には、なんとプレステ4を差し上げます。

OpenVNetは、GitHubにrpmを構築する方法が記載されています。このrpmを、あらかじめ置いておいたものを利用して、インストールすることもできます。 現在、公式なものではありませんが、rpmが下記URLにて提供されています。

この他、サードパーティ製のバイナリも下記にまとめてあります。

前準備

とりあえず簡単にインストールするために、下記の環境を用意してみました。

  • ホスト環境: MacBook Pro 2.4GHz Intel Core i5 / 16GB RAM
  • ハイパーバイザー: VMware Fusion Professional Version 5.0.3
  • ゲスト環境: CentOS 6.4 / GNOME Desktop
僕のマシンは、エンジニアのお下がりなのですが、メモリが16GB入っていて快適です。 CentOS 6.4が動き出しているところからインストールを初めてみます。

yumコマンドを利用する場合は、冒頭のrpm群を、リポジトリファイルとして書いておくと便利です。早速作業にとりかかりましょう。

/etc/yum.repos.d/openvnet.repo
[openvnet]
name=OpenVNet
baseurl=http://dlc.openvnet.axsh.jp/packages/rhel/6/vnet/current/
enabled=1
gpgcheck=0
/etc/yum.repos.d/openvnet-third-party.repo
[openvnet-third-party]
name=OpenVNet Third Party
baseurl=http://dlc.openvnet.axsh.jp/packages/rhel/6/third_party/current/
enabled=1
gpgcheck=0

インストールしてみよう

epelも必要ですので、下記にまとめてあるrpmをインストールしておきます。

$ rpm -Uvh http://dlc.wakame.axsh.jp.s3-website-us-east-1.amazonaws.com/epel-release

先述したリポジトリファイルがあれば、下記するコマンドでインストールすることができます。

$ yum install -y wakame-vnet
wakame-vnetは、OpenVNetのプロジェクトネームで、現在もまだ変更されずに色々な箇所で名残を見せています。いずれ修正されるはずですので、お気をつけください。 しばらく時間がかかりますが、Complete!と出れば完了です。

設定ファイルを見てみよう

設定ファイル類は、おおよそ /etc/wakame-vnet/ 以下に配置されています。

$ ls /etc/wakame-vnet/
common.conf  vna.conf  vnmgr.conf  webapi.conf
基本的に、各ノード共通の設定ファイル"common.conf"と、個別の設定ファイルによって構成されており、vna、vnmgr, webapiと言ったシステムを構成するノードの名称が見えます。

vna (Virtual Network Agent)

これが、OVSのコントロールをするエージェントです。ネットワークを流れるパケットの動きを変えたいと思ったところに、OVSと対になるようにこのエージェントを配置する必要があります。現在ではそのような配置から、vnaはOVSとUnix Socket通信するように書かれています。いずれはOVSをオフロードするようになれば、一般的なTCP通信へと切り替えるのが良いのでしょう。設定ファイルのアドレスは、ZeroMQと言うキューサーバーへの接続先です。

vnmgr (Virtual Network Manager)

キューネットワークを介したMySQLへのアクセスを司る他、データセンター全体の物理・仮想ネットワーク構成を俯瞰して観ることができるプログラムです。必要なvnaへの指令を出し、ネットワーク全体を正しく動かす役目を持ちます。

webapi (Web API)

HTTPサーバとして機能し、curlや、wgetのような、HTTPクライアントからの接続と要求に応じて、vnmgrに向けて処理の依頼を投げかけるプログラムです。どのようなインターフェイス定義になっているかは、ドキュメントを御覧ください。ただし、ソースコードは日々更新されているため、ドキュメントが少し古くなっていることがあります。

MySQLを起動し、データベースを設定しよう

手動での起動のついでに、自動起動もONにしておきましょう。

$ service mysqld start
$ chkconfig mysqld on
その後、データベースへスキーマを流し込みます。
$ cd /opt/axsh/wakame-vnet/vnet
$ bundle exec rake db:init
一応、下記の手順でスキーマが入っているかを確認してみてください。
$ mysql -u root
mysql> use vnet;
mysql> show tables;
うまく行けば、vnetデータベース内に、networksなど複数のテーブルが確認できるはずです。

OpenVNetのサービスを起動してみよう

とりあえずここまでで基本的なインストールはおしまい。あとは各プログラムを起動してみましょう。

$ initctl start vnet-vnmgr
$ initctl start vnet-webapi
$ initctl start vnet-vna
うまく起動しているかどうか確認するには、statusを見ると良いでしょう。
$ initctl status vnet-vnmgr
vnet-vnmgr start/running, process 41789
その他のプログラムも同様に確認することができます。

さて、次回はこれらのノードの説明と、データパスの設定などがあり、それから応用としての使い方などの説明へとつなげて行きたいと思っています。