38
ver1.1 2014/12/12 Etsuji Nakai (Twitter @enakai00) openstack Open source software to build public and private clouds. OpenStackの機能概要

Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

Embed Size (px)

Citation preview

Page 1: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

ver1.1 2014/12/12Etsuji Nakai

(Twitter @enakai00)

openstackOpen source software to build public and private clouds.

OpenStackの機能概要

Page 2: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

2

目次■ OpenStackのこれまで

■ OpenStackの機能概要

■ セキュリティ機能とストレージ機能

■ OpenStackの特徴と主要コンポーネント

■ コンポーネントのAPI操作

Page 3: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

3

OpenStackのこれまで

Page 4: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

4

OpenStackとは?

■ OpenStackは、Amazon EC2/S3相当のクラウドインフラを構築するためのオープンソースソフトウェアです。

- マルチテナント型のIaaS (Infrastructure as a Service) 環境を提供します。

- 類似のオープンソースには、CloudStack、Eucalyptusなどがあります。

■ 2010年末に「米RackSpace社」と「NASA」が共同で、OpenStackプロジェクトを立ちあげて、開発をスタートしました。

- RackSpaceが自社開発で利用していた「Swift」(S3相当の機能を提供)とNASAが作りかけていた「Nova」(EC2相当の機能を提供)をオープンソース化して提供して、それらをベースにコミュニティモデルでの開発を開始しました。

単なる仮想化管理ツールではなく、「パブリッククラウドと同等の機能」を

実現することがOpenStackの目的

Page 5: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

5

これまでの開発状況■ これまで、年に2〜3回程度のメジャーバージョンアップが行われています。

■ 当初は、RackSpace社が開発を主導していましたが、2012年にOpenStackの開発を支える公式の非営利団体である「OpenStack Foudation」が設立されました。

2011 2012 2013 2014

Austin2010/10/21

Bexar2011/02/03

Cactus2011/04/15

Diablo2011/09/22

Essex2012/04/05

Folsom2012/09/27

Grizzly2013/04/04

Havana2013/10/17

「最低限動くもの」を目指して地道に開発

EC2/S3相当機能がほぼ完成

OpenStack Foudation設立

Icehouse2014/04/17

Page 6: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

6

OpenStackの機能概要

Page 7: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

7

OpenStackが提供する環境

■ OpenStackのユーザは、WebコンソールやREST APIを用いて、次のようなコンピューティングリソースを利用します。

- 仮想ネットワーク

- 仮想マシンインスタンス

- ブロックボリューム

■ 各ユーザは特定のプロジェクトに所属します。

- プロジェクト内でリソースを共有します。

- プロジェクト全体でのリソース使用量の上限設定、リソース使用状況のレポーティングなどが可能。

■ 環境操作には次のような方法があります。

- GUIダッシュボードから操作

- CLIツールから操作

- API連携ツール(Heat, Ansible, etc )から操作データ領域 ブロックボリューム

仮想ルータ

仮想スイッチ

外部ネットワーク

プロジェクト環境

OpenStackユーザ

OS領域 仮想マシンインスタンス

Page 8: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

8

OpenStackの仮想ネットワークモデル■ プロジェクトごとに仮想ルータを用いて、プライベートなネットワークを構成します。

- 仮想ルータの背後に任意の数の仮想スイッチを作成して、接続します。

- それぞれの仮想スイッチは、プライベートIPの独立したサブネットを持ちます。

■ 仮想マシンインスタンス起動時に、接続する仮想スイッチを選択します。

- DHCPでプライベートIPアドレスが割り当てられます。

- 同じプロジェクトの仮想マシンインスタンス間は、プライベートIPで通信できます。

仮想スイッチ192.168.101.0/24

プロジェクトA仮想ルータ

外部ネットワーク

プロジェクトB仮想ルータ

仮想スイッチ192.168.102.0/24

Page 9: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

9

プライベートIPとフローティングIP■ 外部ネットワークと通信する際は、仮想マシンインスタンスに「フローティングIP」を割り当てます。

- 外部ネットワークのサブネット上で、フローティングIPとして利用可能なIPアドレスをプールしておきます。

- 仮想ルータ上で、フローティングIPとプライベートIPのNATが行われます。

