OpenStack(DevStack)をRallyでベンチマークする

スポンサード リンク

OpenStack環境のテスト・ベンチマークツールとしてRallyがある。 今回は,Rallyの使い方を学習するため,1つのコンテナ上で RallyとDevStackでデプロイしたOpenStackを共存させることを目指す。

なお,以下ではコマンドを実行するマシンを user@host の形式で明示する。

DockerコンテナとしてRallyをインストールする

DockerのホストマシンにDockerコンテナとしてRallyをインストールする。 ここで, --privileged=true がないと,iptablesの操作ができずに後のdevstackが エラー終了する。

user@host $ docker pull rallyforge/rally
user@host $ mkdir ~/rally_home
user@host $ sudo chgrp docker ~/rally_home
user@host $ docker run --privileged=true -v ~/rally_home:/home/rally -u root --name rally -itd rallyforge/rally /bin/bash

homeディレクトリをボリュームとしてマウントすると,所有者がrootになる。 rallyユーザに戻しておく。

user@host $ docker exec -it rally /bin/bash
root@container $ chown rally:rally /home/rally

rallyユーザのパスワード変更とsudoの有効化をする。

root@container $ passwd rally
root@container $ visudo

rallyユーザでログインしてDBの初期化をする。念のため。

root@container $ su rally
rally@container $ rally-manage db recreate

DevStackでOpenStackをデプロイ

次にDevStackでRallyのDockerコンテナにOpenStackをインストールする。 テスト用途なのでパフォーマンスは気にしない。

gitからcloneしてきたdevstackの設定ファイル local.conf[[local|localrc]] セクションに enable_plugin rally https://github.com/openstack/rally master を追加する。

rally@container $ git clone https://git.openstack.org/openstack-dev/devstack
rally@container $ cd devstack
rally@container $ cp samples/local.conf local.conf
rally@container $ sed -i 's,\[\[local|localrc\]\],\[\[local|localrc\]\]\nenable_plugin rally https://github.com/openstack/rally master,' local.conf

そのまま stack.sh を実行すると

./stack.sh: line 494: generate-subunit: command not found

とエラーがでる。先に必要なパッケージをインストールする。

rally@container $ sudo pip install -U os-testr

また,以下のようなエラーが生じる場合は,対応するバージョンの linux-imageapt-get でインストールする。 なお,同時にインストールされるgrubを/dev/sda等に設定する必要はない。

2016-06-20 14:41:15.172 | modprobe: ERROR: ../libkmod/libkmod.c:556 kmod_search_moddep() could not open moddep file '/lib/modules/3.13.0-88-generic/modules.dep.bin'
2016-06-20 14:41:15.172 | The kernel doesn't support the ebtables 'filter' table.
2016-06-20 14:41:15.203 | modprobe: ERROR: ../libkmod/libkmod.c:556 kmod_search_moddep() could not open moddep file '/lib/modules/3.13.0-88-generic/modules.dep.bin'
2016-06-20 14:41:15.203 | The kernel doesn't support the ebtables 'nat' table.
2016-06-20 14:41:15.232 | modprobe: ERROR: ../libkmod/libkmod.c:556 kmod_search_moddep() could not open moddep file '/lib/modules/3.13.0-88-generic/modules.dep.bin'
2016-06-20 14:41:15.232 | The kernel doesn't support the ebtables 'broute' table.
2016-06-20 14:41:16.224 | +./stack.sh:exit_trap:504                  exit 1
rally@container $ sudo apt-get install linux-image-`uname -r`

以下のようなエラーに遭遇した場合は, docker run --privileged=true としているかチェックすること。

2016-06-20 14:17:23.506 | iptables v1.4.21: can't initialize iptables table `filter': Permission denied (you must be root)
2016-06-20 14:17:23.506 | Perhaps iptables or your kernel needs to be upgraded.
2016-06-20 14:17:23.524 | iptables v1.4.21: can't initialize iptables table `nat': Permission denied (you must be root)
2016-06-20 14:17:23.524 | Perhaps iptables or your kernel needs to be upgraded.
2016-06-20 14:17:23.543 | iptables v1.4.21: can't initialize iptables table `mangle': Permission denied (you must be root)
2016-06-20 14:17:23.543 | Perhaps iptables or your kernel needs to be upgraded.
2

ここまでやれば,DevStackでOpenStackをデプロイできる...はずだがまだtox の実行エラーが発生するようだ。要調査。

rally@container $ ./stack.sh

DevStackによるOpenStackのデプロイには時間がかかる。 完了したら念のためコミットしてイメージ化しておこう。

user@host $ docker commit rally rally-devstack

Comments !

social