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_
% sudo /usr/share/ one/ install_ gems
依存するパッケージがインストールされた後、
% sudo service opennebula restart % sudo service opennebula-sunstone restart
SSH鍵設定とNFSサーバ設定
OpenNebulaはフロントエンドとホスト間の操作などをSSH経由で行います。そのためフロントエンドとホスト間でoneadminユーザーがノーパスフレーズでログインできる必要があります。 oneadminユーザーが作成された際に、
- oneadminのホームディレクトリを全ホストでNFSマウントする
- oneadminの~/.sshをtarなどでアーカイブして全てのホストにコピーする
などの方法を取ります。 今回はフロントエンドのoneadminのホームディレクトリをNFSで共有することにします。
まず、
% sudo -i -u oneadmin $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ vi ~/.ssh/config $ chmod 600 .ssh/config
~/.ssh/
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
NFSサーバをインストールし、
% sudo apt-get install nfs-kernel-server % sudo vi /etc/exports % sudo exportfs -av
/etc/
/var/lib/one/ *(rw,sync,no_subtree_check,root_squash)
OpenNebulaが管理する仮想マシンのディスクイメージは、
以下は/var/
% 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
ホストセットアップ
「ホスト」
- qemu-kvm/
libvirtなどの依存パッケージのインストール - NFSクライアント設定
- 仮想マシンにネットワークを提供するための設定
依存パッケージのインストール
opennebula-nodeパッケージをインストールすると依存パッケージもまとめてインストールされます。 OpenNebula.
% 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
oneadminユーザーが自動的に作成されます。 また、
共有ストレージの種類や仮想マシンに提供するネットワークの種類など、
NFSクライアント設定
今回はフロントエンドのoneadminホームディレクトリをNFSで共有する方法を取ります。 nfs-commonパッケージをインストールし、
% sudo apt-get install nfs-common % sudo vi /etc/fstab % sudo mount -a
/etc/
192.168.1.50:/var/lib/one/ /var/lib/one/ nfs hard,intr,rsize=32768,wsize=32768,async 0 0
フロントエンドの/var/
ブリッジインターフェース設定
仮想マシンにネットワークを提供するため、
まずはbridge-utilsをインストールします。
% sudo apt-get install bridge-utils
次に/etc/
% sudo vi /etc/network/interfaces
今回はinterfacesに直接ブリッジ設定を書かず、
auto lo
iface lo inet loopback
# The primary network interface
#auto eth0
#iface eth0 inet dhcp
source interfaces.d/bridge.cfg
/etc/
% sudo vi /etc/network/interfaces.d/bridge.cfg
今回はstaticにアドレスを振ることにします。下記は筆者の環境の例です。アドレスは適宜変更してください。
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
編集後、
後編では
フロントエンドとホストの準備が整いましたが、
後編では、