- フローティングIPを割り当てない場合でも、仮想マシンインスタンスから外部ネットワークへの接続は可能です。(仮想ルータのIPアドレスを代表IPとして、マスカレード接続します。)

Webサーバー DBサーバー

プライベートIP プライベートIP

フローティングIP

外部ネットワークからはフローティングIPで接続

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

Page 10: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

10

仮想マシンインスタンスの起動■ 仮想マシンインスタンスを起動する際は、次の項目を指定します。

- インスタンスタイプ

- テンプレートイメージ (*)

- 接続する仮想ネットワーク

- セキュリティグループ

- キーペア

外部ネットワーク

OS領域テンプレート

イメージ

複製

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

セキュリティグループ

形式 説明

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

AMI/AKI/ARI Amazon EC2が利用する形式

qcow2 Linux KVMが利用する形式

VDI VirtualBoxが利用する形式

VMDK VMwareが利用する形式

VHD Hyper-Vが利用する形式

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

Page 11: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

11

セキュリティ機能とストレージ機能

Page 12: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

12

セキュリティグループ■ 仮想マシンインスタンスの受信パケットを「セキュリティグループ」でフィルタリング

します。

- セキュリティグループを作成して、「プロトコル、宛先ポート、送信元IP」などの条件で受信を許可するパケットを指定します。

HTTPの受信許可

Pingの受信許可

セキュリティグループ「default」の仮想マシンからは任意の受信許可

- 仮想マシンインスタンス起動時に適用するセキュリティグループを指定します。

SSHの受信許可

送信は自由に可能

Page 13: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

13

キーペアによるSSHログイン認証■ 事前に公開鍵を登録しておき、仮想マシンインスタンス起動時にゲストOSに埋め込み

ます。

- 公開鍵の登録は、ユーザ個別に行います。複数ユーザでキーペアを共有する形にはなりません。

ユーザ情報データベース

仮想マシンインスタンス

②公開鍵をゲストOSに埋め込み

秘密鍵

公開鍵

①公開鍵を事前に登録

③秘密鍵で認証

Page 14: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

14

インスタンスタイプとディスク領域の関係■ デフォルトで用意されるインスタンスタイプは次のようになります。

- ルートディスクは、テンプレートイメージを複製した後に指定のサイズまで拡張されます。

■ 管理者ユーザは任意のインスタンスタイプを定義することができます。

- 一時ディスクとスワップディスクを与えると、ゲストOSからは下図のように認識されます。

- これらのディスク領域は、仮想マシンインスタンスを停止するとすべて破棄されます。(永続保存が必要なユーザデータは、ブロックボリュームに保存します。)

インスタンスタイプ 仮想CPU メモリルート

ディスク一時

ディスクスワップディスク

m1.tiny 1 512MB 1GB 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

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTvda 252:0 0 20G 0 disk └─vda1 252:1 0 20G 0 part /vdb 252:16 0 5G 0 disk /mntvdc 252:32 0 1G 0 disk [SWAP] スワップディスク

ルートディスク一時ディスク

Page 15: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

15

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

OS領域

テンプレートイメージ

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

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

OS領域

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

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

Page 16: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

16

ブロックボリュームの使い方■ ブロックボリュームは、仮想マシンインスタンスを停止してもそのまま残るので、永続

的なデータ保存領域として使います。

データ領域

③スナップショット作成

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

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

データ領域

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

①新規ブロックボリュームを作成

OS領域 OS領域

Page 17: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

17

ブロックボリュームの使い方

OS領域

仮想マシンインスタンスに接続してゲストOS起動

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

OS領域テンプレート

イメージ

OS領域

スナップショット作成

OS領域

複製

■ ブロックボリュームにゲストOSをインストールして、ブロックボリュームから仮想マシンインスタンスを起動することも可能です。

- 仮想マシンインスタンスを停止しても、OS領域への変更が破棄されずに残ります。

- スナップショットを作成しておき、仮想マシンインスタンスを起動するタイミングで、スナップショットから新しいブロックボリュームを用意することも可能です。

Page 18: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

18

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

現在の使用量 指定期間の累計

Page 19: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

19

プロジェクトのリソース使用量の上限

Page 20: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

20

OpenStackの特徴と主要コンポーネント

