37
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! レッドハット株式会社 中井悦司 / Etsuji Nakai Senior Solution Architect and Cloud Evangelist v1.1 2013/07/29 第一部 OpenStack入門

エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

エンジニア向け夏期特別講座

〜 Red Hat OpenStack徹底解説!

レッドハット株式会社中井悦司 / Etsuji NakaiSenior Solution Architectand Cloud Evangelistv1.1 2013/07/29

第一部 OpenStack入門

Page 2: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

2

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

自己紹介

好評発売中!

中井悦司(なかいえつじ)– Twitter @enakai00

日々の仕事– Senior Solution Architect and

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

昔とった杵柄– 素粒子論の研究(超弦理論とか)– 予備校講師(物理担当)– インフラエンジニア(Unix/Linux専門)

Page 3: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

3

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

目次

OpenStackのこれまで

RDO & Red Hat Enterprise Linux OpenStack Platform

利用者から見たOpenStackの機能– 仮想ネットワーク– 仮想マシンインスタンス– ブロックボリューム– プロジェクト管理

メタデータとCloud-Init

(*) 本資料は2013年7月時点のRDO(Grizzly)、および、Red Hat OpenStack v3.0に基づく情報を提供しています。

Page 4: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

4

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

OpenStackのこれまで

Page 5: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

5

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

OpenStackとは

Amazon EC2/S3相当のクラウドインフラを自分で構築するためのソフトウェア– 類似品としては、CloudStack, Eucalyptus などが有名。

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

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

– 目標は「オープンスタンダードなHWとSWで誰でもクラウドサービスが提供できるようにすること」

Page 6: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

6

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

これまでの開発状況

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

現在の最新リリース

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

Page 7: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

7

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

これまでの開発状況

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

現在の最新リリース

OpenStack Foundation設立!

Page 8: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

8

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

Red HatはOpenStack Foundationのプラチナスポンサーに

http://sourceforge.jp/magazine/12/04/13/0359223

Page 9: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

9

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

OpenStack開発への主要な貢献企業(Essex, Folsom)

OpenStack Summit 2012 San DiegoでのRackSpace社による発表

Page 10: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

10

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

OpenStack開発への主要な貢献企業(Grizzly)

http://blog.bitergia.com/2013/04/04/companies-contributing-to-openstack-grizzly-analysis/

Page 11: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

11

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

これまでの開発状況

ネットワーク仮想化機能をプラグイン化するQuantum(*)が

コアコンポーネントに

現在の最新リリース

(*) 現在はNeutronに名称変更

Page 12: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

12

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

RDO&

Red Hat Enterprise Linux OpenStack Platform

Page 13: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

13

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

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

http://special.nikkeibp.co.jp/ts/article/ac0e/143743/

Page 14: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

14

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

RDO :RHELでOpenStackを利用するユーザ向けのコミュニティ活動

OpenStack Foundation

RDOは、RHEL/FedoraでOpenStackを利用するユーザのコミュニティです。

主な活動内容– RHEL/Fedora用のRPMパッケージを提供

• http://repos.fedorapeople.org/repos/openstack/openstack-grizzly/– Puppetベースのインストーラ「Packstack」を提供– QAフォーラムを運営(Red Hatの開発者が回答してくれることもあります。)

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

使う人々のコミュニティ

http://openstack.redhat.com

Page 15: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

15

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

(参考)RDOとPackstackでデモ環境を簡単構築

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

em1

em2

Intel-VT/AMD-V対応サーバ

ホストアクセス用NIC

VMアクセス用NIC

インターネット

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

Fedora18

4GB以上のメモリ

「RDOデモ環境を確実に構築する手順」http://d.hatena.ne.jp/enakai00/20130625/1372132365

手順はこちらを参照

Page 16: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

16

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

Red Hat Enterprise Linux OpenStack Platform

RDOをベースとした安定版を有償サポート付きの製品版として提供していきます。

開発版 製品版

Page 17: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

17

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

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

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

– 仮想ネットワーク– 仮想マシンインスタンス– ブロックボリューム

データ領域 ブロックボリューム

仮想ルータ

仮想スイッチ

外部ネットワーク

プロジェクト環境

OpenStackユーザ

OS領域

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

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

仮想マシンインスタンス

Page 18: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

18

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

利用者から見たOpenStackの機能〜仮想ネットワーク〜

Page 19: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

19

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

仮想ネットワーク (1)

プロジェクトごとに仮想ルータを用意して、その背後にプライベートなネットワーク環境を構成します。

– ブロードバンドルータで家庭内LANをインターネットに接続するような感覚です。 仮想スイッチを作成して、ルータに接続します。

– それぞれの仮想スイッチは、プライベートIPの独立したサブネットを持ちます。 仮想マシンインスタンス起動時は、接続する仮想スイッチを選択します。

– DHCPでプライベートIPアドレスが割り当てられます。– 同じプロジェクトの仮想マシンインスタンス間は、プライベートIPで通信できます。

仮想スイッチ192.168.101.0/24

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

外部ネットワーク

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

仮想スイッチ192.168.102.0/24

Page 20: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

20

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

仮想ネットワーク (2)

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

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

– 仮想ルータ上で、フローティングIPとプライベートIPのNATが行われます。– フローティングIPを割り当てない場合でも、仮想マシンインスタンスから外部ネット

ワークへの接続は可能です。(仮想ルータのIPアドレスを代表IPとして、マスカレード接続します。)

