SlideShare a Scribd company logo
1 of 75
Download to read offline
OpenStackクラウド基盤構築ハンズオンセミナー

第2日 講義資料 No.1

ver1.3 2014/03/05
1
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

目次
■

OpenStackの主要コンポーネント

■

Nova/Cinderを構成するサービス群

■

スケーラビリティと高可用性を実現するコンポーネント配置

■

クライアントライブラリによるAPI操作

■

(参考)Keystoneのトークン認証

■

(付録)OpenStack 主要APIリスト

注意:本テキストで扱うOpenStackは、RDO(Grizzly)がベースとなります。

2

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

OpenStackの主要コンポーネント

3
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

OpenStackの主要コンポーネント
■

OpenStackでは、機能別にソフトウェアをモジュール化して開発が進められています。
- Swift : オブジェクトストレージ
●

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

- Nova : 仮想マシンの配置決定と起動・停止処理
- Glance : 仮想マシンイメージの管理
●

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

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

サンプル実装では、Linux LVM + iSCSIソフトウェアターゲットを使用

●

外部のストレージ装置をバックエンドにすることも可能

- Keystone : 統合認証機能
- Neutron : 仮想ネットワーク管理機能(Quantumから改名)
●

仮想ネットワークの作成を外部のプラグインモジュール(SDN製品)に移譲

●

標準提供のプラグインでは、Linux bridge、もしくは、Open vSwitchを使用

- Horizon : GUIコンソールのサンプル実装
4
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

コンポーネント間の連携処理
■

Webコンソールで操作をすると、REST API経由で各モジュールに指示が飛びます。ま
た、クライアントは、各モジュールのREST APIを直接操作することも可能です。
- これにより、プログラムコードからの呼び出しによる環境操作の自動化が可能になります。
クライアントPC

パブリックネットワーク

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

Webコンソールアクセス

テンプレート
イメージ検索

Network
Node

仮想ネットワーク作成

Swift

Glance

Horizon

Neutron

Nova

Nova
Nova
Nova
Compute
Compute
Compute
管理ネットワーク

仮想マシン
イメージ

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

仮想マシン起動

Keystone

QPID

MySQL

認証サーバ

メッセージング

データベース

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

Cinder

LUN
LUN
LUN
5

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

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

コンポーネントのAPIを操作する際は、2種類のパターンがあります。
- ユーザがダッシュボード経由で各コンポーネントのAPIを操作、もしくは、直接にAPIを操作
- あるコンポーネントが他のコンポーネントに処理を依頼するためにAPIを操作

データベース
MySQL
共有データ保存
メッセージング
QPID

Keystone
(ユーザ認証)

Webブラウザ
アクセス

APIアクセス

エージェント通信の
メッセージ中継

Neutron
(仮想ネットワーク)

Horizon
(ダッシュボード)

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

Nova
(仮想マシン)

Glance
(テンプレート)

仮想ネットワークへの接続
ブロックボリューム
の接続

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

6

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

API操作のユーザ認証
■

コンポーネントのAPIを操作する際は、ユーザ認証が必要となります。
- ユーザ、もしくは、コンポーネントは、KeystoneからAPI操作を許可する「トークン」を取得し
た後に、操作対象コンポーネントのAPIにリクエストを送信します。(各コンポーネントは、自
分自身を表す「ユーザ」がKeystoneに事前に登録されています。)
- Keystoneからトークンを取得する際に、操作対象コンポーネントのAPIのURLを併せて取得しま
す。したがって、ユーザは、KeystoneのAPIのURLだけを知っている必要があります。

Keystone
(ユーザ認証)

Neutron
(仮想ネットワーク)

Horizon
(ダッシュボード)

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

Nova
(仮想マシン)

Glance
(テンプレート)

7
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystoneによるトークン認証
■

■

OpenStackのクライアントは複数のコンポーネントに多数のリクエストを送信するた
め、リクエストごとにユーザID/パスワードで認証するのは、セキュリティ上の問題を
引き起こす可能性が高くなります。
そこで、認証サーバ(Keystone)からコンポーネントの利用許可証である「トーク
ン」を取得しておき、リクエストの際はトークンIDをコンポーネントに送信します。
- リクエストを受けたコンポーネントは、トークンIDの正当性をKeystoneに問い合わせて確認し
た後に、リクエストを実行します。
- 取得したトークンは一定時間(デフォルトは24時間)で有効期限が切れます。有効期限が切れ
るまでは繰り返し利用できますので、リクエストごとにトークンを取得する必要はありません。
Keystoneサーバ

発行したトークンは
Keystoneサーバに保管
ID=yyyy

トークン発行依頼 
(ユーザID/パスワードで認証)

トークンIDに対応するトークンの情報を確認
(ユーザの権限を確認)

トークンIDを返送

クライアント

 リクエスト送信
(トークンIDを送信)

8

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystoneのコマンド操作例 (1)
■

OpenStack標準のコマンドラインツールは、環境変数でユーザ/パスワード/操作対象テ
ナント/Keystone APIのベースURLを指定します。
- Keystone APIは、管理ユーザ用と一般ユーザ用でURL(ポート番号)が異なります。
- 引数でユーザ等を指定した場合は、そちらが優先されます。
- 次はデフォルトの管理ユーザ「admin」でKeystoneを操作する例です。
Packstackでインストールすると
# cat keystonerc_admin
export OS_USERNAME=admin
/root以下に自動生成されます。
export OS_TENANT_NAME=admin
export OS_PASSWORD=714f1ab569a64a3b
export OS_AUTH_URL=http://172.16.1.11:35357/v2.0/
export PS1='[u@h W(keystone_admin)]$ '

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

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

9
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystoneのコマンド操作例 (2)
■

次はKeystoneに登録されたサービスと、対応するAPIのURLを表示しています。
- 各コンポーネントのコマンドラインツールは、これでリクエストを送信するAPIを確認します。

# keystone service-list
+----------------------------------+----------+----------+----------------------------+
|
id
|
name
|
type
|
description
|
+----------------------------------+----------+----------+----------------------------+
| 5ea55cbee90546d1abace7f71808ad73 | cinder | volume |
Cinder Service
|
| e92e73a765be4beca9f12f5f5d9943e0 | glance | image
| Openstack Image Service
|
| 3631d835081344eb873f1d0d5057314d | keystone | identity | OpenStack Identity Service |
| 8db624ad713e440492aeccac6ab70a90 |
nova
| compute | Openstack Compute Service |
| e9f02d3803ab44f1a369602010864a34 | nova_ec2 |
ec2
|
EC2 Service
|
| 5889a1e691584e539aa121ab31194cca | quantum | network | Quantum Networking Service |
+----------------------------------+----------+----------+----------------------------+
# keystone endpoint-list
+----------------------------------+-----------+------------------------------------------||-+----------------------------------+
|
id
|
region |
publicurl
|| |
service_id
|
+----------------------------------+-----------+------------------------------------------||-+----------------------------------+
| 0e96a30d9ce742ecb0bf123eebf84ac0 | RegionOne | http://172.16.1.11:8774/v2/%(tenant_id)s || | 8db624ad713e440492aeccac6ab70a90 |
| 928a38f18cc54040a0aa53bd3da99390 | RegionOne |
http://172.16.1.11:9696/
|| | 5889a1e691584e539aa121ab31194cca |
| d46cebe4806b43c4b48499285713ac7a | RegionOne |
http://172.16.1.11:9292
|| | e92e73a765be4beca9f12f5f5d9943e0 |
| ebdd4e61571945b7801554908caf5bae | RegionOne | http://172.16.1.11:8776/v1/%(tenant_id)s || | 5ea55cbee90546d1abace7f71808ad73 |
| ebec661dd65b4d4bb12fe67c25b2c77a | RegionOne |
http://172.16.1.11:5000/v2.0
|| | 3631d835081344eb873f1d0d5057314d |
| f569475b6d364a04837af6d6a577befe | RegionOne | http://172.16.1.11:8773/services/Cloud || | e9f02d3803ab44f1a369602010864a34 |
+----------------------------------+-----------+------------------------------------------||-+----------------------------------+
# keystone endpoint-get --service compute
+-------------------+--------------------------------------------------------------+
|
Property
|
Value
|
+-------------------+--------------------------------------------------------------+
| compute.publicURL | http://172.16.99.11:8774/v2/11f9297918c040eab1f1ec2d50d5564c |
+-------------------+--------------------------------------------------------------+

10
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystoneのコマンド操作例 (3)
■

各コマンドラインツールは、「helpサブコマンド」でサブコマンドの一覧や各サブコマ
ンドの詳細が確認できます。
# keystone help
# keystone help user-list

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

11
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Glanceへのテンプレートイメージ登録 (1)
■

起動ディスクのテンプレートイメージをGlanceに登録することで、Novaから利用でき
るようになります。

Keystone
(ユーザ認証)

Neutron
(仮想ネットワーク)

Horizon
(ダッシュボード)

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

Nova
(仮想マシン)

Glance
(テンプレート)

12
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Glanceへのテンプレートイメージ登録 (2)
■

次は、一般ユーザ「demo_user」で、テンプレートイメージをインターネットからダウ
ンロードして登録する例です。

このファイルは
自分で用意します。
一般ユーザの場合は
ポート番号5000

# cat keystonerc_demo_user
export OS_USERNAME=demo_user
export OS_TENANT_NAME=demo
export OS_PASSWORD=passw0rd
export OS_AUTH_URL=http://172.16.1.11:5000/v2.0/
export PS1='[u@h W(keystone_demouser)]$ '
# . keystonerc_demo_user
# glance image-create --name "Fedora19" 
--disk-format qcow2 --container-format bare --is-public true 
--copy-from http://cloud.fedoraproject.org/fedora-19.x86_64.qcow2
# glance image-list
+--------------------------------------+----------+-------------+------------------+-----------+--------+
| ID
| Name
| Disk Format | Container Format | Size
| Status |
+--------------------------------------+----------+-------------+------------------+-----------+--------+
| 702d0c4e-b06c-4c15-85e5-9bb612eb6414 | Fedora19 | qcow2
| bare
| 237371392 | active |
+--------------------------------------+----------+-------------+------------------+-----------+--------+

13
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Neutronによる仮想ネットワーク作成
■

NeutronのAPIを通して、プロジェクトごとに独立した仮想ネットワークを用意します。
- Neutronのコマンド操作の詳細は、「第2日 講義資料 No.2」で説明します。
Keystone
(ユーザ認証)

Neutron
(仮想ネットワーク)

Horizon
(ダッシュボード)

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

Nova
(仮想マシン)

Glance
(テンプレート)

コマンド名は旧名称のquantumです。
Havanaではneutronに変わります。

# . keystonerc_demo_user
# quantum net-list
+--------------------------------------+-------------+-------------------------------------------------------+
| id
| name
| subnets
|
+--------------------------------------+-------------+-------------------------------------------------------+
| 843a1586-6082-4e9f-950f-d44daa83358c | private01
| 9888df89-a17d-4f4c-b427-f28cffe8fed2 192.168.101.0/24 |
| d3c763f0-ebf0-4717-b3fc-cda69bcd1957 | private02
| 23b26d98-2277-4fb5-8895-3f42cde7e1fd 192.168.102.0/24 |
| d8040897-44b0-46eb-9c51-149dfe351bbe | ext-network | 1b8604a4-f39d-49de-a97c-3e40117a7516 192.168.199.0/24 |
+--------------------------------------+-------------+-------------------------------------------------------+

14

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Novaによる仮想マシンインスタンス起動
■

NovaのAPIに仮想マシンインスタンスの起動を指示すると、Glance / Netronと連携し
て、インスタンスの起動と仮想ネットワーク接続の処理が行われます。
- Novaは、Glance APIを通じて、テンプレートイメージをコンピュートノードにコピーします。
- 同じく、Neutron APIを通じて、仮想マシンインスタンスを仮想ネットワークに接続します。
Keystone
(ユーザ認証)