Page 21: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

21

OpenStackの主要コンポーネント■ OpenStackでは、機能別にソフトウェアをモジュール化して開発が進められています。

- Swift : オブジェクトストレージ

● ファイル単位で出し入れするだけの単純なファイルストア

- Nova : 仮想マシンの配置決定と起動・停止処理

- Glance : 仮想マシンイメージの管理

● バックエンドにSwift、その他のストレージを使用

- Cinder : ブロックボリュームの提供

● サンプル実装では、Linux LVM + iSCSIソフトウェアターゲットを使用● 外部のストレージ装置をバックエンドにすることも可能

- Keystone : 統合認証機能

- Neutron : 仮想ネットワーク管理機能(Quantumから改名)

● 仮想ネットワークの作成を外部のプラグインモジュール(SDN製品)に移譲● 標準提供のプラグインでは、Linux bridge、もしくは、Open vSwitchを使用

- Horizon : GUIコンソールのサンプル実装

Page 22: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

22

コンポーネント間の連携処理■ Webコンソールで操作をすると、REST API経由で各モジュールに指示が飛びます。ま

た、クライアントは、各モジュールのREST APIを直接操作することも可能です。

- これにより、プログラムコードからの呼び出しによる環境操作の自動化が可能になります。

仮想マシンイメージ

NovaCompute

NovaCompute

Glance Horizon Neutron

管理ネットワーク

LUN

仮想ネットワーク作成

仮想マシン起動

ブロックボリューム提供(iSCSI)

認証サーバ

テンプレートイメージ保存

MySQL

NetworkNode

NovaCompute

Cinder

Keystone

Swift

メッセージキュー

パブリックネットワーク

クライアントPC

Webコンソールアクセステンプレートイメージ検索

テンプレートダウンロード

AMQP

データベース

LUNLUN

Nova

Page 23: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

23

OpenStackの特徴

■ APIで操作する「Programmable Infrastructure」の提供

- 既存のGUI・ワークフローに縛られたくないユーザ層の獲得

- プログラムによるインフラ環境の自動構築・変更に対応

■ スケーラビリティを意識した疎結合アーキテクチャ

- コンピューティングノードの追加が容易/コントローラの負荷分散が可能

- システム設計、運用・管理にはこれまでとは違うノウハウが必要

■ Driver/Pluginによる外部コンポーネントとの連携

- 既存インフラと連携・統合するための作りこみが可能

- サードパーティ製品連携のエコシステム

ここがポイント

Page 24: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

24

カスタマイズスクリプト(User Data)の利用

$ curl http://169.254.169.254/2009-04-04/user-data#!/bin/shecho 'Hello, World' > /etc/motdexit 0

■ 仮想マシンインスタンス起動時に「カスタマイズ・スクリプト(User Data)」を与えると任意のテキストをメタデータとしてゲストOSに受け渡すことができます。

■ Cloud-Initは、カスタマイズ・スクリプトを解釈して、さまざまな自動化を実現します。- 下図はシェルスクリプトを渡して、「/etc/motd」を設定しています。

- この他にもCloud-Init独自の構文で、処理内容を指示することができます。

Page 25: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

25

Puppetと連携したアプリケーション導入例

■ カスタマイズスクリプトからGitHub/Puppetを連携させることで、仮想マシンインスタンスの起動時にアプリケーションの導入・設定をまとめて自動化することができます。

GitHubVM

YUMリポジトリ

アプリ設定情報(Puppetマニフェスト)

カスタマイズ・スクリプト

ソフトウェアパッケージ

httpd

#!/bin/sh -x

GitRepository=https://github.com/enakai00/apache_puppetConfigTag=f18

