Karesansuiを試す
この記事はカーネルVM Advent Calendarの12/21日分の記事です。前日分はid:rti7743さんのなのは完売 とある関数の電脳戦 (じょうほうせん とある関数のバトルプログラム) - お前の血は何色だ!! 4です。
Karesansuiって?
ものすごく大雑把に言うとEC2のオープンソース実装です。
遊ぶ環境を作るのにAmazon EC2は便利ですけれど、自分の手元にもああやって気楽にVMをポンポン立てれる環境が欲しいですよね。
同様の目的の為にOpenStackとかEucalyptusもあるようですけれど、アイコンの好みからKaresansuiを試してみる事にします。
Dear users of Karesansui | Karesansui Project
具体的な特徴としては
などが挙げられると思います*1
インストールする
まず環境は
OS | CentOS5.7 2.6.18-274.12.1.el5xen |
CPU | Core i5 660 |
Memory | 8GB |
仮想化 | Xen |
参考にしたページ http://netmark.jp/2009/07/centos53karesansui.html
前もって必要な設定
まずXenが動く環境にしないといけないです。
# yum groupinstall Virtualization yum install iscsi-initiator-utils cyrus-sasl-md5 qemu gnutls-utils PyXML mysql-server MySQL-python perl-HTML-Parser perl-URI
# echo "alias scsi_hostadapter xenblk" >>/etc/modprobe.conf
# grep -lr "DEFAULTKERNEL=kernel" /etc/sysconfig/kernel | xargs sed -i 's/DEFAULTKERNEL=kernel/DEFAULTKERNEL=kernel-xen/g'
# grep -lr "default=." /boot/grub/menu.lst | xargs sed -i 's/default=./default=0/g'
# reboot
ここまで打って
的な感じになれば大丈夫です。xenですね。
Karesansuiのインストール
公式サイトから落としてきたtar.gzファイルを展開して./
# tar xvf karesansui-2.0.1-install-pack.tar.gz
# Karesansui/karesansui-install
と打つだけです。簡単ですね。と思いきや問題にブチ当たります。
エラー: このディストリビューションはサポートしていません。
CentOSに対応してるって言ってたじゃないかバーニィと言いたくなるのをぐっと堪えてインストーラを騙します。
$ emacs Karesansui/installer/const.py
SUPPORTED_DISTROS = [
("centos", "^5-[12345].*$"),
("redhat", "^5Server-5.[12345].*$"),
#("redhat", "^(5Server-5.[12345]|6-6\.).*$"),
]
↑のを↓のように書き換える
SUPPORTED_DISTROS = [
("centos", "^5-[1234567].*$"),
("redhat", "^5Server-5.[12345].*$"),
#("redhat", "^(5Server-5.[12345]|6-6\.).*$"),
]
手元のCentOSは5.7だったので対応外と怒られたんですね。
CentOS5.5で動いた物がわざわざ動かなくなることも無いだろうとそのまま書き変えました。
気をとりなおしてインストール再開します。
# Karesansui/karesansui-install
対話的インストールな感じで必要なフォームを埋めればすいすい進みます。
具体的にはhttp://karesansui-project.info/wiki/karesansui/Ja_tutorialに書いてある物とほとんど一緒です。
使ってみる
インストールが完了したら
# ./karesansui-checkenv
を打つ事で環境が正しく動いてるか確認できます。正しく動いていればその一番下で
http://(サーバ名)/karesansui/v2/
にアクセスしろと言われます。
アクセスすると認証ダイアログが出ます。
ユーザ名の欄にはインストール時に入力したメールアドレス、パスワードもインストール時に入力したものを入れれば入れます。
無事入れました。jQueryなどを駆使した近代的なインタフェースです。
ここに表示されているカエルアイコンはこのKaresansuiのインストールされた物理マシン(ホスト)を表しています。
ホストの追加もホスト名とユニークキーを教えてやることで簡単にできるようですが自由に使えるマシンが複数あるわけではないので今回は一台のみです。
EC2には(多分)無い特徴として、アイコンを自由に変えられます。
夢が広がりますね。、
ホストマシンのアイコンを2度クリックするとゲストOSの管理画面に入ります。
可愛いアイコンが見えなくなってちょっと残念ですね。
【+作成】ボタンからゲストOSをインストールできるようです。早速試してみましょう。
モーダルなダイアログが出てきました。リッチなUIです。
ブートイメージというのを指定する所に来てふと手が止まりました。
どうやらisoファイルを適当に指定して…というわけには行かないようです。
調べたところ、この2つはvmlinuzファイルとのinitrdファイルのフルパスかftpのURIかで指定できるようです。
サーバ内部の物のフルパスを指定するのって何だか気持ち悪いのでftpでやります。で、手頃なftpサーバに出来るのがそのマシンそのものなのでそこをホストにします。
# yum install vsftpd
# /etc/init.d/vsftpd start
anonymous FTPで接続できる必要があるっぽいので適当に設定して接続します。
# ftp localhost
Connected to localhost.localdomain.
220 Welcome.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:hogehoge): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
こんな感じに動けば大丈夫そうです。
で、ゲストOSとしてgentooに挑戦しようとしたのですが、vmlinuzとinitrdがどこにあるか分からなかったのでCentOSを入れてみます。
isoファイルをftpで見えるところにマウントしてやるだけですね。
# cd /var/ftp/
# wget http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.2/isos/i386/CentOS-6.2-i386-LiveCD.iso
# mount -t iso9660 CentOS-6.2-i386-LiveCD.iso -o loop pub
こんな感じで ftp://(サーバ名)/pub/isolinux/vmlinuz0 と ftp://(サーバ名)/pub/isolinux/initrd0.img がそれぞれアクセスできるようになります。
ブラウザに直接そのURLつっこめば導通チェックできます。
するとしばらくしてゲストOSが立ち上がってきます。
アイコン可愛いですね。これはKaresansui組み込みのアイコンの一部ですが、Twitterアイコンと組み合わせたりするサービスが現れないかなーとか夢が広がります。
立ち上げに失敗した場合は[ジョブ]タブの中でエラーの詳細を見ることができます。楽ですね。
これはFTPのURLを打ち損じてコケてる画面です。生のコマンドが表示されるので、何かでコケたらターミナル開いたりして再現できますね。
さて、無事にゲストOSの作成に成功したらこんな感じになるはずです。
立ち上げるにはアイコンを2度クリックして開始ボタンを押せば良いです。
と思ったら立ち上げに失敗したようです。
どうやらXenまわりのエラーのようですね…
/opt/hde/lib/python/sqlalchemy/orm/scoping.py:127: SADeprecationWarning: Use session.add()
return getattr(self.registry(), name)(*args, **kwargs)
libvir: error : Unknown failure
libvir: Xen Daemon error : POST operation failed: xend_post: error from xen daemon: (xend.err "Error creating domain: Boot loader didn't return any data!")
Failed to start guest. - dom=cen
POST operation failed: xend_post: error from xen daemon: (xend.err "Error creating domain: Boot loader didn't return any data!")
軽くググったところ、設定を間違ったようなのですがここでうっかりスナップショットのタブを押したらKaresansuiさんが機嫌を損ねたようで謎のエラーがポップアップされるようになってホストOSが表示できなくなりました…。
まだ僕には早すぎたのかも知れません。
表示できないホストマシンアイコンの図。
もう少し追跡したいのですが終電の時間が迫っているので今日はここまでで勘弁してください。
*1:詳しいこと知らないだけだろとも言う