基盤構築演習
Cloud Infrastructure Design and Deployment
6. OpenStack 概要 基本機能
2017.v1
Table of contents
OpenStack 概要
利用方法
基本的 機能要素
ン ー 設定
OpenStack 概要
OpenStack IaaS 機能
ー ー 対 提供
o 標準化 API化 さ ン ソー 操作 提供
ー ー 作成・編集・削除
仮想・物理
ワー 作成・編集・削除
L2, L3, 各種 ワー 機能 FW, LB等
ー 作成・編集・削除
ー 切 出 接続 等
上記 付随 関連 作業
キー 管理 OS ー 管理等
OpenStack 裏側 行わ い
o 人 介入 必要 し い資源 管理
資源 抽象化
資源 ー ン
資源 論理分割
OpenStack 概要
OSS 開発 CloudOS
様々 IT ソー 抽象化 標準的 操作手法 提供
o 中心 ー ー ー ワー
http://www.openstack.org/software/
OpenStack 構造
操作 管理 実行 階層化
o 複雑性 隠蔽
ン ー ー間 相互連携
o ー 分散 OSS 開発 円滑 進
仮想 ー ン ー
Nova
ン 仮想NW ー
Neutron
仮想 ー
ン ー
Cinder
認証/ ー 管理
Keystone
ー ー ン
OpenStack API
OpenStack
OSS/ 製品
OSS/ 製品 OSS/ 製品
実行層
管理層
仮想化機能 ー
汎用 ー
仮想 ー 仮想 ー
仮想化機能 ー
汎用 ー /
ー 製品
仮想化機能 ワー
汎用 ー /
NW 製品
仮想 ー 仮想 FW
API/ 独自 ン ー
検証 組 合わ 提供
※簡略化 主要機能 概略 記載
仮想 ー
WebUI
Horizon
実行層 コ
層 コ
操作層
OpenStack 構成す 要素
機能単位 ン ー ン 分割 個別 開発 進 い
o OpenStack いう巨大 ソ あ わけ く ン ー
ン 集合 OpenStack 形成 い
以下 主要 ン ー ン 一部
機能 AWS 対応
Horizon Web ー ン ー Management Console
Keystone 認証 ー -
Nova 仮想 ン管理 ー EC2/VPC
Neutron 仮想 ワー 管理 ー EC2 一部
Glance 仮想 ン ー 管理 ー EC2 一部
Cinder ー 管理 ー EBS
Swift ー 管理 ー S3
Ceilometer ー ン ・監視 ー CloudWatch
Heat 仮想環境 ン ー CloudFormation
Trove RDBMS ー RDS
Sahara BigData 解析 構築 EMR
全体像 一部抜粋
本講義 赤色部分 機能 ー
Nova Glance Cinder Swift
Neutron
仮想ネッ ワー 制御 ー制御ー SnapShotー 管理 ー 制御ッ ー
VPNaaS
L3
L2/LBaaS
FWaaS
Heat
ー ー ンTrove
DBaaSCeilometer
統計情報 収集・ ー 発信Keystone
認証・認可Sahara
DPaaSIronic
ビ タ ン
OpenStack 構成す 要素
様々 ン 技術 集大成
以下 各要素 組合 例
Nova Glance Cinder Swift
Neutron
仮想ネッ ワー 制御 ー制御ー SnapShotー 管理 ー 制御ッ ー
VPNaaS
L3
L2/LBaaS
FWaaS
Ironic
ビ タ ン
iptables VLAN Open vSwitch
Open Flow Network
KVM/QEMU Libvirt 公開鍵認証
仮想 ン ー
ー ン
OS基礎技術
cloud-init
LVM
iSCSI rsync
ー ン認証 REST 相互連携
セ キ ー 使 分散環境 一貫性 維持
OpenStack ーキ チ
概要 説明 詳細 後 講義 解説
http://docs.openstack.org/openstack-ops/content/architecture.html
OpenStack nova 例
ン ー ン 内部 実行層 差異 吸収 ー
ー 対 標準化 操作 API 提供 い
構成管理 ー ー
KVM 用 Xen 用 商用製品用
KVM ー Xen ー VMware ー
Hyper-V ー
Nova API
ー や
OpenStack 利用方法 け
知 い 環境 操作 可能
ン 用
LXC
Docker
従来 階層構造 比較
従来 ー ン ー 違
い あ ー 構造 類似点 多い
ー
CPU, MEM, NIC
ー (Linux 等)
ー
ー ー ワー ー
OpenStack
OpenStack API
k8s, openshift, mesos 等
ー ン
実 資
源 層
資 源
管 理
層
ー
層
SaaS
PaaS
IaaS
利用方法
OpenStack 操作方法
OpenStack 以下 操作方法 提供 い
o Dashboard(Horizon)
最 簡単 直感的 一部複雑 操作 い
o ン ン
最 一般的 利便性 高い 全 操作 可能 高度 自動化 限界 あ
o REST API
最 柔軟性 あ 全 操作 可能 他 連携 前提 高度 自動
化 実現 い場合 利用
関係 以下 通
o 操作方法 最終的 REST API ー い
openstack
openstack client library
Dashboard ン ン Other Programs/Tools Direct Call
REST API
REST API REST API
本演習 方法
利用
Dashboard(Horizon)
ン ー ン 一 あ Horizon 提供 Web ー
o 簡易的 操作 一通 行え 複雑 作業
o 主 ン ンやREST API 利用 作成 環境 確認 利用
コマン ン
OpenStack ン ー ン 対応 ン 代表的
ン 以下
o nova, neutron, glance, cinder, keystone, swift, heat
ン Python ン 含
導入 利用可能
$ nova list
見やすいように整形しています
+---+---+---+---+---+---+
| ID | Name | Status | Task State | Power State | Networks | +---+---+---+---+---+---+
| 5173dd67-abd0-41b5-b41f-ff89ed7e3311 | console | ACTIVE | - | Running | work-net=192.168.100.4, 157.1.141.210 |
| 75c6d969-fbb0-4082-a56c-f0532339d9ef | openstack-single | ACTIVE | - | Running | floating-net=172.16.100.100, |
| | | | | | 172.16.100.101, 172.16.100.102, |
| | | | | | 172.16.100.103, 172.16.100.104; |
| | | | | | work-net=192.168.100.10 | +---+---+---+---+---+---+
$ neutron net-list
+---+---+---+
| id | name | subnets | +---+---+---+
| fc8869b7-aca1-4e06-84c0-94a831374753 | floating-net | 722ba04e-66db-4035-9da2-44b3edf95209 172.16.100.0/24 |
| 359235e4-7090-40f5-93dc-be105041d46a | work-net | a01624a3-c340-475b-b124-006fdc30bd11 192.168.100.0/24 |
| 63c67570-ba92-463a-b34c-2b9c1fff628c | public | a2f49fe1-ac9b-4189-86da-2ef24328a883 | +---+---+---+
REST API
OpenStack 提供 最 基本 機能
ン ー ン 独自 API ー ー セ 持 (nova-api, neutron-
api 等) セ へREST形式 セ 行う 操作 行い
以下 仮想 ン 一覧 取得 例
o 実行 JSON 形式 応答 返
$ curl -g -i -X GET http://157.1.141.7:8774/v2/243f55729ce9487e933c1608c6673f6b/servers/detail -H "User-Agent: python-novaclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}27c18d7e2b198f8b04eec2e8140f3e00d8c5931a"
{"servers": [{"status": "ACTIVE", "updated": "2015-11-18T06:33:08Z", "hostId": "a39630fb6d291f98e2ca123f727e816d4caaa6799d4eaa54f9079ced",
"addresses": {"work-net": [{"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:65:39:84", "version": 4, "addr": "192.168.100.10", "OS-EXT-IPS:type": "fixed"}],
"floating-net": [{"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:25:15:aa", "version": 4, "addr": "172.16.100.100", "OS-EXT-IPS:type": "fixed"}, {"OS-EXT- IPS-MAC:mac_addr": "fa:16:3e:25:15:aa", "version": 4, "addr": "172.16.100.101", "OS-EXT-IPS:type": "fixed"}, {"OS-EXT-IPS-MAC:mac_addr":
"fa:16:3e:25:15:aa", "version": 4, "addr": "172.16.100.102", "OS-EXT-IPS:type": "fixed"}, {"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:25:15:aa",
"version": 4, "addr": "172.16.100.103", "OS-EXT-IPS:type": "fixed"}, {"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:25:15:aa", "version": 4, "addr":
"172.16.100.104", "OS-EXT-IPS:type": "fixed"}]}, "links": [{"href": "http://157.1.141.7:8774/v2/243f55729ce9487e933c1608c6673f6b/servers/6bfdf459- 0519-46e0-b690-e1357cc6e25b", "rel": "self"}, {"href": "http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/servers/6bfdf459-0519-46e0-b690- e1357cc6e25b", "rel": "bookmark"}], "key_name": "my-key", "image": {"id": "a3d7276a-5c77-4c05-9919-1d16106a6fde", "links": [{"href":
"http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/images/a3d7276a-5c77-4c05-9919-1d16106a6fde", "rel": "bookmark"}]}, "OS-EXT-
STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-SRV-USG:launched_at": "2015-11-18T06:33:08.000000", "flavor": {"id": "4", "links": [{"href": "http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/flavors/4", "rel": "bookmark"}]}, "id": "6bfdf459-0519-46e0-b690-e1357cc6e25b",
"security_groups": [{"name": "default"}, {"name": "default"}], "OS-SRV-USG:terminated_at": null, "OS-EXT-AZ:availability_zone": "nova", "user_id":
"335b60ff72424ab4b387ed001729d26d", "name": "openstack-single", "created": "2015-11-18T06:32:58Z", "tenant_id": "243f55729ce9487e933c1608c6673f6b",
"OS-DCF:diskConfig": "MANUAL", "os-extended-volumes:volumes_attached": [], "accessIPv4": "", "accessIPv6": "", "progress": 0, "OS-EXT- STS:power_state": 1, "config_drive": "", "metadata": {}}, {"status": "ACTIVE", "updated": "2015-11-16T16:57:25Z", "hostId":
"3fa7ae0361a6f19fe2e1b22e0621191a7994e9ceed8c41d03a51dd50", "addresses": {"work-net": [{"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:d5:a2:92", "version": 4, "addr": "192.168.100.4", "OS-EXT-IPS:type": "fixed"}, {"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:d5:a2:92", "version": 4, "addr": "157.1.141.210",
"OS-EXT-IPS:type": "floating"}]}, "links": [{"href": "http://157.1.141.7:8774/v2/243f55729ce9487e933c1608c6673f6b/servers/5173dd67-abd0-41b5-b41f- ff89ed7e3311", "rel": "self"}, {"href": "http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/servers/5173dd67-abd0-41b5-b41f-ff89ed7e3311",
"rel": "bookmark"}], "key_name": "key-for-console", "image": {"id": "818afbad-6f61-462f-aade-1482b0312f85", "links": [{"href":
"http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/images/818afbad-6f61-462f-aade-1482b0312f85", "rel": "bookmark"}]}, "OS-EXT-
STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-SRV-USG:launched_at": "2015-11-16T16:57:25.000000", "flavor": {"id": "2", "links": [{"href": "http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/flavors/2", "rel": "bookmark"}]}, "id": "5173dd67-abd0-41b5-b41f-ff89ed7e3311",
"security_groups": [{"name": "default"}], "OS-SRV-USG:terminated_at": null, "OS-EXT-AZ:availability_zone": "nova", "user_id":
"335b60ff72424ab4b387ed001729d26d", "name": "console", "created": "2015-11-16T16:56:41Z", "tenant_id": "243f55729ce9487e933c1608c6673f6b", "OS- DCF:diskConfig": "AUTO", "os-extended-volumes:volumes_attached": [], "accessIPv4": "", "accessIPv6": "", "progress": 0, "OS-EXT-STS:power_state": 1,
"config_drive": "", "metadata": {"role": "console-server"}}]}
基本的 機能要素
OpenStack が提供す 機能
ー ー 与え ー 内 自由 環境 構築
o 仮想 ン ン ン く ー ー
o 仮想 ワー 仮想 ー ー
o ー
o ー 操作 等々
他 OpenStack 組 込 更 多数 機能 PaaS 利用可能
A B
仮想 ー ー
仮想 ワー
仮想 ン ン ン
or ー ー
ー
外部 ワー
仮想マ ン ン タン 作成
OpenStack IaaS機能 多く 場合 最終的 仮想 ン ン ン 作成 利用
目的
ン ン 作成 最低限必要 情報 以下
o 必要 情報 OpenStack 各 ン ー ン Nova やNeutron等 管理
ー ー
ー
仮想 ワー
セキ ー
キー
セキ ー
ー
仮想 ワー 複数 仮想 ワー
指定可能
キー
m1.small 1vCPU 2GB RAM 20GB Disk
m1.medium 2vCPU 4GB RAM 50GB Disk
m1.large 4vCPU 8GB RAM 80GB Disk
ー ー
起動 ン ン OS
ン ン
適用 簡易 ー ー
OS 内 ー 設定 公開鍵
接続 ワー
仮想ネッ ワー 機能
仮想 ワー 構築 ー ワー 環境 構成
o 仮想 ワー 作成時 ワー 割当
o 時 割当 ワー 制限 あ 通常 ー 帯 利用
A 10.0.0.0~10.255.255.255 10.0.0.0/8
B 172.16.0.0~172.31.255.255 172.16.0.0/12
C 192.168.0.0~192.168.255.255 192.168.0.0/16
o 別 ン あ 重複 割 当 可能
ー IPや OpenStack外 社内 ワー 重複 設定 危険
ン ン 起動時 接続 仮想 ワー 選択
o DHCP ー IP 割 当
o 同 仮想 ン ン ン 間 ー IP 通信
仮想 ー ー 用い 複数 仮想 ワー 間 通信や外部 ワー 通信 可能
o 外部 ワー 定義 管理者 行う必要 あ
外部ネッ ワー
A B
仮想 ワー
192.168.10.0/24
仮想 ワー
192.168.20.0/24
仮想 ワー
192.168.30.0/24 仮想 ー ー
ン ー や
社内 ワー
仮想 ー ー 仮想 ー ー
仮想 ワー
192.168.10.0/24
仮想 ワー
192.168.20.0/24
仮想 ワー
192.168.30.0/24
閉 内ワー
環境 構成可能
Neutron
ー IP ー ン IP Floating IP
外部 ワー 通信 際 仮想 ン ン ン ー ン IP
割 当
o 管理者 外部 ワー 上 ー ン IP 利用可能 IP
ー
o 仮想 ー 上 ー ン IP ー IP NAT 行わ
o ー ン IP 割 当 い場合 仮想 ン ン ン 外部 ワー へ
接続 可能 仮想 ー IP 代表IP ー 接続
ー IP ー IP
WEB ー ー DB ー ー
ー ン IP
外部 ワー
ー ン IP 接続
内 ン
ン 同士 ー IP
接続
外部ネッ ワー
内部 外部 ー
ン IP く 接続可能
Neutron
ー ー ー Flavor
仮想 ン
o ソー 単価 十分 下 現在 1 1 細 く指定 少 い選択肢
選 う 効率 良い いう ンセ
o vCPU 数 量 数種 構成
o 以下 3 あ
通常 ワ
nova 再 ー 化 際 削除 揮発性 領域
# nova flavor-list
+----+---+---+---+---+---+---+---+---+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | +----+---+---+---+---+---+---+---+---+
| 10 | t1.small | 2048 | 10 | 0 | | 1 | 1.0 | True |
| 11 | t1.medium | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 12 | t1.large | 2048 | 20 | 10 | | 1 | 1.0 | True |
| 13 | t1.xlarge | 2048 | 20 | 10 | 2048 | 1 | 1.0 | True | +----+---+---+---+---+---+---+---+---+
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 10G 0 disk
└─vda 5 : 0 0G 0 part /
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 20G 0 disk
└─vda 5 : 0 0G 0 part /
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 20G 0 disk
└─vda 5 : 0 0G 0 part / vdb 252:16 0 10G 0 disk /mnt
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 20G 0 disk
└─vda 5 : 0 0G 0 part / vdb 252:16 0 10G 0 disk /mnt vdc 252:32 0 2G 0 disk [SWAP]
RXTX_Factor
ワー 対 帯域制限 設定 倍率
設定 Xen/NSX 有効 ー ー
Extra_Spec
追加 ー ー 与え 可能
CPU 対 制限やI/O 与え
可能 ー ー 使え Nova や
Neutron Cinder 依存
Nova
ー
ン ン 上 OS 起動 ン ー ー
o 利用 形式 raw qcow2 VDI VMDK VHD 等 あ
OpenStack ー 手動 作成 いく 作法 あ
o OS 方法 異 詳細 以下 参照 く い
o http://docs.openstack.org/ja/image-guide/content/ch_creating_images_manually.html
他 手段 各 や ン ー 提供 公式 ー あ
o 本演習環境 公式 ー 利用 い
更 別 手段 既 登録 ー 用い OS 起動 変更 施
保存 可能
ー ン ー
ン ー ー
ン ン 作成
起動 ン ン
ン ー や
必要 設定 行う
差分
差分
ン ン 作成
差分
ン ー や
設定 施 状態
ン ン 起動可能
Glance
セキ ー
仮想 ン ン ン 受信 セキ ー
ン
o セキ ー 作成 宛先 ー 送信元IP
条件 受信 許可 指定
o 仮想 ン ン ン 起動時 適用 セキ ー 指定
他 セキ ー
open_all 割当 ー
ー 全 通信 許可
SSH 接続 全 ワー
許可
RDP 接続 192.168.0.0/16
許可
Neutron
キー
事前 公開鍵 登録 仮想 ン ン ン 起動時
OS 埋 込
o 公開鍵 登録 ー 個別 行い 複数 ー キー 共有
形
o 登録 鍵 OpenStack 上 作成 ー 作
成 キー 利用 安全
秘密鍵
公開鍵
事前 公開鍵 ー ー へ登録
公開鍵 ー ー
ン ン 作成時
自動的 公開鍵 設定
ー ー 秘密鍵 利用 ン ン へ セ
予 秘密鍵
公開鍵 作成
Nova
ー 機能 基本
OpenStack ー 機能 永続 ー 格納 仮想 ー ン
ンへ提供
機能 機能 ー 複製機能等 通常 ー
備え 機能 ー い
ン ン A ン ン B
新規 仮想 ー
作成
Original
Snapshot/CloneBackup
Copy Volume
Copy Volume
Copy Volume
ン ン C
ン ン へ
別 ンへ再接続 同
ー 参照可能
*同時 ン ン
へ 接続 い 一度
ン ンA
必要 あ *
ー 内 簡
易
別 ー へ
ー 複製
Cinder
ー 機能 進 使い方 - Boot From Volume
仮想 ー OS ン ー ー 可能(Bootable)
ー 作成 可能
o 仮想 ン ン ン 停止 OS 領域へ 変更 破棄 残
o ー 機能 通常 ー 同様 利用
o 作成 仮想 ン ン ン 起動 ン
新 い ー 用意 可能
Bootable Vol
ン ー ー
Volume
ン ー 内容
ー ー ー
可能(Bootable) ー
作成可能
Bootable Volume 指定
ン ン 起動
Boot From Volume
Snapshot/Clone
Backup
Snapshot
通常 ー う 複製
や ーン 可能
Cinder
ン ー ー
ン ー ー 管理者 作成
ー ー へ所属
管理者 対 ー 設定
ー ー 設定 所属
Keystone
ータ
対 様々
ー ー 設定
中 制限 い や
ン ー ン 単位 設
定 い あ
o う ー
nova.conf や neutron.conf
い 指定
各 ン ー ン
ー
AWS S3 似 性質 持 ー
o = + ー 標準+ ー 任意
へ セ REST API 利用
弱い一貫性 強い ー 保護 ー ン 特徴
o 最新 ー ン Erasure Coding 対応 い
Proxy Node Proxy Node Proxy Node
Storage Node
Storage Node
Storage Node
Storage Node
Storage Node
Storage Node
Storage Node
Storage Node
Storage Node
Storage Node
Storage Node
Storage Node
Storage Node
Storage Node
Storage Node File A
File B
File A
File A File B
File B ユーザ
ReST API
ReST API 並列配置可能
並列配置可能
Swift
こ ま ー 差異
Direct Attached Storage DAS
o ー 直接 ー ー ン 接続
o 基本的 : 接続 ン セ 性能 優
Network Attached Storage NAS
o ー ワー TCP/IP やUDP 接続
o :N 接続 可能 セ 制御機能 充実 ー ー
利用
Direct Attached Network Attached Internet Attached(Swift)
FC/SCSI/SATA
CIFS/NFS/FTP
ンターネッ
HTTP(S)
近い ー ン 距離 遠い
少 い ン 数 多い
ー ッ
セ HTTP 利用 ン ー ー 非常 相性
良い
o 構造上 複数 へ多数 ー ー 同時 セ 場合 高 ー
出や い ン ー ー 相性 良く
o 反面 細 セ 制御等 苦手
以下 ー 利用 ン ン 配信 例
o 例 画像 Swift上 配置 ン 直接参照
負荷 軽減 い
o 従来 手法 共有 ー 背後 設置 ー
読 出 必要 あ WEB ー ーへ 負荷 増大等 問題 あ
日本OpenStack ー 会 著 OpenStack ン ー ン ー ンソー ー 構築入門 翔泳社
ン ー 設定
OpenStack ン ー
OpenStack 構成 各 ン ー ン ー ーへ配置 設定 施 い
http://docs.openstack.org/openstack-ops/content/architecture.html