setenforce 0yum -y install puppet gitRepoName=${GitRepository##*/}mkdir -p /tmp/gittmpcd /tmp/gittmpgit clone $GitRepositorycd $RepoNamegit checkout $ConfigTagpuppet apply main.ppsetenforce 1

Page 26: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

26

コンポーネントのAPI操作

Page 27: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

27

コンポーネントのAPI操作のパターン■ コンポーネントのAPIを操作する際は、2種類のパターンがあります。

- ユーザがダッシュボード経由で各コンポーネントのAPIを操作、もしくは、直接にAPIを操作

- あるコンポーネントが他のコンポーネントに処理を依頼するためにAPIを操作

Horizon(ダッシュボード)

Keystone(ユーザ認証)

Neutron(仮想ネットワーク)

Cinder(ブロックボリューム)

Nova(仮想マシン)

Glance(テンプレート)

テンプレートイメージのダウンロード

ブロックボリュームの接続

仮想ネットワークへの接続

APIアクセス Webブラウザアクセス

Page 28: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

28

API操作のユーザ認証■ コンポーネントのAPIを操作する際は、ユーザ認証が必要となります。

- ユーザ、もしくは、コンポーネントは、KeystoneからAPI操作を許可する「トークン」を取得した後に、操作対象コンポーネントのAPIにリクエストを送信します。(各コンポーネントは、自分自身を表す「ユーザ」がKeystoneに事前に登録されています。)

- Keystoneからトークンを取得する際に、操作対象コンポーネントのAPIのURLを併せて取得します。したがって、ユーザは、KeystoneのAPIのURLだけを知っている必要があります。

Horizon(ダッシュボード)

Keystone(ユーザ認証)

Neutron(仮想ネットワーク)

Cinder(ブロックボリューム)

Nova(仮想マシン)

Glance(テンプレート)

Page 29: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

29

Keystoneのコマンド操作例 (1)■ OpenStack標準のコマンドラインツールは、環境変数でユーザ/パスワード/操作対象テ

ナント/Keystone APIのベースURLを指定します。

- Keystone APIは、管理ユーザ用と一般ユーザ用でURL(ポート番号)が異なります。

- 引数でユーザ等を指定した場合は、そちらが優先されます。

- 次はデフォルトの管理ユーザ「admin」でKeystoneを操作する例です。

# cat keystonerc_admin export OS_USERNAME=adminexport OS_TENANT_NAME=adminexport OS_PASSWORD=714f1ab569a64a3bexport OS_AUTH_URL=http://172.16.1.11:35357/v2.0/export PS1='[\u@\h \W(keystone_admin)]\$ '

# . keystonerc_admin# keystone user-list+----------------------------------+------------+---------+-------------------+| id | name | enabled | email |+----------------------------------+------------+---------+-------------------+| 589a800d70534655bfade5504958afd6 | admin | True | [email protected] || 3c45a1f5a88d4c1d8fb07b51ed72cd55 | cinder | True | cinder@localhost || f23d88041e5245ee8cc8b0a5c3ec3f6c | demo_admin | True | || 44be5165fdf64bd5907d07aa1aaa5dab | demo_user | True | || cd75770810634ed3a09d92b61aacf0a7 | glance | True | glance@localhost || a38561ed906e48468cf1759918735c53 | nova | True | nova@localhost || 157c8846521846e0abdd16895dc8f024 | neutron | True | neutron@localhost |+----------------------------------+------------+---------+-------------------+

管理ユーザの場合はポート番号35357

Page 30: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

30

Keystoneのコマンド操作例 (3)■ 各コマンドラインツールは、「helpサブコマンド」でサブコマンドの一覧や各サブコマ

ンドの詳細が確認できます。

# keystone help ← サブコマンドの一覧# keystone help user-list ← サブコマンド「user-list」の詳細説明

Page 31: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

31

仮想マシンインスタンスの起動■ NovaのAPIに仮想マシンインスタンスの起動を指示すると、Glance / Netronと連携し

て、インスタンスの起動と仮想ネットワーク接続の処理が行われます。

- Novaは、Glance APIを通じて、テンプレートイメージをコンピュートノードにコピーします。

- 同じく、Neutron APIを通じて、仮想マシンインスタンスを仮想ネットワークに接続します。

Horizon(ダッシュボード)

Keystone(ユーザ認証)

Neutron(仮想ネットワーク)

Cinder(ブロックボリューム)

Nova(仮想マシン)

Glance(テンプレート)

テンプレートイメージのダウンロード

仮想ネットワークへの接続

Page 32: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

32

仮想マシンインスタンスの起動 (1)■ 次は、novaコマンドで仮想マシンインスタンスの起動に必要な情報を確認しています。

# . keystonerc_demo_user# nova flavor-list+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | extra_specs |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+| 1 | m1.tiny | 512 | 0 | 0 | | 1 | 1.0 | True | {} || 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True | {} || 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True | {} || 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True | {} || 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True | {} |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+

# nova keypair-list+-------+-------------------------------------------------+| Name | Fingerprint |+-------+-------------------------------------------------+| mykey | 31:8c:0e:43:67:40:f6:17:a3:f8:3f:d5:73:8e:d0:30 |+-------+-------------------------------------------------+

# nova image-list+--------------------------------------+----------+--------+--------+| ID | Name | Status | Server |+--------------------------------------+----------+--------+--------+| 702d0c4e-b06c-4c15-85e5-9bb612eb6414 | Fedora19 | ACTIVE | |+--------------------------------------+----------+--------+--------+

# nova secgroup-list+---------+-------------+| Name | Description |+---------+-------------+| default | default |+---------+-------------+

# nova net-list+--------------------------------------+-------------+------+| ID | Label | CIDR |+--------------------------------------+-------------+------+| 843a1586-6082-4e9f-950f-d44daa83358c | private01 | None || d3c763f0-ebf0-4717-b3fc-cda69bcd1957 | private02 | None || d8040897-44b0-46eb-9c51-149dfe351bbe | ext-network | None |+--------------------------------------+-------------+------+

NovaからGlance APIを呼び出して情報を取得しています。

NovaからNeutron APIを呼び出して情報を取得しています。

Page 33: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

33

仮想マシンインスタンスの起動 (2)■ 次は、確認した情報を元に、仮想マシンインスタンスを起動しています。

# nova boot --flavor m1.small --image Fedora19 --key-name mykey \ --security-groups default --nic net-id=843a1586-6082-4e9f-950f-d44daa83358c vm01+-----------------------------+--------------------------------------+| Property | Value |+-----------------------------+--------------------------------------+| status | BUILD || updated | 2013-11-22T06:22:52Z || OS-EXT-STS:task_state | scheduling || key_name | mykey || image | Fedora19 || hostId | || OS-EXT-STS:vm_state | building || flavor | m1.small || id | f40c9b76-3891-4a5f-a62c-87021ba277ce || security_groups | [{u'name': u'default'}] || user_id | 2e57cd295e3f4659b151dd80f3a73468 || name | vm01 || adminPass | 5sUFyKhgovV6 || tenant_id | 555b49dc8b6e4d92aa74103bfb656e70 || created | 2013-11-22T06:22:51Z || OS-DCF:diskConfig | MANUAL || metadata | {} |(中略)+-----------------------------+--------------------------------------+

# nova list+--------------------------------------+------+--------+-------------------------+| ID | Name | Status | Networks |+--------------------------------------+------+--------+-------------------------+| f40c9b76-3891-4a5f-a62c-87021ba277ce | vm01 | ACTIVE | private01=192.168.101.3 |+--------------------------------------+------+--------+-------------------------+

Page 34: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

34

仮想マシンインスタンスの起動 (3)■ 「カスタマイズスクリプト」を使用する際は、スクリプトを記載したファイルを用意し

て、「--user-data」オプションで指定します。

- 次の例では、カスタマイズスクリプトを指定して仮想マシンインスタンスを起動した後、フローティングIPを割り当てて、実際にログインしています。

# cat hello.txt #!/bin/shecho 'Hello, World!' > /etc/motd

# nova boot --flavor m1.small --image Fedora19 --key-name mykey \ --security-groups default --nic net-id=843a1586-6082-4e9f-950f-d44daa83358c \ --user-data hello.txt vm01

# nova floating-ip-list+--------------+-------------+----------+-------------+| Ip | Instance Id | Fixed Ip | Pool |+--------------+-------------+----------+-------------+| 172.16.1.101 | None | None | ext-network || 172.16.1.102 | None | None | ext-network || 172.16.1.103 | None | None | ext-network || 172.16.1.104 | None | None | ext-network || 172.16.1.105 | None | None | ext-network |+--------------+-------------+----------+-------------+

# nova add-floating-ip vm01 172.16.1.101

# ssh -i ~/mykey.pem [email protected] authenticity of host '172.16.1.101 (172.16.1.101)' can't be established.RSA key fingerprint is b7:24:54:63:1f:02:33:4f:81:a7:47:90:c1:1b:78:5a.Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.16.1.101' (RSA) to the list of known hosts.Hello, World![fedora@vm01 ~]$

Page 35: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

35

ブロックボリュームの作成と接続■ CinderのAPIを通して、ブロックボリュームの作成・削除・スナップショット作成など

が可能です。

- 仮想マシンインスタンスにブロックボリュームを接続する際は、NovaのAPIに指示を出すと、 NovaがCinderのAPIを経由して連携処理を行います。

Horizon(ダッシュボード)

Keystone(ユーザ認証)

Neutron(仮想ネットワーク)

Cinder(ブロックボリューム)

Nova(仮想マシン)

Glance(テンプレート)

ブロックボリュームの接続

Page 36: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

36

ブロックボリュームの作成と接続■ 次は5GBのボリュームを作成して、仮想マシンインスタンスに接続/取り外し、スナップ

ショット作成を行う例です。

# cinder create --display-name volume01 5

# cinder list+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+| 78b4d23b-3b57-4a38-9f6e-10e5048170ef | available | volume01 | 5 | None | false | |+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+

# nova volume-attach vm01 78b4d23b-3b57-4a38-9f6e-10e5048170ef+----------+--------------------------------------+| Property | Value |+----------+--------------------------------------+| device | /dev/vdb || serverId | f40c9b76-3891-4a5f-a62c-87021ba277ce || id | 78b4d23b-3b57-4a38-9f6e-10e5048170ef || volumeId | 78b4d23b-3b57-4a38-9f6e-10e5048170ef |+----------+--------------------------------------+

# nova volume-detach vm01 78b4d23b-3b57-4a38-9f6e-10e5048170ef

# cinder snapshot-create --display-name volume01-snap 78b4d23b-3b57-4a38-9f6e-10e5048170ef# cinder snapshot-list+--------------------------------------+--------------------------------------+-----------+---------------+------+| ID | Volume ID | Status | Display Name | Size |+--------------------------------------+--------------------------------------+-----------+---------------+------+| 3dfa60cb-d0b2-4a10-9d49-817f5cee78b5 | 78b4d23b-3b57-4a38-9f6e-10e5048170ef | available | volume01-snap | 5 |+--------------------------------------+--------------------------------------+-----------+---------------+------+

Page 37: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

37

ブロックボリュームからの起動■ テンプレートイメージを複製してブロックボリュームを作成すると、ブロックボリュー

ムから仮想マシンインスタンスを起動できるようになります。

- 次は、既存のテンプレートイメージからブロックボリュームを作成して、仮想マシンインスタンスを起動する例です。

# cinder create --image-id 702d0c4e-b06c-4c15-85e5-9bb612eb6414 --display-name Fedora19-bootvol 5

# cinder list+--------------------------------------+-----------+------------------+------+-------------+----------+-------------+| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |+--------------------------------------+-----------+------------------+------+-------------+----------+-------------+| 78b4d23b-3b57-4a38-9f6e-10e5048170ef | available | volume01 | 5 | None | false | || bdde9405-8be7-48d5-a879-35e37c97512f | available | Fedora19-bootvol | 5 | None | true | |+--------------------------------------+-----------+------------------+------+-------------+----------+-------------+

# nova boot --flavor m1.small --key-name mykey \ --security-groups default --nic net-id=843a1586-6082-4e9f-950f-d44daa83358c \ --block_device_mapping vda=bdde9405-8be7-48d5-a879-35e37c97512f:::0 vm02

# nova volume-list+----------||-----------+-----------+------------------+------+-------------+--------------------------------------+| ID || | Status | Display Name | Size | Volume Type | Attached to |+----------||-----------+-----------+------------------+------+-------------+--------------------------------------+| 78b4d23b-||e5048170ef | available | volume01 | 5 | None | || bdde9405-||e37c97512f | in-use | Fedora19-bootvol | 5 | None | b4cb7edd-317f-44e9-97db-5a04c41a4510 |+----------||-----------+-----------+------------------+------+-------------+--------------------------------------+

テンプレートイメージのID

ブロックボリュームのID インスタンス停止時にボリュームを削除するかどうか

Page 38: Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要

openstackOpen source software to build public and private clouds.