仮想化初心者がGrizzlyをdevstackで試してみる 1
新しい環境を整備するたびに、クリーンインストールをするのがめんどくさくなってきたので、仮想化環境に挑戦。
ちょっと調べると、openstackというものが非常に流行りだしているとか。
なので、初心者ですが、いろいろ自動化されて簡単そうだし、試して見ることに。
参考ページ
http://openstack.jp/
http://www.openstack.org/software/grizzly
http://devstack.org/guides/single-machine.html
1.環境整備
ホストOSはubuntu server12.10。
ディスクフォーマットはLVMで特にパーティションは分けず。
ダウンロードするパッケージはOpenSSHだけ。
他に必要なものは全部devstack経由でインストールできるらしい。
2.devstackによる、一括インストール
http://devstack.org/guides/single-machine.htmlを参考に行う。
最初にユーザの追加と、sudoの設定を行なっているけど、
sudoの設定は、今は/etc/sudoers.d/XXXに書くのが推奨されているので以下のようになる。
$ sudo adduser stack
$ echo "stack ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/stack
もし、sudoersを直接書き換えて、失敗してsudoができなくなったら以下を参照
http://psychocats.net/ubuntu/fixsudo
次にgitを使ってdevstackをダウンロード。
$ cd
$ sudo apt-get install git
$ git clone git://github.com/openstack-dev/devstack.git
$ cd devstack
続いてlocalrcの作成、なんですが、その前にどんなネットワーク構成にするかを考える。
今回は試用なので、複数のサーバで構成するわけではなく、ひとつのサーバで複数の仮想マシンを動かすことを目的とする。
localrcの作成には
http://devstack.org/guides/single-machine.html
を参考にする。
ファイルのベースとしてsample/localrcをコピー。
「FLOATING_RANGE」とは外部に接続するために使うIPアドレスのことらしい。
今、実ネットワークは以下のように接続している。
192.168.1.0/24
Router----------------[eth0]Server
.254
この時、Server上に作られる仮想マシンにも192.168.1.0/24のアドレスを付与すれば、外部からアクセスが可能となる。
このうち今192.168.1.0/24で実際に使われていない空間をFLOATING_RANGEに割り当て、openstackの管理インターフェースから仮想マシンにIPを割り当てることになる。
今回は240-247が未使用だったので、localrcに
FLOATING_RANGE=192.168.1.240/29
とした。
次に、FIXED_RANGEだが、仮想マシン間ネットワークで用いられるIP。
フローティングIPは明示的に割り当てが必要だが、FIXED_IPはインスタンス作成時に自動的に割り当てられる。
FLAT_INTERFACEは上記の例ではeth0。
FIXED_RANGE=10.0.0.0/24
FIXED_NETWORK_SIZE=256
FLAT_INTERFACE=eth0
また、上記ページの例だけでは、Quantumが使用されないので、以下を追加。
disable_service n-net
disable_service n-obj
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
n-objはSwiftの使用に関する設定のようだが、中身の確認は後回し。。。
そんでもって、
$ ./stack.sh
とすると、ダウンロードが始まる。
初回は時間かかります(数十分)。
つづく
自分でビルドしたRuby1.9.3のアンインストール
Apache 2.4.2 on Ubuntu 11.10
ちょっと実験でapacheが必要になったので,ubuntuに導入.
ubuntuは11.10でちょい古め.
apache2.4.2をダウンロード,展開して./configureすると,APRが無いよ、と言われて終わる.
$ cd /usr/local/src/httpd-2.4.2/
$ ./configure
- 途中省略----
checking for APR... no
configure: error: APR not found. Please read the documentation.
どうやらAPRが昔は同梱だったのがなくなったそうです。
http://apr.apache.org
から、aprとapr-utilをダウンロード、展開して、httpd-2.4.2/srclib/に移動.
$ mv /tmp/apr-1.4.6 /usr/local/src/httpd-2.4.2/srclib/apr
$ mv /tmp/apr-util-1.4.1 /usr/local/src/httpd-2.4.2/srclib/apr-util
再度./configureをすると,次はlibpcreが無いと怒られる.
つぎは,aptでpcre-devをインストール
# apt-get install libpcre3-dev
これで無事に./configureもmakeも通った.
netemとtc-tbfを同時に使う場合の注意点
Linuxをネットワークエミュレータとして使うには、netemというものが良さげ。
参考は
http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=netem
に。
ただし、netemによる遅延やロスに加えて、tbfを使って帯域制限を加える場合、先にtbfを適用させること!
netemは親になる(add parentの対象になる)ことができないらしいので。
# tc qdisc add dev eth0 root handle 1:0 tbf ...
# tc qdisc add dev eth0 parent 1:0 handle 10: netem ...
思ったより残念な感じ
ns3を掘ってみたのだが、TCPに関してはウインドウスケーリングが無かったり、SACKが無かったりと、ちょっと物足りない。
自分で改造すりゃいいんだけどさ。
ns2だとOKなのかな?
CentOSでTremaをインストール
ドキュメントではubuntuしか検証されていないが、CentOSでも動くはず…
参考は
https://github.com/trema/trema/blob/master/README.md
http://gihyo.jp/dev/serial/01/openflow_sd/0007
まずは必要なパッケージ。
git, gcc, make, ruby, ruby-devel, ruby-irb, libpcap-devel, sqlite-devel
次にソースの入手
% git clone git://github.com/trema/trema.git
ビルド
% ./trema/build.rb
上記参考ページのHelloWorldが動くことを確認。
apatch2.2.22をインストールしてwebdavもセットアップ
apache2.2.22をダウンロード。
#./configure --enable-dav=shared --enable-dav-fs=shared
#make
#make install
ここまでで、きっと/usr/local/apahe2/module/にmod-dav.soとmod-dav-fs.soができているはず。
/usr/loca/apache2/conf/httpd.confに
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
を加え、
Include conf/extra/httpd-dav.conf
の行頭の#を削除。
適宜httpd-dav.confを修正。
また、アップロードした先の保存フォルダやロックフォルダを適宜作成。
#/usr/local/apache2/bin/apachectl restart
でOKなはず。