Neutron
(仮想ネットワーク)

Horizon
(ダッシュボード)

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

Nova
(仮想マシン)

Glance
(テンプレート)

仮想ネットワークへの接続
テンプレートイメージ
のダウンロード

15

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

コマンドによる仮想マシンインスタンス起動 (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からGlance APIを呼び出して
情報を取得しています。

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

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

# 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 |
+--------------------------------------+-------------+------+

16

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

コマンドによる仮想マシンインスタンス起動 (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 |
+--------------------------------------+------+--------+-------------------------+
17
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

コマンドによる仮想マシンインスタンス起動 (3)
■

「カスタマイズスクリプト」を使用する際は、スクリプトを記載したファイルを用意し
て、「--user-data」オプションで指定します。
- 次の例では、カスタマイズスクリプトを指定して仮想マシンインスタンスを起動した後、フロー
ティングIPを割り当てて、実際にログインしています。
# cat hello.txt
#!/bin/sh
echo '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 fedora@172.16.1.101
The 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 ~]$

18

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Neutron APIによるフローティングIPの割り当て
■

仮想マシンインスタンスが複数の仮想NICを持つ場合、仮想NICを指定してフローティ
ングIPを割り当てるには、Neutron APIを使用する必要があります。
- プライベートIPに対応するポートIDを確認して、ポートIDを指定して割り当てます。

# nova boot --flavor m1.small --image Fedora19 --key-name mykey --security-groups default 
--nic net-id=843a1586-6082-4e9f-950f-d44daa83358c 
--nic net-id=d3c763f0-ebf0-4717-b3fc-cda69bcd1957 
Vm01
# nova list
+--------------------------------------+------+--------+--------------------------------------------------+
| ID
| Name | Status | Networks
|
+--------------------------------------+------+--------+--------------------------------------------------+
| e8d0fa19-130f-4502-acfe-132962134846 | vm01 | ACTIVE | private01=192.168.101.3; private02=192.168.102.3 |
+--------------------------------------+------+--------+--------------------------------------------------+
# quantum port-list
+--------------------------------------+------+-------------------+------------------------------------+
| id
| name | mac_address
| fixed_ips
|
+--------------------------------------+------+-------------------+------------------------------------+
| 10c3cd17-78f5-443f-952e-1e3e427e477f |
| fa:16:3e:37:7b:a6 | ... "ip_address": "192.168.102.3"} |
| d0057651-e1e4-434c-a81d-c950b9c06333 |
| fa:16:3e:e6:d9:4c | ... "ip_address": "192.168.101.3"} |
+--------------------------------------+------+-------------------+------------------------------------+
# quantum floatingip-list
+--------------------------------------+------------------+---------------------+---------+
| id
| fixed_ip_address | floating_ip_address | port_id |
+--------------------------------------+------------------+---------------------+---------+
| 06d24f23-c2cc-471f-a4e6-59cf00578141 |
| 171.16.1.101
|
|
| 89b49a78-8fd7-461b-8fe2-fba4a341c8a2 |
| 172.16.1.102
|
|
+--------------------------------------+------------------+---------------------+---------+
# quantum floatingip-associate 06d24f23-c2cc-471f-a4e6-59cf00578141 d0057651-e1e4-434c-a81d-c950b9c06333

19

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

キーペアとセキュリティグループの操作
■

キーペアの作成・登録、セキュリティグループの追加など、セキュリティ関連の操作も
novaコマンドで実施できます。
- 次は、キーペア「key01」を作成・登録して、秘密鍵を「~/.ssh/key01.pem」に保存します。
# nova keypair-add key01 > ~/.ssh/key01.pem
# chmod 600 ~/.ssh/key01.pem

- 次は、既存のキーペアについて、公開鍵を「key02」として登録します。
# nova keypair-add --pub-key ~/.ssh/id_rsa.pub key02

- 次は、セキュリティグループ「group01」を作成して、TCP22番ポートへのアクセスを許可しま
す。
# nova secgroup-create group01 "My security group."
# nova secgroup-add-rule group01 tcp 22 22 0.0.0.0/0
■

セキュリティグループについては、今後、novaコマンドでは設定できない機能が追加されていく可
能性があるため、quantum (neutron) コマンドでの設定方法も知っておくとよいでしょう。
# quantum security-group-create group01 --description "My security group."
# quantum security-group-rule-create --protocol tcp 
--port-range-min 22 --port-range-max 22 
--remote-ip-prefix "0.0.0.0/0" group01

20
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Cinderによるブロックボリューム作成
■

CinderのAPIを通して、ブロックボリュームの作成・削除・スナップショット作成など
が可能です。
- 仮想マシンインスタンスにブロックボリュームを接続する際は、NovaのAPIに指示を出すと、
NovaがCinderのAPIを経由して連携処理を行います。

Keystone
(ユーザ認証)

Neutron
(仮想ネットワーク)

Horizon
(ダッシュボード)

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

Nova
(仮想マシン)

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

Glance
(テンプレート)

21

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Cinderによるブロックボリューム作成
■

次は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 auto
+----------+--------------------------------------+
| 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

22
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

ブロックボリュームからのインスタンス起動
■

テンプレートイメージを複製してブロックボリュームを作成すると、ブロックボリュー
ムから仮想マシンインスタンスを起動できるようになります。
- 次は、既存のテンプレートイメージからブロックボリュームを作成して、仮想マシンインスタン
スを起動する例です。(起動時の「--image」オプションは意味を持ちませんが、ダミーで指定
する必要があります。)
テンプレートイメージのID

# 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 --image Fedora19 --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

ブロックボリュームのID

インスタンス停止時にボリュームを
削除するかどうか

# 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 |
+----------||-----------+-----------+------------------+------+-------------+--------------------------------------+
23
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

メモとしてお使いください

24
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

メモとしてお使いください

25
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

メモとしてお使いください

26
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Nova/Cinderを構成するサービス群

27
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Novaを構成するサービス群
コントローラノード
Nova API

REST APIを提供

コンピュートノード

特定のハイパーバイザに
対応するためのドライバ

Nova Compute

インスタンスを起動
するノードを決定

Compute Driver

Libvirt
インスタンス
起動指示

Nova Scheduler

起動
仮想マシン
インスタンス

仮想マシン
インスタンス

qcow2
オーバーレイファイル

リソース情報確認

qcow2
オーバーレイファイル

リソース情報更新

Nova Conductor
DBアクセスの
Proxyサービス

Database
Glance

/var/lib/nova/instances/<ID>
オーバーレイ

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

メッセージングサーバ経由の通信

ダウンロードしたイメージは
キャッシュして再利用

qcow2
ベースイメージ
/var/lib/nova/instances/_base
28

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

メッセージングサーバについて
■

同じコンポーネントのサービス群は、メッセージングサーバを介して相互通信します。
- 通信用途ごとの「トピック」があり、送信側は、特定のトピックにメッセージを配信します。受
信側は、購読中のトピックに入ったメッセージを定期的に取得します。
- トピックに入れるメッセージは、「購読中の受信者全員が受け取ること」「購読中の受信者のど
れか1つだけが受け取ること」などの受信条件が設定されます。
- 複数のサービスが同じトピックにメッセージを配信することができますので、「N : M」の非同
期通信が実現されます。
- OpenStackでは、メッセージングサーバには、RabbitMQ、もしくは、QPIDを使用します。
メッセージングサーバ
サービス

トピックA

メッセージ受信
サービス
サービス

メッセージ送信
トピックB

サービス

・・・

トピックAを購読中の
サービス群
29

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

qcow2ディスイメージについて
■

■

qcow2は、仮想マシンのディスクイメージ用に設計されたイメージファイル形式で、次
のような特徴を持ちます。
ファイルサイズを動的に増加
- 論理的なディスクイメージのサイズに対して、実際にデータが書かれている分だけの物理ディス
クを使用します。論理サイズの拡張も可能です。

■

ベースイメージファイルと差分イメージファイルを分割して利用可能
- 仮想マシン起動時は、ベースイメージの内容が見えていますが、仮想マシンから書き込んだ変更
は、差分イメージファイルに書き込まれます。
- 複数の仮想マシンでベースイメージを共有することで、物理ディスクの使用量を低減することが
できます。

■

複数のスナップショットを保持可能
- スナップショットを作成しておくと、過去のスナップショットの状態に内容を戻したり、特定の
スナップショットの内容をコピーして新規イメージを作成することができます。

30
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

qcow2ディスイメージの操作
■

qcow2ディスクイメージは、qemu-imgコマンドで操作します。
5GBのイメージファイルを作成

# qemu-img create -f qcow2 baseimage.qcow2 5G
Formatting 'baseimage.qcow2', fmt=qcow2 size=5368709120 encryption=off
cluster_size=65536 lazy_refcounts=off
baseimg.qcow2をベースとして
差分イメージを作成
# qemu-img create -f qcow2 -b baseimage.qcow2 layerimage.qcow2
Formatting 'layerimage.qcow2', fmt=qcow2 size=5368709120
backing_file='baseimage.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
# qemu-img info layerimage.qcow2
image: layerimage.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 196K
cluster_size: 65536
backing file: baseimage.qcow2
スナップショットを作成
# qemu-img snapshot -c snap01 layerimage.qcow2
# qemu-img snapshot -l layerimage.qcow2
Snapshot list:
ID
TAG
VM SIZE
DATE
VM CLOCK
1
snap01
0 2013-11-22 17:08:02
00:00:00.000

スナップショットから
新規イメージを複製

# qemu-img convert -f qcow2 -O qcow2 -s snap01 layerimage.qcow2 copiedimage.qcow2
(参考)
 https://access.redhat.com/site/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html-single/  
 Virtualization_Administration_Guide/index.html#sect-Virtualization-Tips_and_tricks-Using_qemu_img

31

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

公開鍵の書き込みについて
■

■

Nova Computeは仮想マシンインスタンスを起動する前に、ローカルにあるディスクイ
メージ内の「 /root/.ssh/authorized_keys」に指定された公開鍵を書き込みます。
公開鍵の情報はメタデータからも参照できるので、Cloud-Initによって公開鍵認証の設
定を行うことも可能です(*)。
- 典型的には、rootによる直ログインを禁止した上で、ログイン用のユーザを作成して、そのユー
ザに対して公開鍵認証を設定します。
メタデータから公開鍵を参照する例
$ 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

(*) 特にブロックボリュームから起動する場合は、Nova Computeによる公開鍵の書き込みに失敗するので、   
  Cloud-Initによる公開鍵設定が必須となります。
32
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

ブロックボリュームの使い方と対応するAPI
OS領域
データ領域

OS領域

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

データ領域

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

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

①新規ブロックボリュームを作成
③スナップショット作成

テンプレート
イメージ

OS領域

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

■

Cinder API
- volume create/delete/list/show
(create from snapshot, image)

OS領域

- snapshot create/delete/list/show
■

Nova API
- volume attach/detach

33

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Nava/Cinder連携の全体像
■

■

ブロックストレージは、典型的には、iSCSIストレージ装置のLUNとして用意されます。
この時、Cinderは、iSCSIストレージ装置をコントロールする役割を持ちます。
Nova Computeは、ホストLinuxに接続したLUNを仮想ディスクとしてVM接続します。
Nova Compute
VMインスタンス
/dev/vdb

Cinder
LUNの作成・公開を指示
ストレージ装置

仮想ディスク

Linux KVM
/dev/sdX

iSCSI LUN

iSCSI Target

iSCSI SW
Initiator
34
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Cinderを構成するサービス群
■

ストレージ装置ごとに対応するVolume DriverがLUNの構成を実施します。
- 複数タイプのストレージ装置を利用する場合、Cinder Schedulerが使用するストレージを選択し
ます。

コントローラノード

REST APIを提供

Cinder API

Cinder-Volume

特定のストレージ装置に
対応するためのドライバ

ストレージ装置

