SlideShare a Scribd company logo
1 of 57
Download to read offline
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使用感 
• アップデートパスがきちんと用意されている 
• 環境を保持しつつ簡単にメジャーアップグレード可能

More Related Content

What's hot

環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇Manabu Ori
 
知らないと地味にハマるOpen stackインストール時の注意点
知らないと地味にハマるOpen stackインストール時の注意点知らないと地味にハマるOpen stackインストール時の注意点
知らないと地味にハマるOpen stackインストール時の注意点d-shen
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2Etsuji Nakai
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"Masaya Aoyama
 
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Etsuji Nakai
 
OpenStack マルチノード環境構築
OpenStack マルチノード環境構築OpenStack マルチノード環境構築
OpenStack マルチノード環境構築HommasSlide
 
Osc spring cloud_stack20130223
Osc spring cloud_stack20130223Osc spring cloud_stack20130223
Osc spring cloud_stack20130223Noriko Suto
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話Yoshinori Matsunobu
 
あの日実行したコンテナの名前を僕達はまだ知らない。
あの日実行したコンテナの名前を僕達はまだ知らない。あの日実行したコンテナの名前を僕達はまだ知らない。
あの日実行したコンテナの名前を僕達はまだ知らない。Masahito Zembutsu
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践Shu Sugimoto
 
Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化shirou wakayama
 
RDOを使ったOpenStack Havana - Neutron 構築編
RDOを使ったOpenStack Havana - Neutron 構築編RDOを使ったOpenStack Havana - Neutron 構築編
RDOを使ったOpenStack Havana - Neutron 構築編VirtualTech Japan Inc.
 
Dev cloudではじめるcloudstack4 3
Dev cloudではじめるcloudstack4 3Dev cloudではじめるcloudstack4 3
Dev cloudではじめるcloudstack4 3Tadashi Mishima
 
Using ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixivUsing ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixivShunsuke Michii
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0Etsuji Nakai
 
Dev cloud installation
Dev cloud installationDev cloud installation
Dev cloud installationZack Dolby
 
IaaSクラウドを支える基礎技術 v1_0
IaaSクラウドを支える基礎技術 v1_0IaaSクラウドを支える基礎技術 v1_0
IaaSクラウドを支える基礎技術 v1_0Etsuji Nakai
 

What's hot (20)

環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇
 
知らないと地味にハマるOpen stackインストール時の注意点
知らないと地味にハマるOpen stackインストール時の注意点知らないと地味にハマるOpen stackインストール時の注意点
知らないと地味にハマるOpen stackインストール時の注意点
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
 
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
 
OpenStack マルチノード環境構築
OpenStack マルチノード環境構築OpenStack マルチノード環境構築
OpenStack マルチノード環境構築
 
Osc spring cloud_stack20130223
Osc spring cloud_stack20130223Osc spring cloud_stack20130223
Osc spring cloud_stack20130223
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
KVM+cgroup
KVM+cgroupKVM+cgroup
KVM+cgroup
 
あの日実行したコンテナの名前を僕達はまだ知らない。
あの日実行したコンテナの名前を僕達はまだ知らない。あの日実行したコンテナの名前を僕達はまだ知らない。
あの日実行したコンテナの名前を僕達はまだ知らない。
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
 
Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化
 
OpenStack Icehouse構築手順書
OpenStack Icehouse構築手順書OpenStack Icehouse構築手順書
OpenStack Icehouse構築手順書
 
RDOを使ったOpenStack Havana - Neutron 構築編
RDOを使ったOpenStack Havana - Neutron 構築編RDOを使ったOpenStack Havana - Neutron 構築編
RDOを使ったOpenStack Havana - Neutron 構築編
 
Dev cloudではじめるcloudstack4 3
Dev cloudではじめるcloudstack4 3Dev cloudではじめるcloudstack4 3
Dev cloudではじめるcloudstack4 3
 
Using ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixivUsing ngx_lua / lua-nginx-module in pixiv
Using ngx_lua / lua-nginx-module in pixiv
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0
 
