2016年7月6日:記事を更新しました
2014年10月15日の掲載時、
KVMやXenなどの仮想化技術を使って物理マシン上に複数の仮想マシンを作成し、
管理する物理マシンや仮想マシンが少ないうちは、
管理者の視点からは、
今回紹介するOpenNebulaもクラウドを構築・

OpenNebulaってどんなもの?
OpenNebula.
先に名前を挙げたOpenStack、
OpenNebulaの最初のパブリックリリースは2008年3月で、
使われ方としては、
開発はコミュニティベースで進められており、
特徴
OpenNebulaはシンプルでフレキシブルなクラウド管理ツールです。
ここではOpenNebulaの特徴をいくつかピックアップします。
実装
コアとなるOpenNebulaデーモン
各種リソースに対する処理は、
onedから物理マシン上の仮想マシンに対する操作はSSH経由で行います
OpenNebulaに公式では実装されていない機能をアドオンで追加することが可能です。コミュニティの手によるアドオンも公開されています
CLIとSunstone
OpenNebulaはコマンドラインインターフェース


CLI、
Sunstoneは独立したデーモンプロセスとして稼働します。onedとCLIおよびSunstone間の通信はXML-RPCを使用します。 これにより、
Sunstoneは用途によってadmin, vdcadmin, user, cloudの4つのビューを切り替えることができます。 管理者はフルコントロール可能なadminビューを使用し



CLIでのコマンド出力フォーマットやSunstoneのボタン配置などは、

権限管理
OSのユーザーアカウントとは別に、
OpenNebulaのユーザー管理機能はUNIXライクな設計になっています。ユーザーは1つ以上のグループに属し、
- 自分の作成した仮想マシンのディスクイメージを全ユーザーに公開したい
- あるIPアドレスレンジのネットワークを特定のグループに属するユーザーだけで使用したい
と言った制御が直観的に可能です。
オーナー、
$ onevnet chgrp "network1" "group1" $ onevnet chmod "network1" 660
onevnetがネットワークリソースの操作コマンドで、
クォータ
ユーザー単位、

アカウンティング
各仮想マシンの作成時刻/
管理者はすべてのユーザーのリソース使用量を


OpenNebulaのインストールと環境構築
今回は物理マシンを2台使ってOpenNeubla環境を構築してみます。 OpenNebulaデーモンの稼働するマシンを
OpenNebulaではフロントエンド/
バックエンドのデータベースはデフォルトのSQLiteを使用します
準備
Ubuntu 14.
% wget -q -O- http://downloads.opennebula.org/repo/Ubuntu/repo.key | sudo apt-key add - OK % sudo vi /etc/apt/sources.list.d/opennebula.list
opennebula.
deb http://downloads.opennebula.org/repo/4.8/Ubuntu/14.04/ stable opennebula
apt-get updateを実行し、
% sudo apt-get update
apt-cache policy opennebulaを実行し、
% apt-cache policy opennebula opennebula: インストールされているバージョン: (なし) 候補: 4.8.0-1 バージョンテーブル: 4.8.0-1 0 500 http://downloads.opennebula.org/repo/4.8/Ubuntu/14.04/ stable/opennebula amd64 Packages 3.4.1-4.1ubuntu1 0 500 http://jp.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
フロントエンドセットアップ
今回はフロントエンドにOpenNebulaデーモン
- OpenNebulaインストール
- OpenNebula Sunstoneインストール
- Rubyライブラリインストール
- SSH鍵設定とNFSサーバ設定
と言う作業にになります。
OpenNebulaインストール
opennebulaパッケージをインストールします。
% sudo apt-get install opennebula
依存関係でそれなりの数のパッケージがインストールされます。インストールが終わるとonedが起動した状態となります。 インストールの際にoneadminというUNIXアカウントが作成されます。ホームディレクトリは/var/
oneadminユーザーにスイッチし、
% sudo -i -u oneadmin $ onevm list ID USER GROUP NAME STAT UCPU UMEM HOST TIME $ exit
OpenNebula Sunstoneインストール
WebインターフェースのSunstoneをインストールします。
% sudo apt-get install opennebula-sunstone
インストールが終わるとSunstoneが起動した状態となります。 Sunstoneはデフォルトではループバックインターフェース127.
% ifconfig eth0 eth0 Link encap:イーサネット ハードウェアアドレス 52:54:00:d9:ec:36 inetアドレス:192.168.1.50 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 (省略) % sudo vi /etc/one/sunstone-server.conf
変更内容は以下になります。
:host: 192.168.1.50
変更後にSunstoneを再起動して設定を反映させます。
% sudo service opennebula-sunstone restart
リモートのマシンから