Volume Driver
ボリュームの
情報を共有

Cinder Scheduler

ボリュームの特性に
応じたドライバの選択

LUN
iSCSI接続

Database

メッセージングサーバ経由の通信

ドライバの指示に従って
LUNを用意して公開

iSCSIでホストLinuxに
接続したLUNを仮想ディスク
としてVMにアタッチ

Nova Compute
REST APIを提供

Nova API
35

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

LVM/tgtdによる実装例
■

Cinderが標準提供するLVMドライバでは、LVMで作成した論理ボリュームをtgtdで
iSCSI LUNとして公開します。スナップショットの作成には、LVMのスナップショット
を利用します(差分領域のサイズは、元のLVと同じサイズ)。
Nova Compute

Cinder
論理ボリュームを作成して、
iSCSI LUNとして公開

VMインスタンス
/dev/vdb

仮想ディスク

Linux KVM
/dev/sdX

iSCSI LUN

VG: cinder-volumes

LV

iSCSI SW
Target (tgtd)

iSCSI SW
Initiator
36
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

NFSドライバの利用
■

Cinderが標準提供するNFSドライバでは、NFSサーバ上にディスクイメージファイルを
作成して、 ComputeノードからNFSマウントして利用します。

Nova Compute

Cinder

VMインスタンス
/dev/vdb

NFSマウントして、
ディスクイメージ
ファイルを作成

仮想ディスク

NFSサーバ
Linux KVM
・・・
・・・

NFSマウント
37
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

GlusterFSドライバの利用
■

GlusterFSの分散ファイルシステム上にディスクイメージを配置するドライバも提供さ
れています。
- 現在は、FUSEマウントによるアクセスですが、今後、GlusterFSのAPIライブラリ(libgfapi)に
よるダイレクトアクセスにも対応する予定です。

Cinder

Nova Compute
VMインスタンス
/dev/vdb

仮想ディスク

GlusterFSクラスタ

FUSEマウントして、
ディスクイメージ
ファイルを作成

・・・
Linux KVM
・・・

FUSEマウント

38

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

スケーラビリティと高可用性を
実現するコンポーネント配置

39
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

コンピュートノードのスケールアウト構成
■

コンピュートノードを追加して、起動可能な仮想マシンインスタンスの数を増やします。

コントローラノード
●
●
●
●
●

APIサービス群
Horizonダッシュボード
L2/L3/DHCP Agent
データベース (MySQL)
メッセージング (QPID)

コンピュートノード
●
●
●

KVMハイパーバイザ
Nova Compute
L2 Agent

コンピュートノード
●
●
●

スケールアウト

KVMハイパーバイザ
Nova Compute
L2 Agent
40
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

ネットワークノードの分離構成 (1)
■

ネットワークノードを独立させて、ネットワーク処理の性能を確保します。
- ネットワークノード自身をスケールアウトさせる際は、外部のSDNコンポーネントの利用が必要
です。OpenStack標準機能としてのネットワークノードのスケールアウト機能は、現在開発計画
中です。

コントローラノード
●
●
●
●

APIサービス群
Horizonダッシュボード
データベース (MySQL)
メッセージング (QPID)

コンピュートノード
●
●
●

KVMハイパーバイザ
Nova Compute
L2 Agent

ネットワークノード
●

L2/L3/DHCP Agent

コンピュートノード
●
●
●

KVMハイパーバイザ
Nova Compute
L2 Agent

スケールアウト

41

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

ネットワークノードの分離構成 (2)
■

下図は、ネットワークノードを分離した場合のネットワーク構成例です。

パブリックネットワーク
プライベートネットワーク
eth0

eth0

IP

IP

eth1

eth2

br-ex

br-priv
br-int

NAT

コントローラノード

ネットワークノード

eth0
IP

eth1
br-priv

eth0
IP

eth1
br-priv

br-int

br-int

VM

・・・

VM

コンピュートノード

42
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

コントローラ群の分離構成
■

さらに、コントローラノード内のコンポーネントを別々のサーバに配置します。

データベース

Keystoneサービス
Glanceサービス

●

データベース (MySQL)

メッセージング

Cinderサービス
●

ネットワークノード
●

L2/L3/DHCP Agent

メッセージング (QPID)

Novaサービス
Horizon
●

Horizonダッシュボード

コンピュートノード

コンピュートノード
43
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

APIサービス / Horizonのスケールアウト
■

APIサービス群とHorizonダッシュボードは、ロードバランサで負荷分散が可能です。

ロードバランサ

ロードバランサ

ロードバランサ

ロードバランサ

ロードバランサ

Keystoneサービス
スケールアウト

Glanceサービス
スケールアウト

Cinderサービス
スケールアウト

Novaサービス
スケールアウト

Horizon
スケールアウト
44
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

データベースとメッセージングのHA構成
■

ロードバランサ自体は、HAクラスタによって可用性を高めます。データベースサーバ
とメッセージングサーバーも同様にHAクラスタ化で可用性を高めます
- データベース (MySQL)は、クラスタに構成して負荷分散を行うことも可能です。あまり一般的な
構成ではありませんが、「Galera Cluster (MySQL)」などの技術が利用できます。

×
×
×

障害発生!

フェイルオーバ

ロードバランサ

ロードバランサ
障害発生!

フェイルオーバ

データベース

データベース

障害発生!

メッセージング

フェイルオーバ

メッセージング
45
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

HA/ロードバランス構成の参考資料
■

HAクラスタのロードバランサの具体的な設定は、次の資料が参考になります。
- RDO HighlyAvailable and LoadBalanced Control Services
●

http://openstack.redhat.com/RDO_HighlyAvailable_and_LoadBalanced_Control_Services

46
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

クライアントライブラリによるAPI操作

47
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Python用クライアントライブラリ
■

Python用のクライアントライブラリを使用 startvm.py
すると、Pythonスクリプトを用いて、
#!/usr/bin/python
import os
OpenStackのAPIを操作することができま
import novaclient.v1_1.client as nvclient
す。右図は仮想マシンインスタンスを起動す # Network ID to which the instance will attach.
netid='541bb203-f13c-4eb7-ac91-2432b389572f'
る簡単なスクリプトの例です
- 本講座の演習環境では、下記のクライアントラ
イブラリのパッケージが導入されています。
# rpm -qa | grep -E "python-.*client"
python-cinderclient-1.0.4-1.fc19.noarch
python-novaclient-2.13.0-1.fc18.noarch
python-glanceclient-0.9.0-3.fc19.noarch
python-quantumclient-2.2.1-3.fc19.noarch
python-keystoneclient-0.2.3-7.fc19.noarch
python-swiftclient-1.4.0-1.fc19.noarch

実行例

creds = {}
creds['username'] = os.environ['OS_USERNAME']
creds['api_key'] = os.environ['OS_PASSWORD']
creds['auth_url'] = os.environ['OS_AUTH_URL']
creds['project_id'] = os.environ['OS_TENANT_NAME']
nova = nvclient.Client(**creds)
image = nova.images.find(name="Fedora19")
flavor = nova.flavors.find(name="m1.tiny")
instance = nova.servers.create(
name="test", image=image, flavor=flavor,
key_name="mykey", nics=[{'net-id':netid}])

# cat keystonerc_demo_user
export OS_USERNAME=demo_user
export OS_TENANT_NAME=demo
export OS_PASSWORD=passw0rd
export OS_AUTH_URL=http://172.16.1.11:5000/v2.0/
export PS1='[u@h W(keystone_demo_user)]$ '
# . keystonerc_demo_user
# ./startvm.py
# nova list
+--------------------------------------+------+--------+-------------------------+
| ID
| Name | Status | Networks
|
+--------------------------------------+------+--------+-------------------------+
| 3002c2db-b7ea-4e02-8460-ff570a07a215 | test | ACTIVE | private01=192.168.101.3 |
+--------------------------------------+------+--------+-------------------------+

48

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

クライアントライブラリの使い方 (1)
■

クライアントライブラリを使用する際は、はじめに各モジュール(Keystone, Nova,
Cinder, Glance)のクライアントオブジェクトを取得します。
- 下図は、クライアントオブジェクト(keystone, nova, cinder, glance)を取得するサンプルで
す。コマンドラインツールと同じ環境変数をセットした状態で実行します。
clients.py
#!/usr/bin/python
import os
import keystoneclient.v2_0.client as kclient
import novaclient.v1_1.client as nclient
import glanceclient.v1.client as gclient
import cinderclient.v1.client as cclient
_keystone_creds = {}
_keystone_creds['username'] = os.environ['OS_USERNAME']
_keystone_creds['password'] = os.environ['OS_PASSWORD']
_keystone_creds['auth_url'] = os.environ['OS_AUTH_URL']
_keystone_creds['tenant_name'] = os.environ['OS_TENANT_NAME']
_nova_creds = {}
_nova_creds['username'] = os.environ['OS_USERNAME']
_nova_creds['api_key'] = os.environ['OS_PASSWORD']
_nova_creds['auth_url'] = os.environ['OS_AUTH_URL']
_nova_creds['project_id'] = os.environ['OS_TENANT_NAME']
keystone = kclient.Client(**_keystone_creds)
nova = nclient.Client(**_nova_creds)
cinder = cclient.Client(**_nova_creds)
_glance_ep = keystone.service_catalog.url_for(
service_type='image', endpoint_type='publicURL')
glance = gclient.Client(_glance_ep, token=keystone.auth_token)
49
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

クライアントライブラリの使い方 (2)
■

先に取得したクライアントオブジェクトは、自身が管理する各種コンポーネントのマ
ネージャオブジェクトをメンバに持ちます。マネージャオブジェクトのメソッドで、
個々のコンポーネントを表すオブジェクトを取得して利用します。Glance, Cinder,
Novaの主要なマネージャオブジェクトは次のとおりです。
- Glance
●

glance.images: Imageマネージャ(imageオブジェクトを扱う)

- Cinder
●

cinder.volumes: Volumeマネージャ(volumeオブジェクトを扱う)

●

cinder.volume_snapshots: Snapshotマネージャ(snapshotオブジェクトを扱う)

- Nova
●

nova.servers: Serverマネージャ(serverオブジェクトを扱う)

●

nova.floating_ips: Floating IPマネージャ(floating_ipオブジェクトを扱う)

●

nova.security_groups: Security Groupマネージャ(security_groupオブジェクトを扱う)

●

nova.security_group_rules: Security Group Rulesマネージャ(security_group_ruleオブジェクトを扱う)

●

nova.flavors: Flavorマネージャ(flavorオブジェクトを取り扱う)

●

nova.keypairs: Keypairマネージャ(keypairオブジェクトを取り扱う)

●

その他に「nova.images」と「nova.networks」のマネージャから、imageオブジェクトとnetworkオブジェ
クトが扱えます。本来は、CinderとNeutronのクライアントを使うべきですが、インスタンス起動時にテンプ
レートやネットワークのIDを検索する際など、簡易的に利用するのに便利です。
50
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

クライアントライブラリの使い方 (3)
■

次は、仮想マシンインスタンスを起動して、ブロックボリュームを作成・接続した後、
フローティングIPを割り当てるサンプルです。
- 先の「clients.py」と同じディレクトリに置いて実行します。
launch_vm.py
#!/usr/bin/python
from clients import nova, glance, cinder
import time
image = nova.images.find(name='Fedora19')
flavor = nova.flavors.find(name='m1.tiny')
net = nova.networks.find(label='private01')
instance = nova.servers.create(
name="vm01", image=image, flavor=flavor,
key_name="mykey", nics=[{'net-id':net.id}])
volume = cinder.volumes.create(size=1, display_name='volume01')
while instance.status == 'BUILD':
print "Waiting status to be active."
time.sleep(10)
instance = nova.servers.get(instance.id)
while volume.status == 'creating':
time.sleep(1)
volume = cinder.volumes.get(volume.id)
nova.volumes.create_server_volume(instance.id, volume.id, '/dev/vdb')
for floating_ip in nova.floating_ips.list():
if floating_ip.instance_id == None:
instance.add_floating_ip(floating_ip)
print "Floating IP: %s" % floating_ip.ip
break

51

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

クライアントライブラリの参考資料
■

OpenStackのPython Client Libraryの使い方をサンプルコードで紹介
- http://d.hatena.ne.jp/enakai00/20131215/1387109226

■

各マネージャとコンポーネントオブジェクトの主要メソッドは、下記のオンラインドキュメントで
確認します。
#
#
#
#
#
#
#
#
#
#
#

pydoc
pydoc
pydoc
pydoc
pydoc
pydoc
pydoc
pydoc
pydoc
pydoc
pydoc

glanceclient.v1.images
cinderclient.v1.volumes
cinderclient.v1.volume_snapshots
novaclient.v1_1.servers
novaclient.v1_1.flavors
novaclient.v1_1.floating_ips
novaclient.v1_1.security_groups
novaclient.v1_1.security_group_rules
novaclient.v1_1.keypairs
novaclient.v1_1.images
novaclient.v1_1.networks

52
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

メモとしてお使いください

53
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

メモとしてお使いください

54
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

(参考)Keystoneのトークン認証

55
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystoneによる認証処理の流れ (1)
■

OpenStackのサービスを利用するユーザは、Keystoneから「トークン」(サービス利用
証)を取得して、該当サービスのAPIにリクエストを送信します。
- トークン本体はKeystone内部に保管されており、ユーザはトークンを特定するIDをAPIに送信し
ます。一定時間(デフォルトでは24時間)経過すると保管されたトークンは破棄されます。

ユーザ

ユーザ名/パスワード送信

ID=xxxx

ID=xxxx
UnscopedトークンID返送
ここで、自分が利用できる
プロジェクトが分かる
特定のプロジェクトを利用
するためのトークン
(Scopedトークン)を要求

Keystone

プロジェクト情報リクエスト
※ UnscopedトークンIDの代わりに
ユーザ名/パスワードを送信してもよい

ID=xxxx
プロジェクト情報返送
Scopedトークン生成要求

ID=yyyy

ID=xxxx
トークンIDと併せて、
各サービスAPIのURL
が返送される

Unscopedトークン生成

ID=yyyy
ScopedトークンID返送

Scopedトークン生成

56

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystoneによる認証処理の流れ (2)
■

エンドユーザは、サービスエンドポイント(サービスのAPI)にScopedトークンのIDと
共にサービスのリクエストを送信します。
- サービスエンドポイントは、トークンIDを元に該当ユーザの属性をKeystoneから取得して、サー
ビスの利用可否を判断します。
Keystone

サービスエンドポイント

ユーザ

先にURLを取得した
サービスAPIリクエスト

ID=yyyy

サービスリクエスト
ID=yyyy

Scopedトークン
ユーザ属性取得
ID=yyyy
ユーザ属性返送
ユーザ属性に応じて、
リクエストを処理

リクエスト処理結果返送
57
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystoneに対するリクエスト/レスポンスの例 (1)
■

Unscopedトークンを取得する例です。

ID=xxxx
[POST] http://keystone:5000/tokens
Header:
{'Content-Type': 'application/json'}
Request:
{
"auth":{
"passwordCredentials":{
"username":"demo_user",
"password":"xxxxxxxx"
}
}
}

(参考)これを実行するPythonスクリプトの例
http://d.hatena.ne.jp/enakai00/20131120/1385022558

Responce:
{
"access": {
"token": {
"issued_at": "2013-11-21T08:36:25.921898",
"expires": "2013-11-22T08:36:25Z",
"id": "149226c5f191445b90d7bb45925ed9f1"
},
"serviceCatalog": [],
UnscopedトークンのID
"user": {
"username": "demo_user",
"roles_links": [],
"id": "44be5165fdf64bd5907d07aa1aaa5dab",
"roles": [],
"name": "demo_user"
},
"metadata": {
"is_admin": 0,
"roles": []
}
}
}
58
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystoneに対するリクエスト/レスポンスの例 (2)
■

Unscopedトークンを利用して、プロジェクト情報を取得する例です。

ID=xxxx
[GET] http://keystone:5000/tenants
Header:
{'Content-Type': 'application/json',
'X-Auth-Token': '149226c5f191445b90d7bb45925ed9f1'}

Responce:
{
"tenants": [
{
ユーザが属する
"enabled": true,
プロジェクト
"description": "",
"name": "production",
"id": "ee18bc8d37184ed0b013cd612c92f45a"
},
{
ユーザが属する
"enabled": true,
プロジェクト
"description": "",
"name": "demo",
"id": "f057a8457a8144b48fded7e6ba644e92"
}
],
"tenants_links": []
}

59
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystoneに対するリクエスト/レスポンスの例 (3)
■

Scopedトークンを取得する例です。
ID=xxxx

ID=yyyy
[POST] http://keystone:5000/tokens
Header:
{'Content-Type': 'application/json'}
Request:
{
"auth":{
"tenantName":"demo",
"token":{
"id":"149226c5f191445b90d7bb45925ed9f1"
}
}
}

レスポンスは次ページ参照

60
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystoneに対するリクエスト/レスポンスの例 (4)
■

Scopedトークン取得に対するレスポンスです。
Responce:
{
"access": {
"token": {
"issued_at": "2013-11-21T08:36:33.995777",
"expires": "2013-11-22T08:36:25Z",
"id": "8312676d28b546d0b801b7b44dfdf70f",
ScopedトークンのID
"tenant": {
"enabled": true,
"description": "",
"name": "demo",
"id": "f057a8457a8144b48fded7e6ba644e92"
}
},
"serviceCatalog": [
{
サービスエンドポイントの情報
"endpoints_links": [],
"endpoints": [
{
"adminURL": "http://10.64.200.97:8774/v2/f057a8457a8144b48fded7e6ba644e92",
"region": "RegionOne",
"publicURL": "http://10.64.200.97:8774/v2/f057a8457a8144b48fded7e6ba644e92",
"internalURL": "http://10.64.200.97:8774/v2/f057a8457a8144b48fded7e6ba644e92",
"id": "9aed292e70e9468499dd6c77e7a258f3"
}
],
"type": "compute",
"name": "nova"
},
...
61
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

メモとしてお使いください

62
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

(付録)OpenStack 主要APIリスト

(参考)OpenStack API Reference http://api.openstack.org/api-ref.html

63

Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystone API
■

一般ユーザ向けAPI

64
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Keystone API
■

管理ユーザ向けAPI

65
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Glance API

66
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Neutron API
■

Network API

■

Subnet API

67
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Neutron API
■

Ports API

68
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Nova API
■

Versions API

■

Extensions API

■

Limits API

69
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Nova API
■

Server API

■

Server Metadata API

70
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Nova API
■

Server Address API

■

Server Actions API

71
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Nova API
■

Flavors API

■

Images API

■

Image Metadata API

72
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

Cinder API

73
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
第2日 講義資料 No.1

メモとしてお使いください

74
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
75
Copyright (C) 2014 National Institute of Informatics, All rights reserved.

More Related Content

What's hot

OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたOpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたTakashi Umeno
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1Etsuji Nakai
 
OpenStack-Ansibleで作るOpenStack HA環境 Kilo版
OpenStack-Ansibleで作るOpenStack HA環境 Kilo版OpenStack-Ansibleで作るOpenStack HA環境 Kilo版
OpenStack-Ansibleで作るOpenStack HA環境 Kilo版VirtualTech Japan Inc.
 
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニックRed Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニックEtsuji Nakai
 
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOFVirtualTech Japan Inc.
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2Etsuji Nakai
 
OpenStackをさらに”使う”技術 概要と基礎操作
OpenStackをさらに”使う”技術 概要と基礎操作OpenStackをさらに”使う”技術 概要と基礎操作
OpenStackをさらに”使う”技術 概要と基礎操作irix_jp
 
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料VirtualTech Japan Inc.
 
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版VirtualTech Japan Inc.
 
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料Etsuji Nakai
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよnpsg
 
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...VirtualTech Japan Inc.
 
RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門Etsuji Nakai
 
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloudNaoto Gohko
 
OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習Etsuji Nakai
 
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)Etsuji Nakai
 

What's hot (20)

OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたOpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみた
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
 
OpenStack構築手順書 Juno版
OpenStack構築手順書 Juno版OpenStack構築手順書 Juno版
OpenStack構築手順書 Juno版
 
OpenStack構築手順書 Kilo版
OpenStack構築手順書 Kilo版OpenStack構築手順書 Kilo版
OpenStack構築手順書 Kilo版
 
OpenStack-Ansibleで作るOpenStack HA環境 Kilo版
OpenStack-Ansibleで作るOpenStack HA環境 Kilo版OpenStack-Ansibleで作るOpenStack HA環境 Kilo版
OpenStack-Ansibleで作るOpenStack HA環境 Kilo版
 
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニックRed Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
 
OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書
 
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
 
OpenStackをさらに”使う”技術 概要と基礎操作
OpenStackをさらに”使う”技術 概要と基礎操作OpenStackをさらに”使う”技術 概要と基礎操作
OpenStackをさらに”使う”技術 概要と基礎操作
 
OpenStack Icehouse構築手順書
OpenStack Icehouse構築手順書OpenStack Icehouse構築手順書
OpenStack Icehouse構築手順書
 
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
 
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
 
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
 
RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門
 
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
 
OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習
 
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
 

Similar to OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1

openstack_neutron-ovs_osc2014tf_20141019
openstack_neutron-ovs_osc2014tf_20141019openstack_neutron-ovs_osc2014tf_20141019
openstack_neutron-ovs_osc2014tf_20141019Takehiro Kudou
 
OpenStack Project Update Neutron Update
OpenStack Project Update Neutron UpdateOpenStack Project Update Neutron Update
OpenStack Project Update Neutron UpdateHirofumi Ichihara
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」Nobuyuki Tamaoki
 
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
20150713-OpenStack-5thbirthday-kilo-liberty-and-towardsAkihiro Motoki
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観Yamato Tanaka
 
OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告Mitsuhiro SHIGEMATSU
 
Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)Akihiro Motoki
 
日本仮想化技術 OpenStackサービスメニューのご紹介
日本仮想化技術 OpenStackサービスメニューのご紹介日本仮想化技術 OpenStackサービスメニューのご紹介
日本仮想化技術 OpenStackサービスメニューのご紹介VirtualTech Japan Inc.
 
20131211 Neutron Havana
20131211 Neutron Havana20131211 Neutron Havana
20131211 Neutron HavanaAkihiro Motoki
 
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf) Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf) VirtualTech Japan Inc.
 
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションTakashi Kanai
 
Introduction to Magnum (JP)
Introduction to Magnum (JP)Introduction to Magnum (JP)
Introduction to Magnum (JP)Motohiro OTSUKA
 
OCP Meetup Tokyo #05 ECK on OCP
OCP Meetup Tokyo #05 ECK on OCPOCP Meetup Tokyo #05 ECK on OCP
OCP Meetup Tokyo #05 ECK on OCPTetsuya Sodo
 
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月VirtualTech Japan Inc.
 
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...VirtualTech Japan Inc.
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコシステムズ合同会社
 
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1Hideki Saito
 
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...VirtualTech Japan Inc.
 

Similar to OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1 (20)

openstack_neutron-ovs_osc2014tf_20141019
openstack_neutron-ovs_osc2014tf_20141019openstack_neutron-ovs_osc2014tf_20141019
openstack_neutron-ovs_osc2014tf_20141019
 
OpenStack Project Update Neutron Update
OpenStack Project Update Neutron UpdateOpenStack Project Update Neutron Update
OpenStack Project Update Neutron Update
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
 
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
 
OpenStack 101
OpenStack 101OpenStack 101
OpenStack 101
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
 
OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告
 
Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)
 
日本仮想化技術 OpenStackサービスメニューのご紹介
日本仮想化技術 OpenStackサービスメニューのご紹介日本仮想化技術 OpenStackサービスメニューのご紹介
日本仮想化技術 OpenStackサービスメニューのご紹介
 
20131211 Neutron Havana
20131211 Neutron Havana20131211 Neutron Havana
20131211 Neutron Havana
 
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf) Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
 
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
 
OpenStack概要
OpenStack概要OpenStack概要
OpenStack概要
 
Introduction to Magnum (JP)
Introduction to Magnum (JP)Introduction to Magnum (JP)
Introduction to Magnum (JP)
 
OCP Meetup Tokyo #05 ECK on OCP
OCP Meetup Tokyo #05 ECK on OCPOCP Meetup Tokyo #05 ECK on OCP
OCP Meetup Tokyo #05 ECK on OCP
 
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
 
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
 
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
 
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
 

More from Etsuji Nakai

「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考えるEtsuji Nakai
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Etsuji Nakai
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowEtsuji Nakai
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスEtsuji Nakai
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモEtsuji Nakai
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsEtsuji Nakai
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English LearningEtsuji Nakai
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎Etsuji Nakai
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門Etsuji Nakai
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2Etsuji Nakai
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersEtsuji Nakai
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterEtsuji Nakai
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginnersEtsuji Nakai
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQNEtsuji Nakai
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかEtsuji Nakai
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜Etsuji Nakai
 
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftExploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftEtsuji Nakai
 

More from Etsuji Nakai (20)

PRML11.2-11.3
PRML11.2-11.3PRML11.2-11.3
PRML11.2-11.3
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlow
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービス
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモ
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English Learning
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application Developers
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with Jupyter
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginners
 
Life with jupyter
Life with jupyterLife with jupyter
Life with jupyter
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQN
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきか
 
PRML7.2
PRML7.2PRML7.2
PRML7.2
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
 
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftExploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
 

Recently uploaded

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 

