OSSクラウド基盤OpenStackの利用方法
OpenStack Compute、Novaの利用方法
OpenStackプロジェクトの最新動向、OpenStackを構成するOpenStack Computeのうち、Novaの具体的な利用方法について解説する。
「注目のOpenStackプロジェクトの全体像」「注目のOpenStackプロジェクトの全体像 ~コミュニティーと主要コンポーネント」では2回にわたってOpenStackプロジェクトの概要を説明した。今回は、OpenStackプロジェクトの最新動向や、OpenStackを構成するOpenStack Compute(Nova)の具体的な利用方法について解説する。
OpenStackプロジェクトの動向まとめ
第2版(Bexar)リリースの内容
OpenStackで2番目のリリースとなる第2版(Bexar)が2011年2月3日にリリースされた。第1版(Austin)のリリースから3カ月後となる。第2版(Bexar)の目玉の1つであったLive Migration機能は第3版(Cactus)リリースに延期されたものの、「注目のOpenStackプロジェクトの全体像 ~コミュニティーと主要コンポーネント」で触れたさまざまな機能が追加された。
第3版(Cactus)リリースの予定
本稿執筆時点(2011年3月31日)で、既に仕様書(blueprint)による機能提案は、機能ごとのソースコードの追加提案も締め切られ、QA(品質保証)フェーズに入り、リリース前の修正作業が活発に進められている。
第3版(Cactus)リリース向けに提案されている機能のうち、主要なものは以下の通りである(参考:「Blueprints for cactus」)。
**・Nova **
-Live Migrationサポート
-IPv6サポートの強化
-XenServer関連の機能強化
**・Glance **
-ログ機能
-イメージのフォーマットに関するメタデータの追加
**・Swift **
-マルチリージョンサポート
第3版(Cactus)リリースについては、OpenStackプロジェクトリーダーのRick Clark氏がメーリングリストで述べているように、第2版(Bexar)ほどの機能追加は行わず、商用利用に向けて安定性や信頼性の向上が図られることになっている。
コミュニティーの動向アップデート
ここで、コミュニティーの最新動向を基に、前回までの記事で紹介した内容からの訂正分をまとめておく。
(1)今後のリリース予定
前回の記事「注目のOpenStackプロジェクトの全体像 ~コミュニティーと主要コンポーネント」で、第3版までは3カ月おきにリリースされるが、第4版以降は6カ月ごとに変更されると紹介した。しかし、この予定が変更になり、当面の間3ヵカ月おきのリリースが継続されることになった。
(2)リリースコードネーム
同じく前回の記事で、リリースコードネームはテキサス州の地名から採られると紹介した。実は、コミュニティーの内部でも混乱があり、基本的にDesign Summitの開催地に関連の地名から採られることが分かった。次回のDesign Summitはカリフォルニア州サンタクララで開催されるため、第4版(D Release)のコードネームはオンライン投票によりDiabloと決まった。第5版(E Release)のコードネームはサンタクララでのDesign Summitで決定される見込みである。
Novaの利用方法
前述の通り、第3版(Cactus)のコードもfix(完成)に近づいてきているが、本稿では2011年2月3日に公開された第2版(Bexar)の使い方を解説する。
動作環境の準備
第2版(Bexar)のNovaを利用する環境としては現状、LinuxディストリビューションのUbuntuが最適である。本稿執筆に当たって、Ubuntu 10.10(64ビット版)上で動くBexarのNovaで動作検証を行った。なお、Red Hat Enterprise Linux(RHEL)やSUSE Linuxなど、その他のLinuxディストリビューションでも動作報告がなされており、OpenStack Wikiにインストール方法が記載されている。また、ハードウェアとしてはIntel-VTなどCPUの仮想化支援機能が付いた機種がベストである。
Novaは、1ノードで実行することもできる。また、ソースコードのダウンロード・インストール・起動・停止といった操作を一括して行うため、「nova.sh」 というシェルスクリプトが提供されている。単一ノードで簡単にNovaを動作させてみたい場合は、nova.shを利用するのが簡単である。なお、第3版(Cactus)ではNovaの配布パッケージにnova.shが含まれているが、第2版(Bexar)にはnova.shは含まれてないため、GitHubにある、nova.shの作者Vishvananda Ishaya氏のGitリポジトリから取得する必要がある。
操作ツール(nova.sh)の処理概要
nova.shには「branch」「install」「run」「terminate」「clean」などの引数があり、それぞれNovaのソース取得、Novaのインストール、仮想マシンインスタンスの停止やボリュームの削除、Novaの停止などが行える。また、「USE_MYSQL」などの環境変数を設定することで、Novaのオプションを設定できる。nova.shは単一のシェルスクリプトなので、シェルスクリプトの知識があればカスタマイズも容易である。
これ以外にも、「Puppet」を利用したデプロイツールや、対話型のセットアップスクリプトが存在する。
以下では、nova.shが内部で行っている処理を中心に、Novaの起動方法や利用方法を解説する。
まず、nova.shの基本的な使い方の流れは以下の通りである。細かい動作をカスタマイズしない場合は、以下の通りにnova.shを実行するだけでNovaの動作環境を用意できる。なお、以下の1と2の実行にはインターネットにアクセスできる環境が必要なので注意のこと。
1.Novaのソースのダウンロード
$ sudo ./nova.sh branch
ただし、上記の「nova.sh branch」は最新版のソースツリーを取得するコマンドであるため、今回は以下の通り、第2版(Bexar)の配布パッケージを取得し、展開する。
$ sudo wget http://launchpad.net/nova/bexar/2011.1.1/+download/nova-2011.1.1.tar.gz
$ sudo tar zxpvf nova-2011.1.1.tar.gz
$ sudo mv nova-2011.1.1 nova
2.必要な周辺パッケージのインストール
$ sudo ./nova.sh install
3.Novaの起動
$ sudo LIBVIRT_TYPE=kvm ./nova.sh run
上記で必要な前処理が実行され、Novaのサービスが起動される。また、上記ではnova.sh実行時の環境変数「LIBVIRT_TYPEにkvm」という値を設定している。これを設定しないと、KVMサポートなしのQEMUで仮想マシンが起動されてしまい、非常にレスポンスが低下する。CPUがIntel-VTなどの仮想化支援機能をサポートした機種を利用しているのであれば、最低限「LIBVIRT_TYPE」だけは設定した方がよい。なお、今後複数ノード化する予定があれば、「USE_MYSQL=1」も指定しておくとよい。
4.仮想マシンを起動するなど、Novaによるクラウドを利用する
後述の通り、「euca2ools」「OpenStack Dashboard」「Elasticfox」などが利用可能である。
5.Novaの停止
$ sudo ./nova.sh terminate
$ sudo ./nova.sh clean
Novaの細かい挙動をカスタマイズしたい場合、上記の大きな流れを念頭に、以下の解説を参考にして適宜パラメータの変更などを行ってほしい。
管理ツールnova-manage
Novaの管理ツールは、「nova-manage」コマンドである。nova-manageコマンドにより、ユーザーやプロジェクト、ネットワークなどを設定できる。nova-manageはPythonスクリプトであり、ソースツリーのbinディレクトリに含まれている。
以下、nova.shの中で呼び出されるnova-manageコマンドが行う環境設定内容について解説する。
データベースの作成
第2版(Bexar)のNova起動に当たって最初に必要なことは、データベースの作成である。この操作は、第1版(Austin)にはなかったもので、データベースのスキーマが古い場合、最新のバージョンに更新する処理もなされる。
$ sudo nova-manage db sync
なお、「nova.sh run」を実行すると、毎回データベースの再作成が行われることに注意すること。
管理者の作成
データベースを作成した後、管理者を作成する。作成する管理者名を「myadmin」にする場合、以下のようになる。
$ sudo nova-manage user admin myadmin
nova-manageコマンドの第2引数の“admin”が、管理ユーザーの作成を示している。実行すると、管理者のアクセスキーと秘密鍵が出力されるので控えておくこと。
なお、以下のように引数でアクセスキーや秘密鍵を指定して、管理者を作成することもできる。
$ sudo nova-manage user admin myadmin myaccess mysecret
この例では、アクセスキーと秘密鍵はそれぞれ「myaccess」と「mysecret」になる。
ネットワークの作成
次に、ネットワークの作成である。仮想マシンインスタンスに直接割り当てるIPアドレスを定義する。ここでいうIPアドレスとは、Amazon EC2のプライベートIPに相当するものである。
$ sudo nova-manage network create 192.168.0.0/16 2 64
上記のnova-manageコマンドの引数「192.168.0.0/16」はプライベートIPアドレス空間全体の範囲を、第4引数の「2」は作成するネットワークの数を、第5引数の「64」は個々のネットワークが持つIPアドレスの数を示す。Novaにはユーザーの集合であるプロジェクトという概念があり、基本的にプロジェクト単位でネットワークが分離されるため、必要なプロジェクト分のネットワークを作成する。また、あまり多量のネットワークを作成するとかなり時間がかかるため、検証段階では必要なネットワーク数分を指定するのがよい。
フローティングIPの作成
仮想マシンインスタンスに直接割り当てるネットワークを定義した後、クラウド外部から仮想マシンインスタンスにアクセスするために必要な公開IPアドレスを定義するため、フローティングIPを作成する。フローティングIPとは、Amazon EC2でいうパブリックIPに相当するものである。
$ sudo nova-manage floating create hostname 10.1.1.0/24
「10.1.1.0/24」は割り当てるIPアドレスの範囲である。ここでは、ファイアウォールの内側の検証環境で利用することを想定し、プライベートIPアドレス空間を指定している。第3引数はホスト名を指定するために「hostname」コマンドを利用している。
一般ユーザーの作成
一般ユーザーの作成は以下のようにする。
$ sudo nova-manage user create myuser
上記ではnova-manageの第3引数の「myuser」が、新しく作成するユーザー名であり、アクセスキーと秘密鍵については前述の管理者の作成と同様である。
証明書の出力
Amazon EC2やEucalyptusを利用したことのある方ならご存じかと思うが、Amazon EC2のAPIでは、一部のコマンドでユーザーごとに生成される証明書を指定する必要がある。
この証明書の生成は以下のようにする。
$ sudo nova-manage project zipfile myproject myadmin nova.zip
ここで、nova.zipは出力するZIPファイル名である。出力されたZIPファイルを適当なディレクトリに展開しておく。
プロジェクトの作成
前述の通り、プロジェクトとは複数ユーザーをグループ化した概念であり、IPアドレスなど仮想マシンのリソースの分離はプロジェクト単位で行われる。Novaを利用するためにはプロジェクトを作成する必要がある。
$ sudo nova-manage project create myproject myadmin
「myproject」は作成するプロジェクト名で、プロジェクトマネジャーとして、先ほど作成したユーザーmyadminを指定している。
なお、上述の例ではプロジェクトマネジャーとしてクラウド全体の管理者を指定したが、プロジェクトマネジャーは一般ユーザーでもよい。以下のように一般ユーザーをプロジェクトマネジャーに指定してプロジェクトを作成することもできる。
$ sudo nova-manage project create myproject2 myuser
各コンポーネントの起動
コンポーネントの起動には、Novaソースツリーのbinディレクトリに含まれるスクリプトを利用する。起動スクリプトとコンポーネントは以下のように対応する。
表 起動スクリプトとコンポーネントの対応
| 起動スクリプト | コンポーネント |
|---|---|
| nova-api | API Node |
| nova-scheduler | Scheduler Node |
| nova-network | Network Node |
| nova-compute | Compute Node |
| nova-volume | Volume Node |
| nova-objectstore | ObjectStore |
Bexarリリースの場合、デフォルトの設定ファイルの位置は、起動スクリプト(表)のあるディレクトリの「nova.conf」ファイルになっている。また、「--flagfile」オプションにより設定ファイルの位置を指定することができる。
$ nova-compute --flagfile=/foo/bar.conf
「/foo/bar.conf」が設定ファイルである。「--flagfile」オプションを指定せずにコンポーネントを起動した場合は、デフォルトの位置から読み込まれる。ただし、第2版(Bexar)については、API Nodeのみ明示的にオプションで指定する必要があるようである。
また、Volume Nodeを利用する場合は、起動前に「nova-volumes」という名前のボリュームグループを作成しておく必要がある。
$ truncate -s 100G volumes
$ sudo losetup -f --show volumes
/dev/loop0
$ sudo vgcreate nova-volumes /dev/loop0
euca2oolsを用いた仮想マシンインスタンス起動
外部からNovaにアクセスするためのAPIには、Amazon EC2 APIやOpenStack API、Direct APIがある。現状はAmazon EC2 APIが最もよく試験されており、利用するためのツールとしてはeuca2oolsが最も適している。以下では、euca2oolsを用いた仮想マシンインスタンスの起動やログイン方法について解説する。
環境変数の設定(rcファイルの読み込み)
nova-manageコマンドで生成したZIPファイルを展開し、中に含まれているnovarcを読み込む。これにより、euca2oolsによるNovaの操作に必要な環境変数が設定される。
$ . novarc
イメージのバンドル
nova.shを用いてNovaのインストールと起動を行った場合、イメージファイルが既に登録された状態になるので、そのイメージファイルを利用する限り、イメージのバンドルから登録までの作業が不要である。しかし、一般にイメージ管理作業を行う必要がある。
nova.shが利用する、イメージファイルのアーカイブには以下のファイルが含まれている。
- aki-tty/image
- ami-tty/image
- ari-tty/image
上から順にカーネルイメージ、マシンイメージ、RAMディスクイメージである。これら3つのファイルを利用する場合、バンドルの手順は以下のようになる。
$ euca-bundle-image -i aki-tty/image -p kernel --kernel true --ec2cert cacert.pem --privatekey pk.pem --cert cert.pem
$ euca-bundle-image -i ari-tty/image -p ramdisk --ramdisk true --ec2cert cacert.pem --privatekey pk.pem --cert cert.pem
$ euca-bundle-image -i ami-tty/image -p machine --ec2cert cacert.pem --privatekey pk.pem --cert cert.pem
「cacert.pem」「pk.pem」「cert.pem」はnova-manageコマンドから出力されたZIPファイルに含まれていた証明書である。
イメージのアップロード
イメージのバンドル時に生成されたマニフェストファイルを指定して、イメージをアップロードする。
$ euca-upload-bundle -m /tmp/kernel.manifest.xml -b mybucket
$ euca-upload-bundle -m /tmp/ramdisk.manifest.xml -b mybucket
$ euca-upload-bundle -m /tmp/machine.manifest.xml -b mybucket
「mybucket」は任意のバケット名である。
イメージの登録
イメージを登録するとイメージIDが出力される。
$ euca-register mybucket/kernel.manifest.xml
IMAGE ami-x6wt0dol
$ euca-register mybucket/ramdisk.manifest.xml
IMAGE ami-tx67euc5
$ euca-register mybucket/machine.manifest.xml
IMAGE ami-xtscwxhb
引数として「euca-upload-bundle」から出力されたイメージの場所を指定している。
キーペアの作成
キーペアの作成を行う。
$ euca-add-keypair mykey > mykey.priv
$ chmod 600 mykey.priv
「mykey」は任意のキーペア名である。
仮想インスタンスの起動
イメージの登録時に取得したIDとキーペアを指定してインスタンスの起動予約を行う。
$ euca-run-instances ami-xtscwxhb --kernel ami-x6wt0dol --ramdisk ami-tx67euc5 --key mykey
インスタンスが起動したかどうかは、
$ euca-describe-instances
で、インスタンスの状態として「running」が表示されるかどうかで分かる。
フローティングIPの割り当て
Novaの場合、仮想マシンインスタンスを起動しただけでは、Amazon EC2でいうパブリックIPが割り当てられないという違いがある。このため、仮想マシンインスタンスごとに前述のフローティングIPを割り当てる必要がある。
このためには、まず、以下のように「euca-allocate-address」コマンドを用いて、Amazon EC2でいうところの「Elastic IP(EIP)」を割り当てる。
$ euca-allocate-address
ADDRESS 10.1.1.2
上記の例では、10.1.1.2が割り当てられたアドレスである。なお、フローティングアドレスとして利用可能なIPアドレスの一覧は、
$ euca-describe-addresses
で表示することができる。インスタンスID「i-12345678」に「10.1.0.2」を割り当てたい場合、以下のようにする。
$ euca-associate-address -i i-12345678 10.1.1.2
セキュリティグループの設定
仮想マシンインスタンスに外部から接続するためには、Amazon EC2やEucalyptusと同様に、セキュリティグループ(一種のファイアウォール)の設定を行う必要がある。デフォルトでは、一切の通信が通らないようになっているためである。
以下では、デフォルトセキュリティグループ(セキュリティグループ名はdefault)に対して、sshコマンドで使用されるTCPの22番ポートの通信許可を定義している。
$ euca-authorize -P tcp-p 22 default
なお、セキュリティグループは「euca-add-group」コマンドを用いて、自由に追加することができる。用途に応じて作成し、仮想マシンインスタンス起動時に「euca-run-instances」コマンドの「-g」オプションで指定すればよい。
仮想マシンインスタンスへのログイン
キーペア作成時に作成した秘密鍵を指定すれば、仮想マシンインスタンスにログインできる。
$ ssh -i mykey.priv ubuntu@10.1.2.2
GUIツール
Elasticfox
euca2ools以外でも、Amazon EC2 APIを利用するツールであればNovaでも利用できる。ここでは、そのようなツールの1つで、Mozilla Firefoxの拡張機能であるElasticfoxについて利用方法を紹介する。
Firefox 3.6にインストールした「Elasticfox 1.7.000116」で、第2版(Bexar)のNovaで起動した仮想マシンインスタンスの一覧を表示させようとすると、エラーダイアログが出る。この問題は既にLaunchpadで報告され、修正パッチが公開されている。なお、本パッチは第3版(Cactus)で取り込まれている。
上記のパッチを適用した上で、Elasticfoxにインスタンスの一覧を表示させるには、Elasticfoxでリージョン(Regions)とアクセスキーと秘密鍵(Credentials)を設定する。設定する値はnova-manageコマンドが出力するファイルから分かる。
$ sudo nova-manage project environment myproject myuser novarc
「myproject」はプロジェクト名、「myuser」はユーザー名、「novarc」はファイル名である。
追加するリージョンのEndpoint URLには、ファイルnovarc中のEC2_URLを指定する。
追加する証明書の「Account Name」と「AWS Access Key」「AWS Secret Access Key」には、ユーザー名、ファイルnovarc中の「EC2_ACCESS_KEY」「EC2_SECRET_KEY」を指定する。
OpenStack Dashboard
OpenStack Dashboardを用いれば、WebブラウザからNovaを操作できる。具体的には、インスタンスの起動や停止、ボリュームの作成やアタッチなどができる。
まとめ
今回、商用品質の達成を目標としている第2版(Bexar)の内容や、クラウドサービスプロバイダー規模のスケーラビリティの達成を目指している第3版(Cactus)リリースの予定について扱った。また、OpenStackの構成要素のうち、Novaの利用方法を解説した。次回は他の構成要素であるOpenStack ObjectStrage(Swift)や、構成要素間の連携について取り上げる予定である。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
2
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
3
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
4
221人調査で分かった「情シス最大のストレス」は?
-
5
「データストレージの活用方法」に関するアンケート
-
6
「AI時代の統合基盤・エンタープライズAI管理」に関するアンケート
-
7
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
-
8
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
9
本当に安いPCで十分か? “すぐ重くなる”を防ぐノートPC選びの絶対条件
-
10
Claudeの不可視透かしに批判殺到 著作権消失や誤判定に潜む企業リスク
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー