RDOで体験!
OpenStackの基本機能

レッドハット株式会社
中井悦司 / Etsuji Nakai
Senior Solution Architect
and Cloud Evangelist
v1.0 2013/11/14
RDOで体験!OpenStackの基本機能

自己紹介
 中井悦司(なかいえつじ)
– Twitter @enakai00
 日々の仕事
– Senior Solution Architect and

「Linux独習書の新定番」
書きました!

Cloud Evangelist at Red Hat K.K.
企業システムでオープンソースの活用を希望される
お客様を全力でご支援させていただきます。

 昔とった杵柄
– 素粒子論の研究(超弦理論とか)
– 予備校講師(物理担当)
– インフラエンジニア(Unix/Linux専門)
読者の声より ――
「今はインターネット上に情報が溢れているけど、質の高い入門書が少なく 
 なっているのは不幸なことだと思う。そんな中、この本はすごくいい」
「平易な言葉でありながら、決して足りなくはない。慎重に選ばれています。
 脳みそに染みこんで来ます」
RDOで体験!OpenStackの基本機能

目次
 RDOの紹介
 利用者から見たOpenStackの機能
–
–
–
–

仮想ネットワーク
仮想マシンインスタンス
ブロックボリューム
プロジェクト管理

 メタデータとCloud-Init

(*) 本資料は2013年7月時点のRDO(Grizzly)に基づく情報を提供しています。
RDOで体験!OpenStackの基本機能

RDOの紹介
RDOで体験!OpenStackの基本機能

RDO :
RHELでOpenStackを利用するユーザ向けのコミュニティ活動
 RDOが提供するRHEL用OpenStackは、誰でも無償で利用ができます。

http://special.nikkeibp.co.jp/ts/article/ac0e/143743/
RDOで体験!OpenStackの基本機能

RDO :
RHELでOpenStackを利用するユーザ向けのコミュニティ活動
 RDOは、RHEL/FedoraでOpenStackを利用するユーザのコミュニティです。
 主な活動内容
– RHEL/Fedora用のRPMパッケージを提供
• http://repos.fedorapeople.org/repos/openstack/openstack-grizzly/

– Puppetベースのインストーラ「Packstack」を提供
– QAフォーラムを運営(Red Hatの開発者が回答してくれることもあります。)
OpenStackを創る人々
のコミュニティ

(RHEL/Fedoraで)OpenStackを
使う人々のコミュニティ

OpenStack Foundation

http://openstack.redhat.com
RDOで体験!OpenStackの基本機能

(参考)RDOとPackstackでデモ環境を簡単構築
 下図の道具があれば、オールインワン構成のデモ環境を簡単に構築できます。

手順はこちらを参照

インターネット
インターネットにアクセス
できるネットワーク

「最短手順でRDO(Grizzly)のデモ環境を構築」
http://d.hatena.ne.jp/enakai00/20131022/1382443408

ホストアクセス用NIC
Fedora18

VMアクセス用NIC

em1
em2

Intel-VT/AMD-V
対応サーバ
4GB以上のメモリ
RDOで体験!OpenStackの基本機能

OpenStackが提供するコンピューティングリソース
OpenStackユーザ

 OpenStackのユーザは、Webコンソール/APIを利用して、
次のようなコンピューティングリソースを利用します。
外部ネットワーク

– 仮想ネットワーク
– 仮想マシンインスタンス
– ブロックボリューム
 各ユーザは特定の「プロジェクト」に
所属します。
– プロジェクト内でリソースを共有
– プロジェクト全体でのリソース使用
量の上限設定、リソース使用状況の
レポーティングなどが可能

プロジェクト環境
仮想ルータ

仮想スイッチ

OS領域

データ領域

仮想マシンインスタンス

ブロックボリューム
RDOで体験!OpenStackの基本機能

利用者から見たOpenStackの機能
〜仮想ネットワーク〜
RDOで体験!OpenStackの基本機能

仮想ネットワーク (1)
 プロジェクトごとに仮想ルータを用意して、その背後にプライベートなネットワーク環境
を構成します。
– ブロードバンドルータで家庭内LANをインターネットに接続するような感覚です。
 仮想スイッチを作成して、ルータに接続します。
– それぞれの仮想スイッチは、プライベートIPの独立したサブネットを持ちます。
 仮想マシンインスタンス起動時は、接続する仮想スイッチを選択します。
– DHCPでプライベートIPアドレスが割り当てられます。
– 同じプロジェクトの仮想マシンインスタンス間は、プライベートIPで通信できます。
外部ネットワーク

プロジェクトA
専用ルータ

仮想スイッチ
192.168.101.0/24

プロジェクトB
専用ルータ

仮想スイッチ
192.168.102.0/24
RDOで体験!OpenStackの基本機能

仮想ネットワーク (2)
 外部ネットワークと通信する際は、仮想マシンインスタンスに「フローティングIP」を割
り当てます。
– 外部ネットワークのサブネット上で、フローティングIPとして利用可能なIPアドレスを
プールしておきます。
– 仮想ルータ上で、フローティングIPとプライベートIPのNATが行われます。
– フローティングIPを割り当てない場合でも、仮想マシンインスタンスから外部ネット
ワークへの接続は可能です。(仮想ルータのIPアドレスを代表IPとして、マスカレード
接続します。)
外部ネットワークからは
フローティングIPで接続

フローティングIP
プライベートIP

Webサーバー

インスタンス同士は
プライベートIPで接続
プライベートIP

DBサーバー
RDOで体験!OpenStackの基本機能

セキュリティグループによるパケットフィルタリング
 仮想マシンインスタンスの受信パケットを「セキュリティグループ」でフィルタリングし
ます。
– セキュリティグループを作成して、「プロトコル、宛先ポート、送信元IP」などの条件
で受信を許可するパケットを指定します。
– 仮想マシンインスタンス起動時に適用するセキュリティグループを指定します。

TCP22番は任意の
IPから受信許可

Pingは192.168.0.0/16
からのみ許可

セキュリティグループ「Development」の
仮想マシンインスタンスからは任意のTCP接続を許可
RDOで体験!OpenStackの基本機能

利用者から見たOpenStackの機能
〜仮想マシンインスタンス〜
RDOで体験!OpenStackの基本機能

仮想マシンインスタンスの起動
 仮想マシンインスタンスを起動する際は、次の項目を指定します。
– インスタンスタイプ
– テンプレートイメージ

外部ネットワーク

(*)

– 接続する仮想ネットワーク
– セキュリティグループ
– キーペア
形式

説明

raw

フラットなイメージファイル

AMI/AKI/ARI

Amazon EC2が利用する形式

qcow2

Linux KVMが利用する形式

VDI

VirtualBoxが利用する形式

VMDK

VMwareが利用する形式

VHD

Hyper-Vが利用する形式

セキュリティグループ

テンプレートとしてインポート可能なイメージ形式

テンプレート
イメージ

複製

複数ネットワーク
接続も可能
OS領域

(*) テンプレートイメージ作成機能は、OpenStackは提供しません。外部ツールで作成したものをインポートします。
RDOで体験!OpenStackの基本機能

キーペアによるSSHログイン認証
 事前に公開鍵を登録しておき、仮想マシンインスタンス起動時にゲストOSに埋め込みます。
– 公開鍵の登録は、ユーザ個別に行います。複数ユーザでキーペアを共有する形にはなりま
せん。
仮想マシンインスタンス
③秘密鍵で認証
秘密鍵
公開鍵
②公開鍵をゲストOSに埋め込み

①公開鍵を事前に登録

ユーザー情報データベース
RDOで体験!OpenStackの基本機能

インスタンスタイプの指定
 デフォルトのインスタンスタイプ
– ルートディスクは、テンプレートイメージを複製した後に指定のサイズまで拡張されます。
(m1.tinyでは拡張しません。)
インスタンスタイプ

仮想CPU

メモリ

ルート
ディスク

一時
ディスク

スワップ
ディスク

m1.tiny

1

512MB

0GB

0

0

m1.small

1

2GB

20GB

0

0

m1.medium

2

4GB

40GB

0

0

m1.large

4

4GB

80GB

0

0

m1.xlarge

8

8GB

160GB

0

0

 管理者ユーザは任意のインスタンスタイプを定義することができます。
– 一時ディスクとスワップディスクを与えると、ゲストOSからは下図のように認識されます。
– これらのディスク領域は、仮想マシンインスタンスを削除すると、すべて破棄されます。(永続保
存が必要なユーザデータは、ブロックボリュームに保存します。)
NAME
vda
└─vda1
vdb
vdc

MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
252:0
0 20G 0 disk
252:1
0 20G 0 part /
252:16
0
5G 0 disk /mnt
252:32
0
1G 0 disk [SWAP]

ルートディスク
一時ディスク
スワップディスク
RDOで体験!OpenStackの基本機能

仮想マシンインスタンスの「スナップショット」
 仮想マシンインスタンスの「スナップショット」により、ルートディスクを複製して保存す
ることができます。
テンプレートイメージ

インスタンスの
スナップショット

スナップショットから
仮想マシンインスタンス起動

テンプレートイメージから
仮想マシンインスタンス起動

OS領域

ルートディスクを複製して
スナップショットを作成

OS領域
RDOで体験!OpenStackの基本機能

利用者から見たOpenStackの機能
〜ブロックボリューム〜
RDOで体験!OpenStackの基本機能

ブロックボリュームの使い方
 ブロックボリュームは、仮想マシンインスタンスを停止してもそのまま残るので、永続的な
データ保存領域として使います。

OS領域
データ領域

OS領域

他の仮想マシンインスタンスに
再接続可能(同時接続は不可)

データ領域

②仮想マシンインスタンスに
接続してデータ領域として使用

④スナップショットを複製して
新たなブロックボリュームを作成

①新規ブロックボリュームを作成
③スナップショット作成
RDOで体験!OpenStackの基本機能

ブロックボリュームからの起動
 ブロックボリュームにゲストOSをインストールして、ブロックボリュームから仮想マシンイ
ンスタンスを起動することも可能です。
– 仮想マシンインスタンスを停止しても、OS領域への変更が破棄されずに残ります。
– スナップショットを作成しておき、仮想マシンインスタンスを起動するタイミングで、
スナップショットから新しいブロックボリュームを用意することも可能です。

OS領域
仮想マシンインスタンスに
接続してゲストOS起動
テンプレート
イメージ

OS領域

テンプレートイメージを複製して
ブロックボリュームを作成(*)

OS領域

複製
OS領域

スナップショット作成

(*) この操作はGrizzlyのHorizon Dashboardには搭載されていません。コマンドラインでのAPI操作が必要です。
RDOで体験!OpenStackの基本機能

利用者から見たOpenStackの機能
〜プロジェクト管理機能〜
RDOで体験!OpenStackの基本機能

新規プロジェクト/ユーザの作成
RDOで体験!OpenStackの基本機能

プロジェクト単位のリソース使用レポート

現在の使用量

指定月の累計
RDOで体験!OpenStackの基本機能

プロジェクト全体でのリソース使用量の上限設定
RDOで体験!OpenStackの基本機能

メタデータとCloud-Init
RDOで体験!OpenStackの基本機能

仮想マシンインスタンスのメタデータ
 ゲストOSから「http://169.254.169.254」にアクセスすると、仮想マシンインスタンス固
有の情報が取得できます。これを「メタデータ」と呼びます。
 ゲストOSに「Cloud-Init」というツールを導入すると、仮想マシンインスタンス起動時にメ
タデータを利用して、ゲストOSの自動セットアップを行います。
– 一時ディスクのマウントやスワップディスクの構成は、Cloud-Initが行なっています。
– 公式ドキュメント http://cloudinit.readthedocs.org/en/latest/
メタデータの例
$ curl http://169.254.169.254/2009-04-04/meta-data/hostname
vm03.novalocal
$ curl http://169.254.169.254/2009-04-04/meta-data/local-ipv4
192.168.101.4
$ curl http://169.254.169.254/2009-04-04/meta-data/public-keys/0/openssh-key
Ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5W2IynhVezp+DpN11xdsY/8NOqeF8r7eYqVteeWZSBfnYhKn
8D85JmByBQnJ7HrJIrdMvfTYwWxi+swfFlryG3A+oSll0tT71FLAWnAYz26ML3HccyJ7E2bD66BSditbDITK
H3V66oN9c3rIEXZYQ3A+GEiA1cFD++R0FNKxyBOkjduycvksB5Nl9xb3k6z4uoZ7JQD5J14qnooM55Blmn2C
ルートディスク/一時ディスク/
C2/2KlapxMi0tgSdkdfnSSxbYvlBztGiF3M4ey7kyuWwhE2iPBwkV/OhANl3nwHidcNdBrAGC3u78aTtUEwZ
スワップディスクに対応するデバイス名
tNUqrevVKM/yUfRRyPRNivuGOkvjTDUL/9BGquBX9Q== enakai@kakinoha
$ curl http://169.254.169.254/2009-04-04/meta-data/block-de-mapping/root
/dev/vda
$ curl http://169.254.169.254/2009-04-04/meta-data/block-device-mapping/ephemeral0
/dev/vdb
$ curl http://169.254.169.254/2009-04-04/meta-data/bloe-mapping/swap
/dev/vdc
RDOで体験!OpenStackの基本機能

カスタマイズ・スクリプト(User Data)による自動化
 仮想マシンインスタンス起動時に「カスタマイズ・スクリプト(User Data)」を与えると
任意のテキストをメタデータとしてゲストOSに受け渡すことができます。
 Cloud-Initは、カスタマイズ・スクリプトを解釈して、さまざまな自動化を実現します。
– 下図はシェルスクリプトを渡して、「/etc/motd」を設定しています。
– この他にもCloud-Init独自の構文で、処理内容を指示することができます。

$ curl http://169.254.169.254/2009-04-04/user-data
#!/bin/sh
echo 'Hello, World' > /etc/motd
exit 0
Thank you

RDOで体験! OpenStackの基本機能