UbuntuとOpenNebulaで 
クラウド環境を構築してみよう 
(発動篇) 
2014/12/13
自己紹介 
• 名前:大田 晃彦(Akihiko Ota) 
• 所属:株式会社 創夢 
• 初めてちゃんとさわったUbuntu:8.04
Ubuntuでクラウドと言えば 
• OpenStackが有名ですよね。 
• でもOpenNebulaって選択肢もあるんですよ。
UbuntuでOpenNebula 
• gihyo.jpのUbuntu Weekly Recipe 第345回と第346回を書かせてもらいました 
• UbuntuとOpenNebulaでクラウド環境を構築してみよう 
• (前編)http://gihyo.jp/admin/serial/01/ubuntu-recipe/0345 
• (後編)http://gihyo.jp/admin/serial/01/ubuntu-recipe/0346 
• 2014/12/13時点の最新版はOpenNebula 4.10.1 
• リポジトリのバージョンを適宜読み替えてください。 
• (前編)はインストール、(後編)は環境構築 
• (発動篇)は紹介メインで
OpenNebulaってどんなもの? 
• OpenNebula.org で開発しているクラウド構築管理ツール 
• 多数の物理マシン/マルチユーザー環境での仮想マシン管理 
• データセンターや、企業・研究機関の計算機センターでの 
利用が多い模様 
• あまりAWSに似せて作っていない 
• 仮想マシンの管理に必要な機能 
• 利用者と管理者にとっての「あると便利な機能」
OpenNebulaってどんなもの? 
• 最初のパブリックリリースは2008年3月 
• わりと古株 
• http://opennebula.org/opennebula-is-7-years-old/ 
• Open ベンダーによるロックインがなく 
• Simple 少人数でも運用でき 
• Flexible 既存のインフラにフィットし 
• Scalable 簡単に規模を変更できる
構成 
http://docs.opennebula.org/4.10/_images/overview_builders.png 
• Hybrid は IBM SoftLayer と Microsoft Azure にも対応
構成 
http://docs.opennebula.org/4.10/_images/overview_integrators.png
実装 
• コアとなるOpenNebulaデーモン oned はC++で記述 
• CLI、Web UIはRubyで記述 
• ハイパーバイザ、ストレージ、ネットワーク等の差異をドライバスクリ 
プト(bash、Ruby)で吸収 
• 仮想マシンの操作も物理マシン上のドライバスクリプトをSSHで実行 
• SSHの認証方式は公開鍵認証 
• 仮想マシン操作用の常駐プロセスを持たない 
• モニタリング用のプロセスは常駐
コマンドライン・インタフェース(CLI) 
• フルコントロール可能 
• 直観的なコマンド構文 
• 見やすい出力メッセージ 
• メッセージフォーマットは変更可能 
• レンジ指定で複数のターゲットをまとめて操作可能 
• CLIとonedはXML-RPCで通信 
• oned稼働マシンとユーザーログインマシンを分離可能
Web UI(Sunstone) 
• フルコントロール可能 
• ユーザーの位置づけ(ロール)によって複数のビューを選択可能 
• admin、vcenter、vdcadmin、user、cloud 
• ビューの項目やボタンの表示、非表示が設定可能 
• Sunstoneとonedは別プロセスとして稼働 
• XML-RPCで通信 
• onedと異なるマシン上で稼働可能
ユーザーとグループ 
• UNIXのユーザー/グループに類似のモデル 
• スーパーユーザーとして oneadmin が存在する 
• ユーザーは複数のグループに所属することも可能 
• 特定ユーザーにグループリーダーとして限定的な管理者権限を与え 
ることも可能 
• 認証方法はパスワード認証、SSH公開鍵認証、x509認証、LDAP 
認証から選択可能 
• ユーザー単位、グループ単位で各種リソースにクォータを設定可能
アカウンティング 
• 集計できる情報 
• 仮想マシンの作成日時、破棄日時、CPU数、メモリサイ 
ズ、ネットワーク送受信量など 
• CLI、Web UIから任意のタイミングで集計できる 
• 管理者は全ユーザーの情報を取得可能 
• グループリーダーは所属グループのユーザーの情報を取得可能 
• 一般ユーザーは自分の情報のみ取得可能
リソース 
Datastore 
• ディスクイメージを格納するストレージごとに定義 
• 用途、種類、転送方法などに応じて複数定義できる 
Image 
• VMの起動元のディスクイメージ 
• データ格納用のディスクイメージ 
• ISOイメージ 
• 等々 
Virtual Network 
• IPアドレスレンジやネットワーク分割方法を定義 
• ネットワーク分割方法は802.1Q、Open vSwitch、ebtables、等
リソース 
Template 
• ある仮想マシンが使用するリソースをまとめたもの 
• Image、Virtual Network、CPU数、メモリサイズ等 
• スペックやOSなど、用途に応じて組み合わせて定義する 
Virtual Machine 
• 仮想マシン 
Image = 
Network = 
CPU = 
MEMORY = 
Image = 
Network = 
CPU = 
MEMORY = 
: 
:
リソース(インフラ寄り) 
Host 
• 仮想マシンが立ち上がるホストマシン(物理マシン) 
Cluster 
• Hostをカテゴライズしたもの 
• 必要に応じてDatastoreやVirtual Networkも関連付け可能 
• 特定のグループに割り当てて占有させることも可能
リソースの組み合わせで環境構築 
Image = 
Network = 
CPU = 
MEMORY = 
Image = 
Network = 
CPU = 
MEMORY = 
: 
: 
Frontend 
Host 
VM Cluster 
Image 
Datastore Network Template
リソースのパーミッション 
• UNIXのパーミッションに類似のモデル 
• リソースの所有権(ユーザー、グループ) 
• パーミッション 
• OWNER / GROUP / OTHER に対し、 
• USE(4) : 変更を伴わない操作の許可・不許可 
• MANAGE(2) : 変更を伴う操作の許可・不許可 
• ADMIN(1) : 管理用途の特殊な操作の許可・不許可 
• (Cluster, Host は除く)
パーミッション変更 
• スーパーユーザー oneadmin は全リソースのパーミッションを変更可能 
• グループリーダーは所属するグループのリソースのパーミッションを変更可能 
• イメージ myimage を、 
• 自分は USE(4)+MANAGE(2) を許可 
• GROUP は USE(4) を許可 
• OTHER は許可しない 
$ oneimage chmod myimage 640
オーナー・グループ変更 
• スーパーユーザー oneadmin は全リソースのオーナー・グループを変更可能 
• グループリーダーは所属するグループのリソースのオーナーを変更可能 
• ネットワーク private1 のグループを yama に変更 
$ onevnet chgrp private1 yama 
• テンプレート ubuntu_tmpl をオーナー kokona に変更 
$ onetemplate chown ubuntu_tmpl kokona
Datastore
Datastore Type 
• ディスクイメージを格納するストレージ 
• Image Datastore 
• 原本となるディスクイメージを格納 
• System Datastore 
• 仮想マシンの起動元ディスクイメージを格納 
• Files Datastore(省略)
Datastore drivers (DS_MAD) 
• Image Datastoreは使用するストレージに応じて下記のドライバを選択 
• File-system:スタンダードなファイル形式のディスクイメージを格納 
• vmfs:vmfs形式のディスクイメージを格納(VMwareのみ) 
• LVM:LVMのボリュームをディスクイメージとして使用する場合 
• Ceph:Ceph(RBD)をディスクイメージの格納先に使用する場合 
• Dev:既存のブロックデバイスを直接仮想マシンにアタッチする場合 
• System Datastoreには不要
Transfer Manager drivers (TM_MAD) 
• Datastore間のファイル移動方法(ドライバスクリプト) 
を選択 
• Image Datastore、System Datastoreいずれにも必要 
なパラメータ
Transfer Manager drivers (TM_MAD) 
• 種類 
• shared:共有ストレージによるファイル移動 
• ssh:SSH(scp)によるファイル移動 
• qcow2:共有ストレージによるファイル移動(qcow2に特化) 
• vmfs:vmkfstoolsによるファイルコピー(VMware用) 
• ceph:Image DatastoreにCephを使用する場合(RBDを使用) 
• lvm:Image DatastoreにLVMを使用する場合(recommend) 
• fs_lvm:Image DatastoreにLVMを使用する場合(classical) 
• dev:Image DatastoreにDevを使用する場合
Type / DS_MAD / TM_MAD 
TM_MAD shared ssh qcow2 vmfs ceph lvm fs_lvm dev 
Type DS_MAD 
System - OK OK OK 
Image File-System OK OK OK OK 
vmfs OK 
Ceph OK 
LVM OK 
Dev OK 
• Image DatastoreのDS_MAD/TM_MADとSystem DatastoreのTM_MADの組み合わせに 
注意
Image DS~System DS間のファイル移動 
shared ssh 
Image DS 
System DS 
Image DS 
System DS 
cp 
ln -s 
snapshot 
etc... 
scp
マイグレーション 
shared ssh 
転送 
save 
restore 
System DS 
System DS 
System DS 
migrate save -> 転送 -> restore
Image
persistent / non-persistent 
• ディスクイメージ毎に定義可能な属性 
• 仮想マシンの起動元ディスクイメージの変更を保持する or しない 
• persistent(保持する)  
• 前回仮想マシンを破棄した時点のディスクイメージから再開 
• 同時に1台のみ仮想マシンを作成可能 
• non-persistent(保持しない) 
• 毎回初期状態から仮想マシンを作成 
• 同時に複数台の仮想マシンを作成可能
persistent / non-persistent 
• persistentなディスクイメージ 
• 生活環境用の仮想マシン 
• non-persistentなディスクイメージ 
• 負荷に応じてスケールするワーカーノード 
• テスト用の仮想マシン
disk-snapshot 
• non-persistentなディスクイメージから起動した 
仮想マシンのディスクを保存する 
• System DS上のディスクイメージをImage DSに 
コピー 
• 新しいディスクイメージとしてImage DSに登録 
される
Network
Virtual Network 
• OpenNebulaのネットワークリソース管理方法 
• Virtual Networkは下記のパラメータで構成される 
• 名前 
• Hostのブリッジインタフェース名 
• ネットワークモデル(使用するドライバスクリプト) 
• アドレスレンジ(IPv4、IPv6、MAC(任意)) 
• ネットワークアドレス、ネットワークマスク(任意) 
• デフォルトゲートウェイ、DNSサーバアドレス(任意)
ネットワークモデル 
• dummy (何もしない) 
• iptables 
• ebtables 
• 802.1Q 
• Open vSwitch 
• VMware (VMware環境専用)
CONTEXT
Contextualization 
• onedから仮想マシンOSへのパラメータ提供方法 
• 仮想マシンに利用者のSSH公開鍵をコピー 
• 組織内で稼働中のNTPサーバのアドレスを通知 
• 等々 
• 任意の情報を仮想マシンOSに提供できる 
http://docs.opennebula.org/4.10/_images/contextualization.png
SSH公開鍵の受け渡し(1) 
• ユーザの属性情報を編集 
$ oneuser update aoi 
• エディタが立ち上がるので、SSH_PUBLIC_KEY="公開鍵" を記述する 
SSH_PUBLIC_KEY="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAA 
BAQCa+81ye2rVpqtqYXWZ+3Jo66venKGSssB+r90b+(略)"
SSH公開鍵の受け渡し(2) 
• テンプレートを編集 
$ onetemplate update u1404tmpl 
• エディタが立ち上がるので、CONTEXT節に 
SSH_PUBLIC_KEY="$USER[SSH_PUBLIC_KEY]" と記述する 
CONTEXT=[ 
SSH_PUBLIC_KEY="$USER[SSH_PUBLIC_KEY]" ]
1. テンプレートのCONTEXT節で指定された値をシェル変数形式で 
ファイルに出力 
2. ファイルをISOイメージに固めてディスクイメージと一緒にデプロイ 
Image = 
: (1) 
SSH_PUBLIC_KEY="ssh-rsa 
AAAAB3NzaC1yc2EAAAADQAB 
AAABAQCa+..." 
oned側 
CONTEXT = 
(2)
仮想マシン側 
SSH_PUBLIC_KEY="ssh-rsa 
AAAAB3NzaC1yc2EAAAADQAB 
AAABAQCa+..." 
• OS起動時にISOイメージをマウント 
• ファイルに書かれたシェル変数SSH_PUBLIC_KEYを処理
CONTEXTスクリプト 
• ディスクイメージに事前にCONTEXTを処理するスクリプトをインストール 
しておく 
• OpenNebula.orgはCONTEXTスクリプトパッケージも用意 
• Ubuntu/Debian用 
• RHEL系5/6/7用 
• OpenSUSE用 
• Cloud-InitはOpenNebula CONTEXTにも対応 
• CONTEXTスクリプトの代わりにCloud-Initで処理することも可能
MAC_PREFFIX:IP rule 
• OpenNebulaのデフォルトのIPアドレス管理、割り当て方法 
• oned 
• 仮想マシンに割り当てるIPアドレスを16進変換 
• プレフィックス 02:00: の後ろに16進変換したIPアドレスを付加して仮想マシン用 
のMACアドレスを作成 
• IPアドレス 192.168.1.154 ←→ MACアドレス 02:00:c0:a8:01:9a 
• libvirt XMLドメインファイル <mac address='02:00:c0:a8:01:9a'/> 
• 仮想マシン 
• MACアドレスの下4オクテットを10進変換してIPアドレスに設定 
• CONTEXTスクリプトが処理
その他
OneFlow 
• 複数の仮想マシンをグループ化、階層化して管理可能 
• 仮想マシン間の依存関係を定義可能 
• NFSサーバーVM起動 → NFSクライアントVM起動 
• DBバックエンドVM起動 → ワーカーVM起動 
• を1コマンドで実行 
• オートスケーリング
Marketplace 
• OpenNebula.systemsで運営されているサイト 
• http://marketplace.opennebula.systems/appliance 
• OpenNebula環境で利用できる各種ディスクイメージのカタログを公開 
• Ubuntu、Debian、CentOS、ttylinux等 
• KVM、Xen、VMware等 
• CONTEXTスクリプトはインストール済み 
• Marketplaceから直接Datastoreにディスクイメージを登録可能 
• 同様のサイトをローカルに立てることも可能(AppMarket)
OpenNebula使用感
OpenNebula使用感 
• ストレージ 
• 物理マシンのローカルストレージが普通に使える 
• SSDを積んだマシンを活用したい 
• SPOFを減らしたい 
• ローカルストレージの場合でもマイグレーション可能 
• 1台のonedで起動元ストレージの共有・ローカル混在が可能
OpenNebula使用感 
• ディスクイメージ 
• ハイパーバイザがKVMの場合でもraw形式と 
qcow2形式のどちらも利用可能 
• 外で作成したディスクイメージを持ち込みやすい
OpenNebula使用感 
• CLI/Web UI 
• リソースの割り当て状況が把握しやすい 
• どの仮想マシンがどのホストで稼働しているか 
• どのIPアドレスがどの仮想マシンに割り当てられているか 
• レンジ指定でまとめて操作可能 
• 仮想マシンを16台作成したい/削除したい 
• ホストを16台まとめてdisableにしたい
OpenNebula使用感 
• 仮想マシンが稼働中の状態でホストをdisableにセットできる 
• 仮想マシンはホストがdisableでも操作できる 
1. 停止予定のホストをdisableにし、新規デプロイ対象から除外 
2. disableホスト上で稼働中の仮想マシンを他のホストにマイグレート 
3. disableホストの電源を落としてメンテナンス 
• というオペレーションが可能
OpenNebula使用感 
• ログ出力 
• 適度なサイズで充分な内容 
• syslog 経由で出力可能 
• onevm show, onehost show などでエラーが確 
認できる
OpenNebula使用感 
• シンプル 
• 環境全体の見通しがよく、把握しやすい 
• 学習コストが少ない
OpenNebula使用感 
• ちゃんと動く 
• 致命的な不具合に遭遇することが比較的少ない 
• よく分からない不具合に遭遇することが比較的少ない 
• コードを追いかけてデバッグすることが比較的少ない 
• 不具合対応に時間を割かなくて済む
OpenNebula使用感 
• アップデートパスがきちんと用意されている 
• 環境を保持しつつ簡単にメジャーアップグレード可能