Recently uploaded (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1

  • 1. OpenStackクラウド基盤構築ハンズオンセミナー 第2日 講義資料 No.1 ver1.3 2014/03/05 1 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 3. 第2日 講義資料 No.1 OpenStackの主要コンポーネント 3 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 4. 第2日 講義資料 No.1 OpenStackの主要コンポーネント ■ OpenStackでは、機能別にソフトウェアをモジュール化して開発が進められています。 - Swift : オブジェクトストレージ ● ファイル単位で出し入れするだけの単純なファイルストア - Nova : 仮想マシンの配置決定と起動・停止処理 - Glance : 仮想マシンイメージの管理 ● バックエンドにSwift、その他のストレージを使用 - Cinder : ブロックボリュームの提供 ● サンプル実装では、Linux LVM + iSCSIソフトウェアターゲットを使用 ● 外部のストレージ装置をバックエンドにすることも可能 - Keystone : 統合認証機能 - Neutron : 仮想ネットワーク管理機能(Quantumから改名) ● 仮想ネットワークの作成を外部のプラグインモジュール(SDN製品)に移譲 ● 標準提供のプラグインでは、Linux bridge、もしくは、Open vSwitchを使用 - Horizon : GUIコンソールのサンプル実装 4 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 5. 第2日 講義資料 No.1 コンポーネント間の連携処理 ■ Webコンソールで操作をすると、REST API経由で各モジュールに指示が飛びます。ま た、クライアントは、各モジュールのREST APIを直接操作することも可能です。 - これにより、プログラムコードからの呼び出しによる環境操作の自動化が可能になります。 クライアントPC パブリックネットワーク テンプレート イメージ保存 Webコンソールアクセス テンプレート イメージ検索 Network Node 仮想ネットワーク作成 Swift Glance Horizon Neutron Nova Nova Nova Nova Compute Compute Compute 管理ネットワーク 仮想マシン イメージ テンプレート ダウンロード 仮想マシン起動 Keystone QPID MySQL 認証サーバ メッセージング データベース ブロックボリューム提供 (iSCSI) Cinder LUN LUN LUN 5 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 6. 第2日 講義資料 No.1 コンポーネントのAPI操作のパターン ■ コンポーネントのAPIを操作する際は、2種類のパターンがあります。 - ユーザがダッシュボード経由で各コンポーネントのAPIを操作、もしくは、直接にAPIを操作 - あるコンポーネントが他のコンポーネントに処理を依頼するためにAPIを操作 データベース MySQL 共有データ保存 メッセージング QPID Keystone (ユーザ認証) Webブラウザ アクセス APIアクセス エージェント通信の メッセージ中継 Neutron (仮想ネットワーク) Horizon (ダッシュボード) Cinder (ブロックボリューム) Nova (仮想マシン) Glance (テンプレート) 仮想ネットワークへの接続 ブロックボリューム の接続 テンプレートイメージ のダウンロード 6 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 7. 第2日 講義資料 No.1 API操作のユーザ認証 ■ コンポーネントのAPIを操作する際は、ユーザ認証が必要となります。 - ユーザ、もしくは、コンポーネントは、KeystoneからAPI操作を許可する「トークン」を取得し た後に、操作対象コンポーネントのAPIにリクエストを送信します。(各コンポーネントは、自 分自身を表す「ユーザ」がKeystoneに事前に登録されています。) - Keystoneからトークンを取得する際に、操作対象コンポーネントのAPIのURLを併せて取得しま す。したがって、ユーザは、KeystoneのAPIのURLだけを知っている必要があります。 Keystone (ユーザ認証) Neutron (仮想ネットワーク) Horizon (ダッシュボード) Cinder (ブロックボリューム) Nova (仮想マシン) Glance (テンプレート) 7 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 8. 第2日 講義資料 No.1 Keystoneによるトークン認証 ■ ■ OpenStackのクライアントは複数のコンポーネントに多数のリクエストを送信するた め、リクエストごとにユーザID/パスワードで認証するのは、セキュリティ上の問題を 引き起こす可能性が高くなります。 そこで、認証サーバ(Keystone)からコンポーネントの利用許可証である「トーク ン」を取得しておき、リクエストの際はトークンIDをコンポーネントに送信します。 - リクエストを受けたコンポーネントは、トークンIDの正当性をKeystoneに問い合わせて確認し た後に、リクエストを実行します。 - 取得したトークンは一定時間(デフォルトは24時間)で有効期限が切れます。有効期限が切れ るまでは繰り返し利用できますので、リクエストごとにトークンを取得する必要はありません。 Keystoneサーバ 発行したトークンは Keystoneサーバに保管 ID=yyyy トークン発行依頼  (ユーザID/パスワードで認証) トークンIDに対応するトークンの情報を確認 (ユーザの権限を確認) トークンIDを返送 クライアント  リクエスト送信 (トークンIDを送信) 8 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 9. 第2日 講義資料 No.1 Keystoneのコマンド操作例 (1) ■ OpenStack標準のコマンドラインツールは、環境変数でユーザ/パスワード/操作対象テ ナント/Keystone APIのベースURLを指定します。 - Keystone APIは、管理ユーザ用と一般ユーザ用でURL(ポート番号)が異なります。 - 引数でユーザ等を指定した場合は、そちらが優先されます。 - 次はデフォルトの管理ユーザ「admin」でKeystoneを操作する例です。 Packstackでインストールすると # cat keystonerc_admin export OS_USERNAME=admin /root以下に自動生成されます。 export OS_TENANT_NAME=admin export OS_PASSWORD=714f1ab569a64a3b export OS_AUTH_URL=http://172.16.1.11:35357/v2.0/ export PS1='[u@h W(keystone_admin)]$ ' 管理ユーザの場合は ポート番号35357 # . keystonerc_admin # keystone user-list +----------------------------------+------------+---------+-------------------+ | id | name | enabled | email | +----------------------------------+------------+---------+-------------------+ | 589a800d70534655bfade5504958afd6 | admin | True | test@test.com | | 3c45a1f5a88d4c1d8fb07b51ed72cd55 | cinder | True | cinder@localhost | | f23d88041e5245ee8cc8b0a5c3ec3f6c | demo_admin | True | | | 44be5165fdf64bd5907d07aa1aaa5dab | demo_user | True | | | cd75770810634ed3a09d92b61aacf0a7 | glance | True | glance@localhost | | a38561ed906e48468cf1759918735c53 | nova | True | nova@localhost | | 157c8846521846e0abdd16895dc8f024 | quantum | True | quantum@localhost | +----------------------------------+------------+---------+-------------------+ 9 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 10. 第2日 講義資料 No.1 Keystoneのコマンド操作例 (2) ■ 次はKeystoneに登録されたサービスと、対応するAPIのURLを表示しています。 - 各コンポーネントのコマンドラインツールは、これでリクエストを送信するAPIを確認します。 # keystone service-list +----------------------------------+----------+----------+----------------------------+ | id | name | type | description | +----------------------------------+----------+----------+----------------------------+ | 5ea55cbee90546d1abace7f71808ad73 | cinder | volume | Cinder Service | | e92e73a765be4beca9f12f5f5d9943e0 | glance | image | Openstack Image Service | | 3631d835081344eb873f1d0d5057314d | keystone | identity | OpenStack Identity Service | | 8db624ad713e440492aeccac6ab70a90 | nova | compute | Openstack Compute Service | | e9f02d3803ab44f1a369602010864a34 | nova_ec2 | ec2 | EC2 Service | | 5889a1e691584e539aa121ab31194cca | quantum | network | Quantum Networking Service | +----------------------------------+----------+----------+----------------------------+ # keystone endpoint-list +----------------------------------+-----------+------------------------------------------||-+----------------------------------+ | id | region | publicurl || | service_id | +----------------------------------+-----------+------------------------------------------||-+----------------------------------+ | 0e96a30d9ce742ecb0bf123eebf84ac0 | RegionOne | http://172.16.1.11:8774/v2/%(tenant_id)s || | 8db624ad713e440492aeccac6ab70a90 | | 928a38f18cc54040a0aa53bd3da99390 | RegionOne | http://172.16.1.11:9696/ || | 5889a1e691584e539aa121ab31194cca | | d46cebe4806b43c4b48499285713ac7a | RegionOne | http://172.16.1.11:9292 || | e92e73a765be4beca9f12f5f5d9943e0 | | ebdd4e61571945b7801554908caf5bae | RegionOne | http://172.16.1.11:8776/v1/%(tenant_id)s || | 5ea55cbee90546d1abace7f71808ad73 | | ebec661dd65b4d4bb12fe67c25b2c77a | RegionOne | http://172.16.1.11:5000/v2.0 || | 3631d835081344eb873f1d0d5057314d | | f569475b6d364a04837af6d6a577befe | RegionOne | http://172.16.1.11:8773/services/Cloud || | e9f02d3803ab44f1a369602010864a34 | +----------------------------------+-----------+------------------------------------------||-+----------------------------------+ # keystone endpoint-get --service compute +-------------------+--------------------------------------------------------------+ | Property | Value | +-------------------+--------------------------------------------------------------+ | compute.publicURL | http://172.16.99.11:8774/v2/11f9297918c040eab1f1ec2d50d5564c | +-------------------+--------------------------------------------------------------+ 10 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 11. 第2日 講義資料 No.1 Keystoneのコマンド操作例 (3) ■ 各コマンドラインツールは、「helpサブコマンド」でサブコマンドの一覧や各サブコマ ンドの詳細が確認できます。 # keystone help # keystone help user-list ← サブコマンドの一覧 ← サブコマンド「user-list」の詳細説明 11 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 12. 第2日 講義資料 No.1 Glanceへのテンプレートイメージ登録 (1) ■ 起動ディスクのテンプレートイメージをGlanceに登録することで、Novaから利用でき るようになります。 Keystone (ユーザ認証) Neutron (仮想ネットワーク) Horizon (ダッシュボード) Cinder (ブロックボリューム) Nova (仮想マシン) Glance (テンプレート) 12 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 13. 第2日 講義資料 No.1 Glanceへのテンプレートイメージ登録 (2) ■ 次は、一般ユーザ「demo_user」で、テンプレートイメージをインターネットからダウ ンロードして登録する例です。 このファイルは 自分で用意します。 一般ユーザの場合は ポート番号5000 # cat keystonerc_demo_user export OS_USERNAME=demo_user export OS_TENANT_NAME=demo export OS_PASSWORD=passw0rd export OS_AUTH_URL=http://172.16.1.11:5000/v2.0/ export PS1='[u@h W(keystone_demouser)]$ ' # . keystonerc_demo_user # glance image-create --name "Fedora19" --disk-format qcow2 --container-format bare --is-public true --copy-from http://cloud.fedoraproject.org/fedora-19.x86_64.qcow2 # glance image-list +--------------------------------------+----------+-------------+------------------+-----------+--------+ | ID | Name | Disk Format | Container Format | Size | Status | +--------------------------------------+----------+-------------+------------------+-----------+--------+ | 702d0c4e-b06c-4c15-85e5-9bb612eb6414 | Fedora19 | qcow2 | bare | 237371392 | active | +--------------------------------------+----------+-------------+------------------+-----------+--------+ 13 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 14. 第2日 講義資料 No.1 Neutronによる仮想ネットワーク作成 ■ NeutronのAPIを通して、プロジェクトごとに独立した仮想ネットワークを用意します。 - Neutronのコマンド操作の詳細は、「第2日 講義資料 No.2」で説明します。 Keystone (ユーザ認証) Neutron (仮想ネットワーク) Horizon (ダッシュボード) Cinder (ブロックボリューム) Nova (仮想マシン) Glance (テンプレート) コマンド名は旧名称のquantumです。 Havanaではneutronに変わります。 # . keystonerc_demo_user # quantum net-list +--------------------------------------+-------------+-------------------------------------------------------+ | id | name | subnets | +--------------------------------------+-------------+-------------------------------------------------------+ | 843a1586-6082-4e9f-950f-d44daa83358c | private01 | 9888df89-a17d-4f4c-b427-f28cffe8fed2 192.168.101.0/24 | | d3c763f0-ebf0-4717-b3fc-cda69bcd1957 | private02 | 23b26d98-2277-4fb5-8895-3f42cde7e1fd 192.168.102.0/24 | | d8040897-44b0-46eb-9c51-149dfe351bbe | ext-network | 1b8604a4-f39d-49de-a97c-3e40117a7516 192.168.199.0/24 | +--------------------------------------+-------------+-------------------------------------------------------+ 14 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 15. 第2日 講義資料 No.1 Novaによる仮想マシンインスタンス起動 ■ NovaのAPIに仮想マシンインスタンスの起動を指示すると、Glance / Netronと連携し て、インスタンスの起動と仮想ネットワーク接続の処理が行われます。 - Novaは、Glance APIを通じて、テンプレートイメージをコンピュートノードにコピーします。 - 同じく、Neutron APIを通じて、仮想マシンインスタンスを仮想ネットワークに接続します。 Keystone (ユーザ認証) Neutron (仮想ネットワーク) Horizon (ダッシュボード) Cinder (ブロックボリューム) Nova (仮想マシン) Glance (テンプレート) 仮想ネットワークへの接続 テンプレートイメージ のダウンロード 15 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 16. 第2日 講義資料 No.1 コマンドによる仮想マシンインスタンス起動 (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からGlance APIを呼び出して 情報を取得しています。 # nova image-list +--------------------------------------+----------+--------+--------+ | ID | Name | Status | Server | +--------------------------------------+----------+--------+--------+ | 702d0c4e-b06c-4c15-85e5-9bb612eb6414 | Fedora19 | ACTIVE | | +--------------------------------------+----------+--------+--------+ # nova secgroup-list +---------+-------------+ | Name | Description | +---------+-------------+ | default | default | +---------+-------------+ NovaからNeutron APIを呼び出して 情報を取得しています。 # 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 | +--------------------------------------+-------------+------+ 16 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 17. 第2日 講義資料 No.1 コマンドによる仮想マシンインスタンス起動 (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 | +--------------------------------------+------+--------+-------------------------+ 17 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 18. 第2日 講義資料 No.1 コマンドによる仮想マシンインスタンス起動 (3) ■ 「カスタマイズスクリプト」を使用する際は、スクリプトを記載したファイルを用意し て、「--user-data」オプションで指定します。 - 次の例では、カスタマイズスクリプトを指定して仮想マシンインスタンスを起動した後、フロー ティングIPを割り当てて、実際にログインしています。 # cat hello.txt #!/bin/sh echo '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 fedora@172.16.1.101 The 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 ~]$ 18 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 19. 第2日 講義資料 No.1 Neutron APIによるフローティングIPの割り当て ■ 仮想マシンインスタンスが複数の仮想NICを持つ場合、仮想NICを指定してフローティ ングIPを割り当てるには、Neutron APIを使用する必要があります。 - プライベートIPに対応するポートIDを確認して、ポートIDを指定して割り当てます。 # nova boot --flavor m1.small --image Fedora19 --key-name mykey --security-groups default --nic net-id=843a1586-6082-4e9f-950f-d44daa83358c --nic net-id=d3c763f0-ebf0-4717-b3fc-cda69bcd1957 Vm01 # nova list +--------------------------------------+------+--------+--------------------------------------------------+ | ID | Name | Status | Networks | +--------------------------------------+------+--------+--------------------------------------------------+ | e8d0fa19-130f-4502-acfe-132962134846 | vm01 | ACTIVE | private01=192.168.101.3; private02=192.168.102.3 | +--------------------------------------+------+--------+--------------------------------------------------+ # quantum port-list +--------------------------------------+------+-------------------+------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+------------------------------------+ | 10c3cd17-78f5-443f-952e-1e3e427e477f | | fa:16:3e:37:7b:a6 | ... "ip_address": "192.168.102.3"} | | d0057651-e1e4-434c-a81d-c950b9c06333 | | fa:16:3e:e6:d9:4c | ... "ip_address": "192.168.101.3"} | +--------------------------------------+------+-------------------+------------------------------------+ # quantum floatingip-list +--------------------------------------+------------------+---------------------+---------+ | id | fixed_ip_address | floating_ip_address | port_id | +--------------------------------------+------------------+---------------------+---------+ | 06d24f23-c2cc-471f-a4e6-59cf00578141 | | 171.16.1.101 | | | 89b49a78-8fd7-461b-8fe2-fba4a341c8a2 | | 172.16.1.102 | | +--------------------------------------+------------------+---------------------+---------+ # quantum floatingip-associate 06d24f23-c2cc-471f-a4e6-59cf00578141 d0057651-e1e4-434c-a81d-c950b9c06333 19 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 20. 第2日 講義資料 No.1 キーペアとセキュリティグループの操作 ■ キーペアの作成・登録、セキュリティグループの追加など、セキュリティ関連の操作も novaコマンドで実施できます。 - 次は、キーペア「key01」を作成・登録して、秘密鍵を「~/.ssh/key01.pem」に保存します。 # nova keypair-add key01 > ~/.ssh/key01.pem # chmod 600 ~/.ssh/key01.pem - 次は、既存のキーペアについて、公開鍵を「key02」として登録します。 # nova keypair-add --pub-key ~/.ssh/id_rsa.pub key02 - 次は、セキュリティグループ「group01」を作成して、TCP22番ポートへのアクセスを許可しま す。 # nova secgroup-create group01 "My security group." # nova secgroup-add-rule group01 tcp 22 22 0.0.0.0/0 ■ セキュリティグループについては、今後、novaコマンドでは設定できない機能が追加されていく可 能性があるため、quantum (neutron) コマンドでの設定方法も知っておくとよいでしょう。 # quantum security-group-create group01 --description "My security group." # quantum security-group-rule-create --protocol tcp --port-range-min 22 --port-range-max 22 --remote-ip-prefix "0.0.0.0/0" group01 20 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 21. 第2日 講義資料 No.1 Cinderによるブロックボリューム作成 ■ CinderのAPIを通して、ブロックボリュームの作成・削除・スナップショット作成など が可能です。 - 仮想マシンインスタンスにブロックボリュームを接続する際は、NovaのAPIに指示を出すと、 NovaがCinderのAPIを経由して連携処理を行います。 Keystone (ユーザ認証) Neutron (仮想ネットワーク) Horizon (ダッシュボード) Cinder (ブロックボリューム) Nova (仮想マシン) ブロックボリューム の接続 Glance (テンプレート) 21 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 22. 第2日 講義資料 No.1 Cinderによるブロックボリューム作成 ■ 次は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 auto +----------+--------------------------------------+ | 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 22 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 23. 第2日 講義資料 No.1 ブロックボリュームからのインスタンス起動 ■ テンプレートイメージを複製してブロックボリュームを作成すると、ブロックボリュー ムから仮想マシンインスタンスを起動できるようになります。 - 次は、既存のテンプレートイメージからブロックボリュームを作成して、仮想マシンインスタン スを起動する例です。(起動時の「--image」オプションは意味を持ちませんが、ダミーで指定 する必要があります。) テンプレートイメージのID # 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 --image Fedora19 --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 ブロックボリュームのID インスタンス停止時にボリュームを 削除するかどうか # 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 | +----------||-----------+-----------+------------------+------+-------------+--------------------------------------+ 23 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 24. 第2日 講義資料 No.1 メモとしてお使いください 24 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 25. 第2日 講義資料 No.1 メモとしてお使いください 25 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 26. 第2日 講義資料 No.1 メモとしてお使いください 26 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 27. 第2日 講義資料 No.1 Nova/Cinderを構成するサービス群 27 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 28. 第2日 講義資料 No.1 Novaを構成するサービス群 コントローラノード Nova API REST APIを提供 コンピュートノード 特定のハイパーバイザに 対応するためのドライバ Nova Compute インスタンスを起動 するノードを決定 Compute Driver Libvirt インスタンス 起動指示 Nova Scheduler 起動 仮想マシン インスタンス 仮想マシン インスタンス qcow2 オーバーレイファイル リソース情報確認 qcow2 オーバーレイファイル リソース情報更新 Nova Conductor DBアクセスの Proxyサービス Database Glance /var/lib/nova/instances/<ID> オーバーレイ テンプレートイメージ ダウンロード メッセージングサーバ経由の通信 ダウンロードしたイメージは キャッシュして再利用 qcow2 ベースイメージ /var/lib/nova/instances/_base 28 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 29. 第2日 講義資料 No.1 メッセージングサーバについて ■ 同じコンポーネントのサービス群は、メッセージングサーバを介して相互通信します。 - 通信用途ごとの「トピック」があり、送信側は、特定のトピックにメッセージを配信します。受 信側は、購読中のトピックに入ったメッセージを定期的に取得します。 - トピックに入れるメッセージは、「購読中の受信者全員が受け取ること」「購読中の受信者のど れか1つだけが受け取ること」などの受信条件が設定されます。 - 複数のサービスが同じトピックにメッセージを配信することができますので、「N : M」の非同 期通信が実現されます。 - OpenStackでは、メッセージングサーバには、RabbitMQ、もしくは、QPIDを使用します。 メッセージングサーバ サービス トピックA メッセージ受信 サービス サービス メッセージ送信 トピックB サービス ・・・ トピックAを購読中の サービス群 29 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 30. 第2日 講義資料 No.1 qcow2ディスイメージについて ■ ■ qcow2は、仮想マシンのディスクイメージ用に設計されたイメージファイル形式で、次 のような特徴を持ちます。 ファイルサイズを動的に増加 - 論理的なディスクイメージのサイズに対して、実際にデータが書かれている分だけの物理ディス クを使用します。論理サイズの拡張も可能です。 ■ ベースイメージファイルと差分イメージファイルを分割して利用可能 - 仮想マシン起動時は、ベースイメージの内容が見えていますが、仮想マシンから書き込んだ変更 は、差分イメージファイルに書き込まれます。 - 複数の仮想マシンでベースイメージを共有することで、物理ディスクの使用量を低減することが できます。 ■ 複数のスナップショットを保持可能 - スナップショットを作成しておくと、過去のスナップショットの状態に内容を戻したり、特定の スナップショットの内容をコピーして新規イメージを作成することができます。 30 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 31. 第2日 講義資料 No.1 qcow2ディスイメージの操作 ■ qcow2ディスクイメージは、qemu-imgコマンドで操作します。 5GBのイメージファイルを作成 # qemu-img create -f qcow2 baseimage.qcow2 5G Formatting 'baseimage.qcow2', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off baseimg.qcow2をベースとして 差分イメージを作成 # qemu-img create -f qcow2 -b baseimage.qcow2 layerimage.qcow2 Formatting 'layerimage.qcow2', fmt=qcow2 size=5368709120 backing_file='baseimage.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off # qemu-img info layerimage.qcow2 image: layerimage.qcow2 file format: qcow2 virtual size: 5.0G (5368709120 bytes) disk size: 196K cluster_size: 65536 backing file: baseimage.qcow2 スナップショットを作成 # qemu-img snapshot -c snap01 layerimage.qcow2 # qemu-img snapshot -l layerimage.qcow2 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 snap01 0 2013-11-22 17:08:02 00:00:00.000 スナップショットから 新規イメージを複製 # qemu-img convert -f qcow2 -O qcow2 -s snap01 layerimage.qcow2 copiedimage.qcow2 (参考)  https://access.redhat.com/site/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html-single/    Virtualization_Administration_Guide/index.html#sect-Virtualization-Tips_and_tricks-Using_qemu_img 31 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 32. 第2日 講義資料 No.1 公開鍵の書き込みについて ■ ■ Nova Computeは仮想マシンインスタンスを起動する前に、ローカルにあるディスクイ メージ内の「 /root/.ssh/authorized_keys」に指定された公開鍵を書き込みます。 公開鍵の情報はメタデータからも参照できるので、Cloud-Initによって公開鍵認証の設 定を行うことも可能です(*)。 - 典型的には、rootによる直ログインを禁止した上で、ログイン用のユーザを作成して、そのユー ザに対して公開鍵認証を設定します。 メタデータから公開鍵を参照する例 $ 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 (*) 特にブロックボリュームから起動する場合は、Nova Computeによる公開鍵の書き込みに失敗するので、      Cloud-Initによる公開鍵設定が必須となります。 32 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 33. 第2日 講義資料 No.1 ブロックボリュームの使い方と対応するAPI OS領域 データ領域 OS領域 他の仮想マシンインスタンスに 再接続可能(同時接続は不可) データ領域 ②仮想マシンインスタンスに 接続してデータ領域として使用 ④スナップショットを複製して 新たなブロックボリュームを作成 ①新規ブロックボリュームを作成 ③スナップショット作成 テンプレート イメージ OS領域 テンプレートイメージを複製して ブロックボリュームを作成 ■ Cinder API - volume create/delete/list/show (create from snapshot, image) OS領域 - snapshot create/delete/list/show ■ Nova API - volume attach/detach 33 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 34. 第2日 講義資料 No.1 Nava/Cinder連携の全体像 ■ ■ ブロックストレージは、典型的には、iSCSIストレージ装置のLUNとして用意されます。 この時、Cinderは、iSCSIストレージ装置をコントロールする役割を持ちます。 Nova Computeは、ホストLinuxに接続したLUNを仮想ディスクとしてVM接続します。 Nova Compute VMインスタンス /dev/vdb Cinder LUNの作成・公開を指示 ストレージ装置 仮想ディスク Linux KVM /dev/sdX iSCSI LUN iSCSI Target iSCSI SW Initiator 34 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 35. 第2日 講義資料 No.1 Cinderを構成するサービス群 ■ ストレージ装置ごとに対応するVolume DriverがLUNの構成を実施します。 - 複数タイプのストレージ装置を利用する場合、Cinder Schedulerが使用するストレージを選択し ます。 コントローラノード REST APIを提供 Cinder API Cinder-Volume 特定のストレージ装置に 対応するためのドライバ ストレージ装置 Volume Driver ボリュームの 情報を共有 Cinder Scheduler ボリュームの特性に 応じたドライバの選択 LUN iSCSI接続 Database メッセージングサーバ経由の通信 ドライバの指示に従って LUNを用意して公開 iSCSIでホストLinuxに 接続したLUNを仮想ディスク としてVMにアタッチ Nova Compute REST APIを提供 Nova API 35 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 36. 第2日 講義資料 No.1 LVM/tgtdによる実装例 ■ Cinderが標準提供するLVMドライバでは、LVMで作成した論理ボリュームをtgtdで iSCSI LUNとして公開します。スナップショットの作成には、LVMのスナップショット を利用します(差分領域のサイズは、元のLVと同じサイズ)。 Nova Compute Cinder 論理ボリュームを作成して、 iSCSI LUNとして公開 VMインスタンス /dev/vdb 仮想ディスク Linux KVM /dev/sdX iSCSI LUN VG: cinder-volumes LV iSCSI SW Target (tgtd) iSCSI SW Initiator 36 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 37. 第2日 講義資料 No.1 NFSドライバの利用 ■ Cinderが標準提供するNFSドライバでは、NFSサーバ上にディスクイメージファイルを 作成して、 ComputeノードからNFSマウントして利用します。 Nova Compute Cinder VMインスタンス /dev/vdb NFSマウントして、 ディスクイメージ ファイルを作成 仮想ディスク NFSサーバ Linux KVM ・・・ ・・・ NFSマウント 37 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 38. 第2日 講義資料 No.1 GlusterFSドライバの利用 ■ GlusterFSの分散ファイルシステム上にディスクイメージを配置するドライバも提供さ れています。 - 現在は、FUSEマウントによるアクセスですが、今後、GlusterFSのAPIライブラリ(libgfapi)に よるダイレクトアクセスにも対応する予定です。 Cinder Nova Compute VMインスタンス /dev/vdb 仮想ディスク GlusterFSクラスタ FUSEマウントして、 ディスクイメージ ファイルを作成 ・・・ Linux KVM ・・・ FUSEマウント 38 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 40. 第2日 講義資料 No.1 コンピュートノードのスケールアウト構成 ■ コンピュートノードを追加して、起動可能な仮想マシンインスタンスの数を増やします。 コントローラノード ● ● ● ● ● APIサービス群 Horizonダッシュボード L2/L3/DHCP Agent データベース (MySQL) メッセージング (QPID) コンピュートノード ● ● ● KVMハイパーバイザ Nova Compute L2 Agent コンピュートノード ● ● ● スケールアウト KVMハイパーバイザ Nova Compute L2 Agent 40 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 41. 第2日 講義資料 No.1 ネットワークノードの分離構成 (1) ■ ネットワークノードを独立させて、ネットワーク処理の性能を確保します。 - ネットワークノード自身をスケールアウトさせる際は、外部のSDNコンポーネントの利用が必要 です。OpenStack標準機能としてのネットワークノードのスケールアウト機能は、現在開発計画 中です。 コントローラノード ● ● ● ● APIサービス群 Horizonダッシュボード データベース (MySQL) メッセージング (QPID) コンピュートノード ● ● ● KVMハイパーバイザ Nova Compute L2 Agent ネットワークノード ● L2/L3/DHCP Agent コンピュートノード ● ● ● KVMハイパーバイザ Nova Compute L2 Agent スケールアウト 41 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 42. 第2日 講義資料 No.1 ネットワークノードの分離構成 (2) ■ 下図は、ネットワークノードを分離した場合のネットワーク構成例です。 パブリックネットワーク プライベートネットワーク eth0 eth0 IP IP eth1 eth2 br-ex br-priv br-int NAT コントローラノード ネットワークノード eth0 IP eth1 br-priv eth0 IP eth1 br-priv br-int br-int VM ・・・ VM コンピュートノード 42 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 43. 第2日 講義資料 No.1 コントローラ群の分離構成 ■ さらに、コントローラノード内のコンポーネントを別々のサーバに配置します。 データベース Keystoneサービス Glanceサービス ● データベース (MySQL) メッセージング Cinderサービス ● ネットワークノード ● L2/L3/DHCP Agent メッセージング (QPID) Novaサービス Horizon ● Horizonダッシュボード コンピュートノード コンピュートノード 43 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 44. 第2日 講義資料 No.1 APIサービス / Horizonのスケールアウト ■ APIサービス群とHorizonダッシュボードは、ロードバランサで負荷分散が可能です。 ロードバランサ ロードバランサ ロードバランサ ロードバランサ ロードバランサ Keystoneサービス スケールアウト Glanceサービス スケールアウト Cinderサービス スケールアウト Novaサービス スケールアウト Horizon スケールアウト 44 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 45. 第2日 講義資料 No.1 データベースとメッセージングのHA構成 ■ ロードバランサ自体は、HAクラスタによって可用性を高めます。データベースサーバ とメッセージングサーバーも同様にHAクラスタ化で可用性を高めます - データベース (MySQL)は、クラスタに構成して負荷分散を行うことも可能です。あまり一般的な 構成ではありませんが、「Galera Cluster (MySQL)」などの技術が利用できます。 × × × 障害発生! フェイルオーバ ロードバランサ ロードバランサ 障害発生! フェイルオーバ データベース データベース 障害発生! メッセージング フェイルオーバ メッセージング 45 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 46. 第2日 講義資料 No.1 HA/ロードバランス構成の参考資料 ■ HAクラスタのロードバランサの具体的な設定は、次の資料が参考になります。 - RDO HighlyAvailable and LoadBalanced Control Services ● http://openstack.redhat.com/RDO_HighlyAvailable_and_LoadBalanced_Control_Services 46 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 47. 第2日 講義資料 No.1 クライアントライブラリによるAPI操作 47 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 48. 第2日 講義資料 No.1 Python用クライアントライブラリ ■ Python用のクライアントライブラリを使用 startvm.py すると、Pythonスクリプトを用いて、 #!/usr/bin/python import os OpenStackのAPIを操作することができま import novaclient.v1_1.client as nvclient す。右図は仮想マシンインスタンスを起動す # Network ID to which the instance will attach. netid='541bb203-f13c-4eb7-ac91-2432b389572f' る簡単なスクリプトの例です - 本講座の演習環境では、下記のクライアントラ イブラリのパッケージが導入されています。 # rpm -qa | grep -E "python-.*client" python-cinderclient-1.0.4-1.fc19.noarch python-novaclient-2.13.0-1.fc18.noarch python-glanceclient-0.9.0-3.fc19.noarch python-quantumclient-2.2.1-3.fc19.noarch python-keystoneclient-0.2.3-7.fc19.noarch python-swiftclient-1.4.0-1.fc19.noarch 実行例 creds = {} creds['username'] = os.environ['OS_USERNAME'] creds['api_key'] = os.environ['OS_PASSWORD'] creds['auth_url'] = os.environ['OS_AUTH_URL'] creds['project_id'] = os.environ['OS_TENANT_NAME'] nova = nvclient.Client(**creds) image = nova.images.find(name="Fedora19") flavor = nova.flavors.find(name="m1.tiny") instance = nova.servers.create( name="test", image=image, flavor=flavor, key_name="mykey", nics=[{'net-id':netid}]) # cat keystonerc_demo_user export OS_USERNAME=demo_user export OS_TENANT_NAME=demo export OS_PASSWORD=passw0rd export OS_AUTH_URL=http://172.16.1.11:5000/v2.0/ export PS1='[u@h W(keystone_demo_user)]$ ' # . keystonerc_demo_user # ./startvm.py # nova list +--------------------------------------+------+--------+-------------------------+ | ID | Name | Status | Networks | +--------------------------------------+------+--------+-------------------------+ | 3002c2db-b7ea-4e02-8460-ff570a07a215 | test | ACTIVE | private01=192.168.101.3 | +--------------------------------------+------+--------+-------------------------+ 48 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 49. 第2日 講義資料 No.1 クライアントライブラリの使い方 (1) ■ クライアントライブラリを使用する際は、はじめに各モジュール(Keystone, Nova, Cinder, Glance)のクライアントオブジェクトを取得します。 - 下図は、クライアントオブジェクト(keystone, nova, cinder, glance)を取得するサンプルで す。コマンドラインツールと同じ環境変数をセットした状態で実行します。 clients.py #!/usr/bin/python import os import keystoneclient.v2_0.client as kclient import novaclient.v1_1.client as nclient import glanceclient.v1.client as gclient import cinderclient.v1.client as cclient _keystone_creds = {} _keystone_creds['username'] = os.environ['OS_USERNAME'] _keystone_creds['password'] = os.environ['OS_PASSWORD'] _keystone_creds['auth_url'] = os.environ['OS_AUTH_URL'] _keystone_creds['tenant_name'] = os.environ['OS_TENANT_NAME'] _nova_creds = {} _nova_creds['username'] = os.environ['OS_USERNAME'] _nova_creds['api_key'] = os.environ['OS_PASSWORD'] _nova_creds['auth_url'] = os.environ['OS_AUTH_URL'] _nova_creds['project_id'] = os.environ['OS_TENANT_NAME'] keystone = kclient.Client(**_keystone_creds) nova = nclient.Client(**_nova_creds) cinder = cclient.Client(**_nova_creds) _glance_ep = keystone.service_catalog.url_for( service_type='image', endpoint_type='publicURL') glance = gclient.Client(_glance_ep, token=keystone.auth_token) 49 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 50. 第2日 講義資料 No.1 クライアントライブラリの使い方 (2) ■ 先に取得したクライアントオブジェクトは、自身が管理する各種コンポーネントのマ ネージャオブジェクトをメンバに持ちます。マネージャオブジェクトのメソッドで、 個々のコンポーネントを表すオブジェクトを取得して利用します。Glance, Cinder, Novaの主要なマネージャオブジェクトは次のとおりです。 - Glance ● glance.images: Imageマネージャ(imageオブジェクトを扱う) - Cinder ● cinder.volumes: Volumeマネージャ(volumeオブジェクトを扱う) ● cinder.volume_snapshots: Snapshotマネージャ(snapshotオブジェクトを扱う) - Nova ● nova.servers: Serverマネージャ(serverオブジェクトを扱う) ● nova.floating_ips: Floating IPマネージャ(floating_ipオブジェクトを扱う) ● nova.security_groups: Security Groupマネージャ(security_groupオブジェクトを扱う) ● nova.security_group_rules: Security Group Rulesマネージャ(security_group_ruleオブジェクトを扱う) ● nova.flavors: Flavorマネージャ(flavorオブジェクトを取り扱う) ● nova.keypairs: Keypairマネージャ(keypairオブジェクトを取り扱う) ● その他に「nova.images」と「nova.networks」のマネージャから、imageオブジェクトとnetworkオブジェ クトが扱えます。本来は、CinderとNeutronのクライアントを使うべきですが、インスタンス起動時にテンプ レートやネットワークのIDを検索する際など、簡易的に利用するのに便利です。 50 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 51. 第2日 講義資料 No.1 クライアントライブラリの使い方 (3) ■ 次は、仮想マシンインスタンスを起動して、ブロックボリュームを作成・接続した後、 フローティングIPを割り当てるサンプルです。 - 先の「clients.py」と同じディレクトリに置いて実行します。 launch_vm.py #!/usr/bin/python from clients import nova, glance, cinder import time image = nova.images.find(name='Fedora19') flavor = nova.flavors.find(name='m1.tiny') net = nova.networks.find(label='private01') instance = nova.servers.create( name="vm01", image=image, flavor=flavor, key_name="mykey", nics=[{'net-id':net.id}]) volume = cinder.volumes.create(size=1, display_name='volume01') while instance.status == 'BUILD': print "Waiting status to be active." time.sleep(10) instance = nova.servers.get(instance.id) while volume.status == 'creating': time.sleep(1) volume = cinder.volumes.get(volume.id) nova.volumes.create_server_volume(instance.id, volume.id, '/dev/vdb') for floating_ip in nova.floating_ips.list(): if floating_ip.instance_id == None: instance.add_floating_ip(floating_ip) print "Floating IP: %s" % floating_ip.ip break 51 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 52. 第2日 講義資料 No.1 クライアントライブラリの参考資料 ■ OpenStackのPython Client Libraryの使い方をサンプルコードで紹介 - http://d.hatena.ne.jp/enakai00/20131215/1387109226 ■ 各マネージャとコンポーネントオブジェクトの主要メソッドは、下記のオンラインドキュメントで 確認します。 # # # # # # # # # # # pydoc pydoc pydoc pydoc pydoc pydoc pydoc pydoc pydoc pydoc pydoc glanceclient.v1.images cinderclient.v1.volumes cinderclient.v1.volume_snapshots novaclient.v1_1.servers novaclient.v1_1.flavors novaclient.v1_1.floating_ips novaclient.v1_1.security_groups novaclient.v1_1.security_group_rules novaclient.v1_1.keypairs novaclient.v1_1.images novaclient.v1_1.networks 52 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 53. 第2日 講義資料 No.1 メモとしてお使いください 53 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 54. 第2日 講義資料 No.1 メモとしてお使いください 54 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 55. 第2日 講義資料 No.1 (参考)Keystoneのトークン認証 55 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 56. 第2日 講義資料 No.1 Keystoneによる認証処理の流れ (1) ■ OpenStackのサービスを利用するユーザは、Keystoneから「トークン」(サービス利用 証)を取得して、該当サービスのAPIにリクエストを送信します。 - トークン本体はKeystone内部に保管されており、ユーザはトークンを特定するIDをAPIに送信し ます。一定時間(デフォルトでは24時間)経過すると保管されたトークンは破棄されます。 ユーザ ユーザ名/パスワード送信 ID=xxxx ID=xxxx UnscopedトークンID返送 ここで、自分が利用できる プロジェクトが分かる 特定のプロジェクトを利用 するためのトークン (Scopedトークン)を要求 Keystone プロジェクト情報リクエスト ※ UnscopedトークンIDの代わりに ユーザ名/パスワードを送信してもよい ID=xxxx プロジェクト情報返送 Scopedトークン生成要求 ID=yyyy ID=xxxx トークンIDと併せて、 各サービスAPIのURL が返送される Unscopedトークン生成 ID=yyyy ScopedトークンID返送 Scopedトークン生成 56 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 57. 第2日 講義資料 No.1 Keystoneによる認証処理の流れ (2) ■ エンドユーザは、サービスエンドポイント(サービスのAPI)にScopedトークンのIDと 共にサービスのリクエストを送信します。 - サービスエンドポイントは、トークンIDを元に該当ユーザの属性をKeystoneから取得して、サー ビスの利用可否を判断します。 Keystone サービスエンドポイント ユーザ 先にURLを取得した サービスAPIリクエスト ID=yyyy サービスリクエスト ID=yyyy Scopedトークン ユーザ属性取得 ID=yyyy ユーザ属性返送 ユーザ属性に応じて、 リクエストを処理 リクエスト処理結果返送 57 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 58. 第2日 講義資料 No.1 Keystoneに対するリクエスト/レスポンスの例 (1) ■ Unscopedトークンを取得する例です。 ID=xxxx [POST] http://keystone:5000/tokens Header: {'Content-Type': 'application/json'} Request: { "auth":{ "passwordCredentials":{ "username":"demo_user", "password":"xxxxxxxx" } } } (参考)これを実行するPythonスクリプトの例 http://d.hatena.ne.jp/enakai00/20131120/1385022558 Responce: { "access": { "token": { "issued_at": "2013-11-21T08:36:25.921898", "expires": "2013-11-22T08:36:25Z", "id": "149226c5f191445b90d7bb45925ed9f1" }, "serviceCatalog": [], UnscopedトークンのID "user": { "username": "demo_user", "roles_links": [], "id": "44be5165fdf64bd5907d07aa1aaa5dab", "roles": [], "name": "demo_user" }, "metadata": { "is_admin": 0, "roles": [] } } } 58 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 59. 第2日 講義資料 No.1 Keystoneに対するリクエスト/レスポンスの例 (2) ■ Unscopedトークンを利用して、プロジェクト情報を取得する例です。 ID=xxxx [GET] http://keystone:5000/tenants Header: {'Content-Type': 'application/json', 'X-Auth-Token': '149226c5f191445b90d7bb45925ed9f1'} Responce: { "tenants": [ { ユーザが属する "enabled": true, プロジェクト "description": "", "name": "production", "id": "ee18bc8d37184ed0b013cd612c92f45a" }, { ユーザが属する "enabled": true, プロジェクト "description": "", "name": "demo", "id": "f057a8457a8144b48fded7e6ba644e92" } ], "tenants_links": [] } 59 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 60. 第2日 講義資料 No.1 Keystoneに対するリクエスト/レスポンスの例 (3) ■ Scopedトークンを取得する例です。 ID=xxxx ID=yyyy [POST] http://keystone:5000/tokens Header: {'Content-Type': 'application/json'} Request: { "auth":{ "tenantName":"demo", "token":{ "id":"149226c5f191445b90d7bb45925ed9f1" } } } レスポンスは次ページ参照 60 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 61. 第2日 講義資料 No.1 Keystoneに対するリクエスト/レスポンスの例 (4) ■ Scopedトークン取得に対するレスポンスです。 Responce: { "access": { "token": { "issued_at": "2013-11-21T08:36:33.995777", "expires": "2013-11-22T08:36:25Z", "id": "8312676d28b546d0b801b7b44dfdf70f", ScopedトークンのID "tenant": { "enabled": true, "description": "", "name": "demo", "id": "f057a8457a8144b48fded7e6ba644e92" } }, "serviceCatalog": [ { サービスエンドポイントの情報 "endpoints_links": [], "endpoints": [ { "adminURL": "http://10.64.200.97:8774/v2/f057a8457a8144b48fded7e6ba644e92", "region": "RegionOne", "publicURL": "http://10.64.200.97:8774/v2/f057a8457a8144b48fded7e6ba644e92", "internalURL": "http://10.64.200.97:8774/v2/f057a8457a8144b48fded7e6ba644e92", "id": "9aed292e70e9468499dd6c77e7a258f3" } ], "type": "compute", "name": "nova" }, ... 61 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 62. 第2日 講義資料 No.1 メモとしてお使いください 62 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 63. 第2日 講義資料 No.1 (付録)OpenStack 主要APIリスト (参考)OpenStack API Reference http://api.openstack.org/api-ref.html 63 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 64. 第2日 講義資料 No.1 Keystone API ■ 一般ユーザ向けAPI 64 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 65. 第2日 講義資料 No.1 Keystone API ■ 管理ユーザ向けAPI 65 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 66. 第2日 講義資料 No.1 Glance API 66 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 67. 第2日 講義資料 No.1 Neutron API ■ Network API ■ Subnet API 67 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 68. 第2日 講義資料 No.1 Neutron API ■ Ports API 68 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 69. 第2日 講義資料 No.1 Nova API ■ Versions API ■ Extensions API ■ Limits API 69 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 70. 第2日 講義資料 No.1 Nova API ■ Server API ■ Server Metadata API 70 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 71. 第2日 講義資料 No.1 Nova API ■ Server Address API ■ Server Actions API 71 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 72. 第2日 講義資料 No.1 Nova API ■ Flavors API ■ Images API ■ Image Metadata API 72 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 73. 第2日 講義資料 No.1 Cinder API 73 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 74. 第2日 講義資料 No.1 メモとしてお使いください 74 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 75. 75 Copyright (C) 2014 National Institute of Informatics, All rights reserved.