oneadminユーザーでログインしてみましょう。パスワードはoneadminユーザーのホームディレクトリの.one/
% sudo -i -u oneadmin $ cat ~/.one/one_auth oneadmin:Ojhymlypish7
“:”

この時点ではまだホストのセットアップやリソース設定が終わっていないので、
Rubyライブラリインストール
OpenNebulaのいくつかのコンポーネントは複数のRubyライブラリを使用します。OpenNebulaはこれらのライブラリや依存パッケージをインストールするinstall_ 依存するパッケージがインストールされた後、 OpenNebulaはフロントエンドとホスト間の操作などをSSH経由で行います。そのためフロントエンドとホスト間でoneadminユーザーがノーパスフレーズでログインできる必要があります。 oneadminユーザーが作成された際に、 などの方法を取ります。 今回はフロントエンドのoneadminのホームディレクトリをNFSで共有することにします。 まず、 ~/.ssh/ NFSサーバをインストールし、 /etc/ OpenNebulaが管理する仮想マシンのディスクイメージは、 以下は/var/ 「ホスト」 opennebula-nodeパッケージをインストールすると依存パッケージもまとめてインストールされます。 OpenNebula. oneadminユーザーが自動的に作成されます。 また、 共有ストレージの種類や仮想マシンに提供するネットワークの種類など、 今回はフロントエンドのoneadminホームディレクトリをNFSで共有する方法を取ります。 nfs-commonパッケージをインストールし、 /etc/ フロントエンドの/var/ 仮想マシンにネットワークを提供するため、 まずはbridge-utilsをインストールします。 次に/etc/ 今回はinterfacesに直接ブリッジ設定を書かず、 /etc/ 今回はstaticにアドレスを振ることにします。下記は筆者の環境の例です。アドレスは適宜変更してください。 編集後、 フロントエンドとホストの準備が整いましたが、 後編では、% sudo /usr/
% sudo service opennebula restart
% sudo service opennebula-sunstone restart
SSH鍵設定とNFSサーバ設定
% sudo -i -u oneadmin
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ vi ~/.ssh/config
$ chmod 600 .ssh/config
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
% sudo apt-get install nfs-kernel-server
% sudo vi /etc/exports
% sudo exportfs -av
/var/lib/one/ *(rw,sync,no_subtree_check,root_squash)
% sudo service opennebula-sunstone stop
% sudo service opennebula stop
% sudo mv /var/lib/one /work
% sudo ln -s /work/one /var/lib/one
% sudo service nfs-kernel-server restart
% sudo service opennebula start
% sudo service opennebula-sunstone start
ホストセットアップ
依存パッケージのインストール
% cat /etc/apt/sources.list.d/opennebula.list
deb http://downloads.opennebula.org/repo/4.8/Ubuntu/14.04/ stable opennebula
% apt-cache policy opennebula-node
opennebula-node:
インストールされているバージョン: (なし)
候補: 4.8.0-1
バージョンテーブル:
4.8.0-1 0
500 http://downloads.opennebula.org/repo/4.8/Ubuntu/14.04/ stable/opennebula amd64 Packages
3.4.1-4.1ubuntu1 0
500 http://jp.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
% sudo apt-get install opennebula-node
NFSクライアント設定
% sudo apt-get install nfs-common
% sudo vi /etc/fstab
% sudo mount -a
192.168.1.50:/var/lib/one/ /var/lib/one/ nfs hard,intr,rsize=32768,wsize=32768,async 0 0
ブリッジインターフェース設定
% sudo apt-get install bridge-utils
% sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback
# The primary network interface
#auto eth0
#iface eth0 inet dhcp
source interfaces.d/bridge.cfg
% sudo vi /etc/network/interfaces.d/bridge.cfg
auto eth0
iface eth0 inet static
address 0.0.0.0
auto br0
iface br0 inet static
address 192.168.1.33
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
後編では