Webサーバー DBサーバー

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

フローティングIP

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

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

Page 21: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

21

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

セキュリティグループによるパケットフィルタリング

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

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

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

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

Pingは192.168.0.0/16からのみ許可

セキュリティグループ「Development」の仮想マシンインスタンスからは任意のTCP接続を許可

Page 22: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

22

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

利用者から見たOpenStackの機能〜仮想マシンインスタンス〜

Page 23: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

23

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

外部ネットワーク

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

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

– インスタンスタイプ– テンプレートイメージ (*)

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

OS領域テンプレート

イメージ

複製

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

セキュリティグループ

形式 説明

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

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

qcow2 Linux KVMが利用する形式

VDI VirtualBoxが利用する形式

VMDK VMwareが利用する形式

VHD Hyper-Vが利用する形式

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

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

Page 24: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

24

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

キーペアによるSSHログイン認証

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

せん。

ユーザー情報データベース

仮想マシンインスタンス

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

秘密鍵

公開鍵

①公開鍵を事前に登録

③秘密鍵で認証

Page 25: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

25

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

インスタンスタイプの指定

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

(m1.tinyでは拡張しません。)

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

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

ディスク一時

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

m1.tiny 1 512MB 0GB 0 0

m1.small 1 2GB 20GB 0 0

m1.medium 2 4GB 40GB 0 0

m1.large 4 4GB 80GB 0 0

m1.xlarge 8 8GB 160GB 0 0

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

ルートディスク

一時ディスク

Page 26: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

26

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

仮想マシンインスタンスの「スナップショット」

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

OS領域

テンプレートイメージ

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

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

OS領域

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

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

Page 27: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

27

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

利用者から見たOpenStackの機能〜ブロックボリューム〜

Page 28: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

28

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

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

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

データ領域

③スナップショット作成

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

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

データ領域

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

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

OS領域 OS領域

Page 29: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

29

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

ブロックボリュームからの起動

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

– 仮想マシンインスタンスを停止しても、OS領域への変更が破棄されずに残ります。– スナップショットを作成しておき、仮想マシンインスタンスを起動するタイミングで、

スナップショットから新しいブロックボリュームを用意することも可能です。

OS領域

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

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

OS領域テンプレート

イメージ

OS領域

スナップショット作成

OS領域

複製

(*) この操作はGrizzlyのHorizon Dashboardには搭載されていません。コマンドラインでのAPI操作が必要です。

Page 30: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

30

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

利用者から見たOpenStackの機能〜プロジェクト管理機能〜

Page 31: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

31

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

新規プロジェクト/ユーザの作成

Page 32: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

32

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

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

現在の使用量 指定月の累計

Page 33: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

33

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

プロジェクト全体でのリソース使用量の上限設定

Page 34: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

34

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

メタデータとCloud-Init

Page 35: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

35

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

仮想マシンインスタンスのメタデータ

ゲストOSから「http://169.254.169.254」にアクセスすると、仮想マシンインスタンス固有の情報が取得できます。これを「メタデータ」と呼びます。

ゲストOSに「Cloud-Init」というツールを導入すると、仮想マシンインスタンス起動時にメタデータを利用して、ゲストOSの自動セットアップを行います。

– 一時ディスクのマウントやスワップディスクの構成は、Cloud-Initが行なっています。– 公式ドキュメント http://cloudinit.readthedocs.org/en/latest/

$ curl http://169.254.169.254/2009-04-04/meta-data/hostnamevm03.novalocal$ curl http://169.254.169.254/2009-04-04/meta-data/local-ipv4192.168.101.4$ curl http://169.254.169.254/2009-04-04/meta-data/public-keys/0/openssh-keySsh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5W2IynhVezp+DpN11xdsY/8NOqeF8r7eYqVteeWZSBfnYhKn8D85JmByBQnJ7HrJIrdMvfTYwWxi+swfFlryG3A+oSll0tT71FLAWnAYz26ML3HccyJ7E2bD66BSditbDITKH3V66oN9c3rIEXZYQ3A+GEiA1cFD++R0FNKxyBOkjduycvksB5Nl9xb3k6z4uoZ7JQD5J14qnooM55Blmn2CC2/2KlapxMi0tgSdkdfnSSxbYvlBztGiF3M4ey7kyuWwhE2iPBwkV/OhANl3nwHidcNdBrAGC3u78aTtUEwZtNUqrevVKM/yUfRRyPRNivuGOkvjTDUL/9BGquBX9Q== enakai@kakinoha

$ curl http://169.254.169.254/2009-04-04/meta-data/block-de-mapping/root/dev/vda$ curl http://169.254.169.254/2009-04-04/meta-data/block-device-mapping/ephemeral0/dev/vdb$ curl http://169.254.169.254/2009-04-04/meta-data/bloe-mapping/swap/dev/vdc

メタデータの例

ルートディスク/一時ディスク/スワップディスクに対応するデバイス名

Page 36: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

36

Red Hat OpenStack徹底解説!〜第一部 OpenStack入門

カスタマイズ・スクリプト(User Data)による自動化

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

Cloud-Initは、カスタマイズ・スクリプトを解釈して、さまざまな自動化を実現します。–下図はシェルスクリプトを渡して、「/etc/motd」を設定しています。– この他にもCloud-Init独自の構文で、処理内容を指示することができます。

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

Page 37: エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門

Thank you