OpenNebula on Ubuntu

  • 1.
  • 2.
    自己紹介 • 名前:大田晃彦(Akihiko Ota) • 所属:株式会社 創夢 • 初めてちゃんとさわったUbuntu:8.04
  • 3.
    Ubuntuでクラウドと言えば • OpenStackが有名ですよね。 • でもOpenNebulaって選択肢もあるんですよ。
  • 4.
    UbuntuでOpenNebula • gihyo.jpのUbuntuWeekly Recipe 第345回と第346回を書かせてもらいました • UbuntuとOpenNebulaでクラウド環境を構築してみよう • (前編)http://gihyo.jp/admin/serial/01/ubuntu-recipe/0345 • (後編)http://gihyo.jp/admin/serial/01/ubuntu-recipe/0346 • 2014/12/13時点の最新版はOpenNebula 4.10.1 • リポジトリのバージョンを適宜読み替えてください。 • (前編)はインストール、(後編)は環境構築 • (発動篇)は紹介メインで
  • 5.
    OpenNebulaってどんなもの? • OpenNebula.orgで開発しているクラウド構築管理ツール • 多数の物理マシン/マルチユーザー環境での仮想マシン管理 • データセンターや、企業・研究機関の計算機センターでの 利用が多い模様 • あまりAWSに似せて作っていない • 仮想マシンの管理に必要な機能 • 利用者と管理者にとっての「あると便利な機能」
  • 6.
    OpenNebulaってどんなもの? • 最初のパブリックリリースは2008年3月 • わりと古株 • http://opennebula.org/opennebula-is-7-years-old/ • Open ベンダーによるロックインがなく • Simple 少人数でも運用でき • Flexible 既存のインフラにフィットし • Scalable 簡単に規模を変更できる
  • 9.
    構成 http://docs.opennebula.org/4.10/_images/overview_builders.png •Hybrid は IBM SoftLayer と Microsoft Azure にも対応
  • 10.
  • 11.
    実装 • コアとなるOpenNebulaデーモンoned はC++で記述 • CLI、Web UIはRubyで記述 • ハイパーバイザ、ストレージ、ネットワーク等の差異をドライバスクリ プト(bash、Ruby)で吸収 • 仮想マシンの操作も物理マシン上のドライバスクリプトをSSHで実行 • SSHの認証方式は公開鍵認証 • 仮想マシン操作用の常駐プロセスを持たない • モニタリング用のプロセスは常駐
  • 12.
    コマンドライン・インタフェース(CLI) • フルコントロール可能 • 直観的なコマンド構文 • 見やすい出力メッセージ • メッセージフォーマットは変更可能 • レンジ指定で複数のターゲットをまとめて操作可能 • CLIとonedはXML-RPCで通信 • oned稼働マシンとユーザーログインマシンを分離可能
  • 13.
    Web UI(Sunstone) •フルコントロール可能 • ユーザーの位置づけ(ロール)によって複数のビューを選択可能 • admin、vcenter、vdcadmin、user、cloud • ビューの項目やボタンの表示、非表示が設定可能 • Sunstoneとonedは別プロセスとして稼働 • XML-RPCで通信 • onedと異なるマシン上で稼働可能
  • 14.
    ユーザーとグループ • UNIXのユーザー/グループに類似のモデル • スーパーユーザーとして oneadmin が存在する • ユーザーは複数のグループに所属することも可能 • 特定ユーザーにグループリーダーとして限定的な管理者権限を与え ることも可能 • 認証方法はパスワード認証、SSH公開鍵認証、x509認証、LDAP 認証から選択可能 • ユーザー単位、グループ単位で各種リソースにクォータを設定可能
  • 15.
    アカウンティング • 集計できる情報 • 仮想マシンの作成日時、破棄日時、CPU数、メモリサイ ズ、ネットワーク送受信量など • CLI、Web UIから任意のタイミングで集計できる • 管理者は全ユーザーの情報を取得可能 • グループリーダーは所属グループのユーザーの情報を取得可能 • 一般ユーザーは自分の情報のみ取得可能
  • 16.
    リソース Datastore •ディスクイメージを格納するストレージごとに定義 • 用途、種類、転送方法などに応じて複数定義できる Image • VMの起動元のディスクイメージ • データ格納用のディスクイメージ • ISOイメージ • 等々 Virtual Network • IPアドレスレンジやネットワーク分割方法を定義 • ネットワーク分割方法は802.1Q、Open vSwitch、ebtables、等
  • 17.
    リソース Template •ある仮想マシンが使用するリソースをまとめたもの • Image、Virtual Network、CPU数、メモリサイズ等 • スペックやOSなど、用途に応じて組み合わせて定義する Virtual Machine • 仮想マシン Image = Network = CPU = MEMORY = Image = Network = CPU = MEMORY = : :
  • 18.
    リソース(インフラ寄り) Host •仮想マシンが立ち上がるホストマシン(物理マシン) Cluster • Hostをカテゴライズしたもの • 必要に応じてDatastoreやVirtual Networkも関連付け可能 • 特定のグループに割り当てて占有させることも可能
  • 19.
    リソースの組み合わせで環境構築 Image = Network = CPU = MEMORY = Image = Network = CPU = MEMORY = : : Frontend Host VM Cluster Image Datastore Network Template
  • 20.
    リソースのパーミッション • UNIXのパーミッションに類似のモデル • リソースの所有権(ユーザー、グループ) • パーミッション • OWNER / GROUP / OTHER に対し、 • USE(4) : 変更を伴わない操作の許可・不許可 • MANAGE(2) : 変更を伴う操作の許可・不許可 • ADMIN(1) : 管理用途の特殊な操作の許可・不許可 • (Cluster, Host は除く)
  • 21.
    パーミッション変更 • スーパーユーザーoneadmin は全リソースのパーミッションを変更可能 • グループリーダーは所属するグループのリソースのパーミッションを変更可能 • イメージ myimage を、 • 自分は USE(4)+MANAGE(2) を許可 • GROUP は USE(4) を許可 • OTHER は許可しない $ oneimage chmod myimage 640
  • 22.
    オーナー・グループ変更 • スーパーユーザーoneadmin は全リソースのオーナー・グループを変更可能 • グループリーダーは所属するグループのリソースのオーナーを変更可能 • ネットワーク private1 のグループを yama に変更 $ onevnet chgrp private1 yama • テンプレート ubuntu_tmpl をオーナー kokona に変更 $ onetemplate chown ubuntu_tmpl kokona
  • 23.
  • 24.
    Datastore Type •ディスクイメージを格納するストレージ • Image Datastore • 原本となるディスクイメージを格納 • System Datastore • 仮想マシンの起動元ディスクイメージを格納 • Files Datastore(省略)
  • 25.
    Datastore drivers (DS_MAD) • Image Datastoreは使用するストレージに応じて下記のドライバを選択 • File-system:スタンダードなファイル形式のディスクイメージを格納 • vmfs:vmfs形式のディスクイメージを格納(VMwareのみ) • LVM:LVMのボリュームをディスクイメージとして使用する場合 • Ceph:Ceph(RBD)をディスクイメージの格納先に使用する場合 • Dev:既存のブロックデバイスを直接仮想マシンにアタッチする場合 • System Datastoreには不要
  • 26.
    Transfer Manager drivers(TM_MAD) • Datastore間のファイル移動方法(ドライバスクリプト) を選択 • Image Datastore、System Datastoreいずれにも必要 なパラメータ
  • 27.
    Transfer Manager drivers(TM_MAD) • 種類 • shared:共有ストレージによるファイル移動 • ssh:SSH(scp)によるファイル移動 • qcow2:共有ストレージによるファイル移動(qcow2に特化) • vmfs:vmkfstoolsによるファイルコピー(VMware用) • ceph:Image DatastoreにCephを使用する場合(RBDを使用) • lvm:Image DatastoreにLVMを使用する場合(recommend) • fs_lvm:Image DatastoreにLVMを使用する場合(classical) • dev:Image DatastoreにDevを使用する場合
  • 28.
    Type / DS_MAD/ TM_MAD TM_MAD shared ssh qcow2 vmfs ceph lvm fs_lvm dev Type DS_MAD System - OK OK OK Image File-System OK OK OK OK vmfs OK Ceph OK LVM OK Dev OK • Image DatastoreのDS_MAD/TM_MADとSystem DatastoreのTM_MADの組み合わせに 注意
  • 29.
    Image DS~System DS間のファイル移動 shared ssh Image DS System DS Image DS System DS cp ln -s snapshot etc... scp
  • 30.
    マイグレーション shared ssh 転送 save restore System DS System DS System DS migrate save -> 転送 -> restore
  • 31.
  • 32.
    persistent / non-persistent • ディスクイメージ毎に定義可能な属性 • 仮想マシンの起動元ディスクイメージの変更を保持する or しない • persistent(保持する)  • 前回仮想マシンを破棄した時点のディスクイメージから再開 • 同時に1台のみ仮想マシンを作成可能 • non-persistent(保持しない) • 毎回初期状態から仮想マシンを作成 • 同時に複数台の仮想マシンを作成可能
  • 33.
    persistent / non-persistent • persistentなディスクイメージ • 生活環境用の仮想マシン • non-persistentなディスクイメージ • 負荷に応じてスケールするワーカーノード • テスト用の仮想マシン
  • 34.
    disk-snapshot • non-persistentなディスクイメージから起動した 仮想マシンのディスクを保存する • System DS上のディスクイメージをImage DSに コピー • 新しいディスクイメージとしてImage DSに登録 される
  • 35.
  • 36.
    Virtual Network •OpenNebulaのネットワークリソース管理方法 • Virtual Networkは下記のパラメータで構成される • 名前 • Hostのブリッジインタフェース名 • ネットワークモデル(使用するドライバスクリプト) • アドレスレンジ(IPv4、IPv6、MAC(任意)) • ネットワークアドレス、ネットワークマスク(任意) • デフォルトゲートウェイ、DNSサーバアドレス(任意)
  • 37.
    ネットワークモデル • dummy(何もしない) • iptables • ebtables • 802.1Q • Open vSwitch • VMware (VMware環境専用)
  • 38.
  • 39.
    Contextualization • onedから仮想マシンOSへのパラメータ提供方法 • 仮想マシンに利用者のSSH公開鍵をコピー • 組織内で稼働中のNTPサーバのアドレスを通知 • 等々 • 任意の情報を仮想マシンOSに提供できる http://docs.opennebula.org/4.10/_images/contextualization.png
  • 40.
    SSH公開鍵の受け渡し(1) • ユーザの属性情報を編集 $ oneuser update aoi • エディタが立ち上がるので、SSH_PUBLIC_KEY="公開鍵" を記述する SSH_PUBLIC_KEY="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAA BAQCa+81ye2rVpqtqYXWZ+3Jo66venKGSssB+r90b+(略)"
  • 41.
    SSH公開鍵の受け渡し(2) • テンプレートを編集 $ onetemplate update u1404tmpl • エディタが立ち上がるので、CONTEXT節に SSH_PUBLIC_KEY="$USER[SSH_PUBLIC_KEY]" と記述する CONTEXT=[ SSH_PUBLIC_KEY="$USER[SSH_PUBLIC_KEY]" ]
  • 42.
    1. テンプレートのCONTEXT節で指定された値をシェル変数形式で ファイルに出力 2. ファイルをISOイメージに固めてディスクイメージと一緒にデプロイ Image = : (1) SSH_PUBLIC_KEY="ssh-rsa AAAAB3NzaC1yc2EAAAADQAB AAABAQCa+..." oned側 CONTEXT = (2)
  • 43.
    仮想マシン側 SSH_PUBLIC_KEY="ssh-rsa AAAAB3NzaC1yc2EAAAADQAB AAABAQCa+..." • OS起動時にISOイメージをマウント • ファイルに書かれたシェル変数SSH_PUBLIC_KEYを処理
  • 44.
    CONTEXTスクリプト • ディスクイメージに事前にCONTEXTを処理するスクリプトをインストール しておく • OpenNebula.orgはCONTEXTスクリプトパッケージも用意 • Ubuntu/Debian用 • RHEL系5/6/7用 • OpenSUSE用 • Cloud-InitはOpenNebula CONTEXTにも対応 • CONTEXTスクリプトの代わりにCloud-Initで処理することも可能
  • 45.
    MAC_PREFFIX:IP rule •OpenNebulaのデフォルトのIPアドレス管理、割り当て方法 • oned • 仮想マシンに割り当てるIPアドレスを16進変換 • プレフィックス 02:00: の後ろに16進変換したIPアドレスを付加して仮想マシン用 のMACアドレスを作成 • IPアドレス 192.168.1.154 ←→ MACアドレス 02:00:c0:a8:01:9a • libvirt XMLドメインファイル <mac address='02:00:c0:a8:01:9a'/> • 仮想マシン • MACアドレスの下4オクテットを10進変換してIPアドレスに設定 • CONTEXTスクリプトが処理
  • 46.
  • 47.
    OneFlow • 複数の仮想マシンをグループ化、階層化して管理可能 • 仮想マシン間の依存関係を定義可能 • NFSサーバーVM起動 → NFSクライアントVM起動 • DBバックエンドVM起動 → ワーカーVM起動 • を1コマンドで実行 • オートスケーリング
  • 48.
    Marketplace • OpenNebula.systemsで運営されているサイト • http://marketplace.opennebula.systems/appliance • OpenNebula環境で利用できる各種ディスクイメージのカタログを公開 • Ubuntu、Debian、CentOS、ttylinux等 • KVM、Xen、VMware等 • CONTEXTスクリプトはインストール済み • Marketplaceから直接Datastoreにディスクイメージを登録可能 • 同様のサイトをローカルに立てることも可能(AppMarket)
  • 49.
  • 50.
    OpenNebula使用感 • ストレージ • 物理マシンのローカルストレージが普通に使える • SSDを積んだマシンを活用したい • SPOFを減らしたい • ローカルストレージの場合でもマイグレーション可能 • 1台のonedで起動元ストレージの共有・ローカル混在が可能
  • 51.
    OpenNebula使用感 • ディスクイメージ • ハイパーバイザがKVMの場合でもraw形式と qcow2形式のどちらも利用可能 • 外で作成したディスクイメージを持ち込みやすい
  • 52.
    OpenNebula使用感 • CLI/WebUI • リソースの割り当て状況が把握しやすい • どの仮想マシンがどのホストで稼働しているか • どのIPアドレスがどの仮想マシンに割り当てられているか • レンジ指定でまとめて操作可能 • 仮想マシンを16台作成したい/削除したい • ホストを16台まとめてdisableにしたい
  • 53.
    OpenNebula使用感 • 仮想マシンが稼働中の状態でホストをdisableにセットできる • 仮想マシンはホストがdisableでも操作できる 1. 停止予定のホストをdisableにし、新規デプロイ対象から除外 2. disableホスト上で稼働中の仮想マシンを他のホストにマイグレート 3. disableホストの電源を落としてメンテナンス • というオペレーションが可能
  • 54.
    OpenNebula使用感 • ログ出力 • 適度なサイズで充分な内容 • syslog 経由で出力可能 • onevm show, onehost show などでエラーが確 認できる
  • 55.
    OpenNebula使用感 • シンプル • 環境全体の見通しがよく、把握しやすい • 学習コストが少ない
  • 56.
    OpenNebula使用感 • ちゃんと動く • 致命的な不具合に遭遇することが比較的少ない • よく分からない不具合に遭遇することが比較的少ない • コードを追いかけてデバッグすることが比較的少ない • 不具合対応に時間を割かなくて済む
  • 57.
    OpenNebula使用感 • アップデートパスがきちんと用意されている • 環境を保持しつつ簡単にメジャーアップグレード可能