クラウド構築・

Ubuntu Weekly Recipeでは過去に第345回、
今回のRecipeでは、
OpenNebula 5.0の(ごく簡単な)紹介
OpenNebula 5.
- MarketPlaceの改良
仮想マシンイメージの外部Webサイトからのインポート機能を担ってきたMarketPlaceが改良され、
データストア的な扱いとなりました。従来の参照先のOpenNebula AppMarketサイトは 「OpenNebula Public」 としてデフォルトで登録されており、 加えてAmazon S3やローカルに構築したHTTPサーバーを参照先に登録することも可能になっています。OpenNebulaのWebインタフェースSunstone上では、 4系列でのMarketPlaceの機能は 「Storage」 の項目下に移動し、 参照先のサイトを設定する 「MarketPlace」 と、 イメージのインポート等を行う 「Apps」 に分かれています (図2)。

- 仮想ルータのネイティブサポート
仮想マシンによるルータアプライアンスを用いてバーチャルネットワーク間のルーティングを提供する機能が実装されました。
- Sunstoneのラベルによるリソースグルーピング
Sunstone上の各種リソースにラベルを付け、
グルーピングして表示できるようになりました。例えば稼働中の仮想マシンを、 OSの種類や用途ごとにラベリングして抽出する、 ということが可能になっています (図3、 図4)。


- 仮想マシンライフサイクルのステート名の変更
仮想マシンライフサイクルのステート名が一部変更されています。これに伴い、
CLIにて仮想マシンインスタンスを削除する際のコマンド名が、 onevm shutdownからonevm terminateに変更になりました (図5)。4系列までのonevm shutdownというコマンド名は混乱を生じやすく、 仮想マシンを一時的に停止するonevm poweroffコマンドと誤ってonevm shutdownを実行し、 まだ使うつもりだった仮想マシンインスタンスが削除されてしまうという悲しい事故をよく目にしました。5. 0でより実態に即した名称に変わったようです。

- ネットワークドライバの定義箇所の変更
ネットワークドライバの定義箇所が変更されています。4系列まではホストごとに使用するネットワークドライバを定義していました。5.
0からは定義箇所がバーチャルネットワークごとに変更され、 より柔軟なネットワーク構成が取れるようになっています。
その他、
新機能や変更内容の全体像はリリースノートを参照してください。リリースノートを含むドキュメントページの構成も、
OpenNebula 5.0へのアップグレード
それでは、
OpenNebulaの基本的な構成は、
OpenNebulaのアップグレード作業は、
- フロントエンド上のOpenNebulaサーバープロセス停止
- 設定ファイル類のバックアップ
- フロントエンド上でOpenNebulaパッケージをアップグレード、
設定ファイルの修正 - データベースのスキーマとコンテンツを新バージョン用にマイグレート
- サーバープロセス起動
- フロントエンドからホストに新バージョンのドライバスクリプトを配布
上記の作業は、
また、
OpenNebulaに登録したイメージ、
今回アップグレードに取り組む環境は以下の内容で構築しています。
- OpenNebulaは4.
14、 5. 0のいずれも、 OpenNebula. orgのリポジトリのパッケージを使用します。 - OSはUbuntu 14.
04 LTS serverを使用します [4]。 - データベースはSQLiteを使用します。
- OpenNebulaのFederationやHigh Availabilityといった高度な構成は組んでいません。
アップグレード手順はOpenNebula.
準備
まずはリリースノートを読みます。特に、
目を通したら実環境のアップグレード準備にとりかかります。
1. 仮想マシンインスタンスの状態確認
前述のとおり、
2. リソース情報の取得
OpenNebula 4系までは、
$ onevnet list -x > networks.txt $ onehost list -x > hosts.txt $ onevm list -x > vms.txt
OpenNebulaサービス停止
OpenNebula関連サービスを全て停止します。
$ sudo service opennebula stop oned and scheduler stopped $ sudo service opennebula-sunstone stop sunstone-server stopped $ sudo service opennebula-gate stop onegate-server stopped $ sudo service opennebula-flow stop oneflow-server stopped
設定ファイルディレクトリのバックアップ
/etc/
$ sudo cp -pr /etc/one /etc/one.$(date +'%Y-%m-%d')
OpenNebulaパッケージアップグレード
sources.
$ sudo vi /etc/apt/sources.list.d/opennebula.list
以下に変更します。OSのバージョンなどは適宜変更してください
deb http://downloads.opennebula.org/repo/5.0/Ubuntu/14.04 stable opennebula
パッケージインデックスファイルを更新し、
$ sudo apt-get update $ apt-cache policy opennebula opennebula: インストールされているバージョン: 4.14.2-2 候補: 5.0.1-1 バージョンテーブル: 5.0.1-1 0 500 http://downloads.opennebula.org/repo/5.0/Ubuntu/14.04/ stable/opennebula amd64 Packages *** 4.14.2-2 0 100 /var/lib/dpkg/status 3.4.1-4.1ubuntu1 0 500 http://jp.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
OpenNebula 5.
$ sudo apt-get install opennebula
上記で依存関係にあるパッケージもあわせてアップデートされます。
/etc/
設定ファイル '/etc/one/sunstone-server.conf' ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。 ==> パッケージ配布元が更新版を提供しています。 どうしますか? 以下の選択肢があります: Y か I : パッケージメンテナのバージョンをインストールする N か O : 現在インストールされている自分のバージョンを残す D : 両バージョンの差異を表示する Z : 状況を調査するためにシェルを開始する デフォルトでは現在使っている自分のバージョンを残します。 *** sunstone-server.conf (Y/I/N/O/D/Z) [デフォルト=N] ? Y
新バージョンの設定ファイルに置き換えた後、
OpenNebulaが要求するRuby gemもバージョン間で異なるため、
$ sudo /usr/share/one/install_gems
データベースアップグレード
OpenNebulaはデータベースにSQLiteまたはMySQLを使用します。データベースのスキーマやコンテンツはバージョン間で互換性がありません。OpenNebulaのアップグレードに伴い、
$ sudo -i -u oneadmin (oneadminアカウントになる) $ onedb upgrade -v --sqlite /var/lib/one/one.db
前述のとおり、
>>> Running migrators for local tables > Running migrator /usr/lib/one/ruby/onedb/local/4.13.85_to_4.90.0.rb Manual Intervention required. Please input the VN_MAD for the following networks: * Net #1 (pool2) VN_MAD: dummy
上記はpool2という名前のバーチャルネットワークが使用するネットワークドライバ
- 802.
1Q - dummy
- ebtables
- fw
- ovswitch
- vxlan
マイグレート完了後は、
$ onedb fsck -v --sqlite /var/lib/one/one.db
OpenNebulaサーバープロセス起動
これ以降の作業は、
$ sudo service opennebula start
とりあえず稼働中の仮想マシン情報が取得できるか確認してみます。
$ onevm list ID USER GROUP NAME STAT UCPU UMEM HOST TIME 5 oneadmin oneadmin Ubuntu 16.04 - runn 0.0 768M host001 0d 00h17
問題ないようですね。
ホスト用ドライバスクリプトのアップデート
フロントエンドから各ホストに新しいドライバスクリプトを配布します。これにはonehost syncコマンドを使用します。
$ sudo -i -u oneadmin (oneadminアカウントになる) $ onehost sync * Adding host001 to upgrade [========================================] 1/1 host001 All hosts updated successfully.
これでOpenNebula 4.
まとめ
OpenNebula 4.
クラウドに限らず、