Dev cloud installation
Dev cloud installationDev cloud installation
Dev cloud installation
 
IaaSクラウドを支える基礎技術 v1_0
IaaSクラウドを支える基礎技術 v1_0IaaSクラウドを支える基礎技術 v1_0
IaaSクラウドを支える基礎技術 v1_0
 

Similar to OpenNebula on Ubuntu

Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例maebashi
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用Shinya Okano
 
Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jAkira Yoshiyama
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみようMasahiko Hashimoto
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会samemoon
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Takamasa Maejima
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようmookjp
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
DockerクイックツアーEtsuji Nakai
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門hiro nemu
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
VM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようVM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようMasayuki Ozawa
 
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークTakuya ASADA
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 

Similar to OpenNebula on Ubuntu (20)

Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 j
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
 
WindowsでMySQL入門
WindowsでMySQL入門WindowsでMySQL入門
WindowsでMySQL入門
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
Version管理 1
Version管理 1Version管理 1
Version管理 1
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
VM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようVM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみよう
 
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 

OpenNebula on Ubuntu

  • 2. 自己紹介 • 名前:大田 晃彦(Akihiko Ota) • 所属:株式会社 創夢 • 初めてちゃんとさわったUbuntu:8.04
  • 3. Ubuntuでクラウドと言えば • OpenStackが有名ですよね。 • でもOpenNebulaって選択肢もあるんですよ。
  • 4. 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 • リポジトリのバージョンを適宜読み替えてください。 • (前編)はインストール、(後編)は環境構築 • (発動篇)は紹介メインで
  • 5. OpenNebulaってどんなもの? • OpenNebula.org で開発しているクラウド構築管理ツール • 多数の物理マシン/マルチユーザー環境での仮想マシン管理 • データセンターや、企業・研究機関の計算機センターでの 利用が多い模様 • あまりAWSに似せて作っていない • 仮想マシンの管理に必要な機能 • 利用者と管理者にとっての「あると便利な機能」
  • 6. OpenNebulaってどんなもの? • 最初のパブリックリリースは2008年3月 • わりと古株 • http://opennebula.org/opennebula-is-7-years-old/ • Open ベンダーによるロックインがなく • Simple 少人数でも運用でき • Flexible 既存のインフラにフィットし • Scalable 簡単に規模を変更できる
  • 7.
  • 8.
  • 9. 構成 http://docs.opennebula.org/4.10/_images/overview_builders.png • Hybrid は IBM SoftLayer と Microsoft Azure にも対応
  • 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
  • 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. Image
  • 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に登録 される
  • 36. Virtual Network • OpenNebulaのネットワークリソース管理方法 • Virtual Networkは下記のパラメータで構成される • 名前 • Hostのブリッジインタフェース名 • ネットワークモデル(使用するドライバスクリプト) • アドレスレンジ(IPv4、IPv6、MAC(任意)) • ネットワークアドレス、ネットワークマスク(任意) • デフォルトゲートウェイ、DNSサーバアドレス(任意)
  • 37. ネットワークモデル • dummy (何もしない) • iptables • ebtables • 802.1Q • Open vSwitch • VMware (VMware環境専用)
  • 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スクリプトが処理
  • 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)
  • 50. OpenNebula使用感 • ストレージ • 物理マシンのローカルストレージが普通に使える • SSDを積んだマシンを活用したい • SPOFを減らしたい • ローカルストレージの場合でもマイグレーション可能 • 1台のonedで起動元ストレージの共有・ローカル混在が可能
  • 51. OpenNebula使用感 • ディスクイメージ • ハイパーバイザがKVMの場合でもraw形式と qcow2形式のどちらも利用可能 • 外で作成したディスクイメージを持ち込みやすい
  • 52. OpenNebula使用感 • CLI/Web UI • リソースの割り当て状況が把握しやすい • どの仮想マシンがどのホストで稼働しているか • どの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使用感 • アップデートパスがきちんと用意されている • 環境を保持しつつ簡単にメジャーアップグレード可能