SlideShare una empresa de Scribd logo
1 de 106
Descargar para leer sin conexión
OpenStack勉強会

~その時何が起こっているのか~


                  TIS株式会社
                  コーポレート本部
                  戦略技術センター

                      小原雄樹
目次

1.OpenStack概要
     1. OpenStackとは
     2. OpenStackの歴史
2.OpenStackの機能説明(デモ)
     1. デモ環境の説明
     2. 管理画面(Horizon)
     3. 認証(Keystone)
     4. イメージ管理(Glance)
     5. コンピューティング機能(Nova)
     6. ボリューム機能(Cinder)
     7. ネットワーク機能(Quantum)
3.他サービスとの比較
0.はじめに
勉強会の目的


目的

OpenStackのインスタンス操作に必要となる一連の動作をデモ環境で
実行しながら、内部でどういった機能を使って動作しているのかを広く
浅く理解する。
1.OpenStack概要
OpenStackとは




              OpenStackとは

      オープンソースのIaaS基盤 です
OpenStackとは
XaaSについてのまとめ (Wikipedia[クラウドコンピューティング]より)

SaaS
  インターネット経由のソフトウェアパッケージの提供。電子メール、グループウェア、CRMなど。セール
  スフォース・ドットコムのSalesforce CRM、マイクロソフトのMicrosoft Online Services、Googleの
  Google Appsがある。オープンソースのSaaS構築フレームワークとしてはLiferayがある。


PaaS
  インターネット経由のアプリケーション実行用のプラットフォームの提供。仮想化されたアプリケーショ
  ンサーバやデータベースなど。ユーザーが自分のアプリケーションを配置して運用できる。セールスフ
  ォース・ドットコムのForce.comプラットフォーム、GoogleのGoogle App Engine、AppScale、マイクロ
  ソフトのWindows Azure、Amazon.comのAmazon S3やAmazon DynamoDBやAmazon
  SimpleDBなど。


HaaSまたはIaaS
  インターネット経由のハードウェアやインフラの提供。サーバー仮想化やデスクトップ仮想化や共有デ
  ィスクなど。ユーザーが自分でOSなどを含めてシステム導入・構築できる。Amazon.comのAmazon
  EC2など。
OpenStackの歴史

 OpenStackの構成概要図
                                           AWSのS3相当

          AWS Management
          Consoleに相当




              AWSのEC2相当


                            機能毎にモジュール化されている
  AWSのEBS相当                 開発言語はpython



                                       引用元:http://ken.pepple.info/
OpenStackの歴史
2010年に2つのオープンソースを組み合わせてプロジェクトがスタート
Swift
     –   Rackspace社が提供している商用クラウドサービス(CloudFiles)をオープンソース化したもの。オブジェクトストレージ機能
         を提供する。
Nova
     - NASAがクラウド基盤開発のために独自開発したソフトウェア(Nebula)をオープンソース化したもの。クラウド基盤のコンピ
       ューティング機能などを提供する。

                                                                                     Swift




                 Nova




                                           2010

                                           Oct 21 OpenStack first release (Austin)
                                           この時点ではNovaとSwiftをOpenStackとして1つにパッケ
                                           ージングしただけ

                                                                 引用元:http://ken.pepple.info/
OpenStackの歴史




                          Glance                        Swift




         Nova
                2011

                Feb 3 OpenStack (Bexar) release
                イメージ管理(Glance)が登場することで初めてNovaと
                Swiftが連携できるようになる

                Apr 15 OpenStack (Cactus) release
                Sep 22 OpenStack (Diablo) release
                この辺からリリーススケジュールが半年に一回になる
                                    引用元:http://ken.pepple.info/
OpenStackの歴史

                Horizon




                                  Glance                           Swift




                           2012

         Nova              Apr 5 OpenStack (Essex) release
                           統合認証(Keystone)と管理画面(Horizon)が登場

                           Sep 27 OpenStack (folsom) release
                           Novaからネットワーク機能(Quantum)とボリューム
                Keystone   機能(Cinder)が分離

                           Apr 4 OpenStack (Grizzly) release予定


                                               引用元:http://ken.pepple.info/
OpenStackの歴史

               Horizon




 quantum


                   Nova          Glance                           Swift




                          2012

                          Apr 5 OpenStack (Essex) release
                          統合認証(Keystone)と管理画面(Horizon)が登場
  cinder
                          Sep 27 OpenStack (folsom) release
                          Novaからネットワーク機能(Quantum)とボリューム
               Keystone   機能(Cinder)が分離

                          Apr 4 OpenStack (Grizzly) release予定


                                              引用元:http://ken.pepple.info/
2.OpenStackの機能説明(デモ)
環境
本日使用するデモ環境

  ハードウェア

     項目        値

     CPU       Xeon(R) E5405 (2GHz/12MB) x 1 (4 core)

     メモリ       4GB

     NIC       8port

     ディスク      73GB x 2 (RAID1) (実効73GB)

     外部ディスク    147GB x 5 (RAID5) (実効550GB)


  ホストOS: Ubuntu 12.04 LTS
  OpenStack導入方式: devstack


 【注意点】
  OpenStack All-in-one環境を構築する場合のサーバ推奨スペック

  vCPU:1個以上
  メモリ:2GB以上(OpenStack起動、インスタンス未起動状態で1GB超消費します)
  ディスク:20GB以上(OS最小インストール+OpenStackコンポーネントで10GB程度消費します)
  NIC:1個以上
devstackとは
devstackとは

  •   OpenStackのインストール用スクリプト。
  •   OpenStack自体の導入を簡略化するためにOpenStackの開発者が開発している。

devstackの使い方

       4ステップでOpenStack環境のできあがり!

       1.   # git clone http://github.com/openstack-dev/devstack.git
       2.   # cd devstack
       3.   環境にあわせてlocalrcを作成する                                  githubから最新の
                                                                 devstackをとってくる
       4.   # ./stack.sh
                                   devstack実行スクリプ
                                   トをたたく



      stack.sh初回実行時はOpenStack関連パッケージをネットワーク経由でダウンロー
      ドしてくるため構築完了に30分~1時間程度かかる。(ネットワーク転送速度次第で
      すが)
      2回目以降は5~10分程度で完了。
devstackとは
devstackの主要なファイル

   stack.sh
          devstackの構築用スクリプト本体。
          既に構築済みの環境で実行すると全設定を削除して再構築される。
   unstack.sh
          devstackを停止する場合に実行する。
   rejoin-stack.sh
          devstack構築済みの環境で停止しているdevstackを再実行する場合に実行する。

   localrc
          devstackの最初に読み込まれる。デフォルトの環境変数を変更したい場合にはこれに
            記載する。
   local.sh
          stack.shの一番最後に呼び出されるスクリプト。自前で実行したいコマンドがある場合
            はこれに記載する。

   openrc
        OpenStack操作時の環境変数をセットするための定義ファイル
        # source openrc [username] [tenantname]
システム構成
devstack導入後のシステム構成
                                                           複数台構成する場合は時
                                                           刻同期必須。
 ホスト

             Dashboard
              (Horizon)
               Apache                             NTP

                                                           OpenStack各コンポーネン
                                                           トが情報置き場として利用
                                                           するデータベース。
         Identity          Image
       (Keystone)         (Glance)               MySQL




                                                           AMQPのOSS実装。

       Compute                        Block
                         Network                           ソフトウェア間の処理のや
        (Nova)                       Storage    RabbitMQ
                        (quantum)                          りとり(メッセージング)を仲
                                     (Cinder)
                                                           介するものと思ってくださ
                                                           い。


        QEMU         Open vSwitch     LVM


                                HW
システム構成
devstack導入後のシステム構成

 ホスト

             Dashboard
              (Horizon)
               Apache                             NTP




         Identity          Image
       (Keystone)         (Glance)               MySQL




                                                           コントローラ機能
       Compute                        Block
                         Network
        (Nova)                       Storage    RabbitMQ
                        (quantum)
                                     (Cinder)
                                                           下の機能のみ切り出して
                                                           構成したホストはコンピュ
        QEMU         Open vSwitch     LVM                  ーティングノードと呼ばれ
                                                           たりする
                                HW
システム構成
devstack導入後のシステム構成

 ホスト

             Dashboard
              (Horizon)                                       こんな風にノードの追加が
                                                  NTP         可能。
               Apache                                         (ネットワーク、ボリューム
                                                              機能も同様)


         Identity          Image
       (Keystone)         (Glance)               MySQL




                                                           追加ホスト
       Compute                        Block                (コンピューティングノード)
                         Network
        (Nova)                       Storage    RabbitMQ
                        (quantum)
                                     (Cinder)                   Compute
                                                                 (Nova)

                                                                              ・・・
        QEMU         Open vSwitch     LVM                       QEMU


                                HW                               HW
管理画面
ホスト

            Dashboard
             (Horizon)
              Apache                              NTP




        Identity          Image
      (Keystone)         (Glance)                MySQL




      Compute                         Block
                          Network
       (Nova)                        Storage    RabbitMQ
                         (quantum)
                                     (Cinder)




       QEMU         Open vSwitch      LVM


                               HW
管理画面
Dashboard (Horizon) : 管理画面の提供

  【役割】
  • 管理者、一般ユーザが利用する管理画面
    の提供
  【機能】
  • GUIによる各種操作
  • コンポーネントへのAPIアクセス

                           HTTP(S)




                            horizon




  nova-api   glance-api   keystone-api   cinder-api   quantum-api
管理画面
horizon-demo 1) 管理画面の裏側




                                                                     HorizonはDjango(pythonで記述された
                                                                      Webアプリケーションフレームワーク)で
                                                                      作成されていて、apache上で動作してい
                                                                      ます。




                                                                               サーバ:80にきたアクセス
                                                                               を全てdjango.wsgiに飛ば
                                                                               している




   Horizon用apache設定ファイル(/etc/apache2/sites-available/horizon)
   <VirtualHost *:80>
       WSGIScriptAlias / /opt/stack/horizon/openstack_dashboard/wsgi/django.wsgi
   ・
   ・
   ・
認証
ホスト

            Dashboard
             (Horizon)
              Apache                              NTP




        Identity          Image
      (Keystone)         (Glance)                MySQL




      Compute                         Block
                          Network
       (Nova)                        Storage    RabbitMQ
                         (quantum)
                                     (Cinder)




       QEMU         Open vSwitch      LVM


                               HW
認証
Identity Service (Keystone) : 統合認証基盤

  【役割】                                      認証処理フロー
  • OpenStack各コンポーネントが利用する
    統合認証機能の提供
                                               client                           keystone-all
  【機能】
  • 認証および認可
                                                        1) 認証要求
     • ユーザID/パスワードで認証を行い
        トークンを発行する。                                      2) トークンの発行

        •   ユーザはトークンを利用して
                                                        3) テナント情報の要求
            OpenStack各サービスにアクセスす
            ることができる。                                    4) テナントリスト

  OpenStack Identity API                                5) エンドポイント情報の要求
  (Horizon,コマンド等)          ホスト上で起動する
                           デーモン。keystone                6) エンドポイントリスト
                           本体。
       keystone-all
                           対応しているバック          クライアントは指定されたエンドポイントにトー
                           エンド(プラグイン形         クンを指定してアクセスすることで各
                           式で選択可能)            OpenStackの操作をすることができるようにな
         Backend           KVS, SQL, PAM,     る。
                           LDAPなど

                                               参考:http://www.slideshare.net/h-saito/openstack-study9-josug
認証
keystone-demo 1) 認証処理




                        ユーザー名、パスワードを
                        入れてログインをクリックす
                        ると管理画面が表示される
認証
keystone-demo 1.a) 認証処理の裏側 - トークンの発行 -



       client                     keystone-all        クライアントからkeystoneに対してユーザ
                                                       ID・パスワードで認証する。
                1) 認証要求                               認証が通るとトークンが発行される。

                2) トークンの発行
                                                       トークン:keystoneに認証されたユーザに発行され
                                                       る許可証



    コマンドでトークンを発行する
    $ curl ¥
     -X 'POST' ¥
     -d '{"auth":{"passwordCredentials":{"username": "demo", "password":"password"}}}' ¥
     -H 'Content-type: application/json' ¥
     http://localhost:5000/v2.0/tokens
                                                   ユーザ名、パスワードをセットしてkeystone
                                                   のAPIに投げる

    結果
    {"access": {"token": {"expires": "2012-12-22T05:55:05Z", "id":
    "a62be0784aee470d883ede36abcbd509"}, "serviceCatalog": {}, "user": {"username": "demo",
    "roles_links": [], "id": "fc6e7accbdde47a8931d0ba772e1001d", "roles": [], "name":
    "demo"}}}
                             発行されたトークン
認証
keystone-demo 1.b) 認証処理の裏側 - テナントの取得 -



      client                  keystone-all    取得したトークンを使ってテナント情報を
                                               要求する。
               3) テナント情報の要求
                                             テナント(=プロジェクト):ユーザが所属するグループ
               4) テナントリスト




                                             devstackにより作成されるユーザとテナント



                                                 tenant: admin


                                                                      tenant: demo


                                                  user: admin     user: demo




                                                                      tenant:
                                                                 invisible_to_ad
                                                                        min
認証
keystone-demo 1.b) 認証処理の裏側 - テナントの取得 -



       client                    keystone-all        取得したトークンを使ってテナント情報を
                                                      要求する。
                3) テナント情報の要求
                                                     テナント(=プロジェクト):ユーザが所属するグループ
                4) テナントリスト




    コマンドでテナントリストを取得する                                                   先ほど取得したトークンIDセッ
                                                                        トしてリクエストを投げる
    $ curl ¥
     -H "X-Auth-Token: a62be0784aee470d883ede36abcbd509" ¥
     http://localhost:5000/v2.0/tenants

    結果
    { "tenants": [ { "description": null, "enabled": true, "id":
    "596b667667d44abc8c834561eb9d3af5", "name": "demo" }, { "description": null, "enabled":
    true, "id": "8664a5810ba540508c304dc5b9b6e133", "name": "invisible_to_admin" } ],
    "tenants_links": [] }

                                     所属しているテナントIDとテナント名
                                     (demoユーザは、demoとinvisible_to_adminというテナントに所属
                                     している)
認証
keystone-demo 1.c) 認証処理の裏側 - エンドポイントの取得 -



      client                    keystone-all         取得したトークンを使ってテナント情報を
                                                      要求する。
               5) エンドポイント情報の要求
                                                     エンドポイント:OpenStackの各コンポーネントにアク
               6) エンドポイントリスト                         セスするAPIのURL情報




                                                 horizon                   ここのURL




                 nova-api      glance-api      keystone-api   cinder-api   quantum-api
認証
keystone-demo 1.c) 認証処理の裏側 - エンドポイントの取得 -



      client                     keystone-all        取得したトークンを使ってテナント情報を
                                                      要求する。
               5) エンドポイント情報の要求
                                                     エンドポイント:OpenStackの各コンポーネントにアク
               6) エンドポイントリスト                         セスするAPIのURL情報


                                                             トークンIDとテナントセットし
                                                             てリクエストを投げる
     コマンドでエンドポイントリストを取得する
     $ curl -X 'POST' ¥
      -d '{"auth":{"token":{"id": "a62be0784aee470d883ede36abcbd509"}, "tenantId":
     "596b667667d44abc8c834561eb9d3af5"}}' ¥
      -H "X-Auth-Token: a62be0784aee470d883ede36abcbd509" ¥
      -H 'Content-type: application/json' ¥
      http://localhost:5000/v2.0/tokens

     結果
                                                                         エンドポイントのリストとそこにアクセスする
     {"access": {"token": {"expires": "2013-01-12T08:15:30Z", "id":      ためのトークンが取得できる。
     "8778b2cbc63640e9b7a181f194fcfeac",
     (省略)
     {"endpoints": [{"adminURL": "http://192.168.56.101:9696/", "region": "RegionOne",
     (省略)
認証
keystone まとめ

 OpenStack各コンポーネントが認証基盤として利用している。
 認証したアカウントにトークンを発行する。
 キーワード
  トークン:keystoneに認証されたユーザに発行される許可証

  テナント(=プロジェクト):ユーザが所属するグループ

  エンドポイント:OpenStackの各コンポーネントにアクセスするAPIのURL情報




その他まめ知識

 トークンの有効期限はデフォルトで1日もしくはユーザが削除されるまで。
イメージ管理
ホスト

            Dashboard
             (Horizon)
              Apache                              NTP




        Identity          Image
      (Keystone)         (Glance)                MySQL




      Compute                         Block
                          Network
       (Nova)                        Storage    RabbitMQ
                         (quantum)
                                     (Cinder)




       QEMU         Open vSwitch      LVM


                               HW
イメージ管理
Image Service (Glance) : インスタンスイメージの管理

  【役割】
                                                          対応しているイメージ形式
  • インスタンスイメージの管理
                                                          種類      説明
  【機能】                                                    raw     RAWイメージ
  • イメージの追加・削除                                            iso     ISOイメージ
                                                          vhd
                                                                  各種仮想環境の仮想ディスクイメー
                                                          vmdk
             OpenStack Image API                                  ジ(Hyper-V、VMware、VirtualBox)
             (Horizon,コマンド等)          APIアクセスの待           vdi
                                      受け
                                                                  QEMUによってサポートされている
                                                          qcow2
                                                                  イメージ形式
                                                          aki
  keystone        glance-api
                                                          ari     Amazonのイメージ形式
                                      イメージメタデー            ami
                                      タの管理

    DB          glance-registory                          対応しているコンテナ形式
                                                          種類 説明
                                                          ovf    OVF形式
                                   対応しているイメージストア
                                                          aki
                     Store         (格納場所はプラグイン形式
                                   で選択可能)                 ari    Amazon形式
                                   ファイルシステム, Swift,       ami
                                   RADOS block devices,          コンテナやメタデータがない場
                                   Amazon S3, HTTP        bare
                                                                 合
イメージ管理
glance-demo 1) イメージリストの取得




                            devstackは構築完了後初期状態で
                            cirrosというOSイメージが登録されて
                            いる。
                            有識者によるとubuntuの軽量版みた
                            いなものらしい。
イメージ管理
glance-demo 1) イメージリストの取得
 登録されているイメージリストの取得
 $ glance image-list                              今管理画面に表示され
 +--------------------------------------+---------------------------------+-------------+------------------+-----
                                                  ているのはこれ。
 -------+--------+
 | ID                                   | Name                            | Disk Format | Container Format | Size
 | Status |
 +--------------------------------------+---------------------------------+-------------+------------------+-----
 -------+--------+
 | cf055b1d-a7f7-4a92-b2b8-df53f7bb06a3 | cirros-0.3.0-x86_64-uec         | ami         | ami              |
 25165824   | active |
 | 87f37a8d-f121-4411-9e54-e9804e16a254 | cirros-0.3.0-x86_64-uec-kernel | aki          | aki              |
 4731440    | active |
 | 5c1bbfad-2d53-4e6f-adb8-5d2c48b7aed6 | cirros-0.3.0-x86_64-uec-ramdisk | ari         | ari              |
 2254249    | active |
 +--------------------------------------+---------------------------------+-------------+------------------+-----
 -------+--------+

 イメージ保存先(ファイルシステム)
 $ ls -l /opt/stack/data/glance/images/
 -rw-r----- 1 user user    2254249 12月 6 16:10 5c1bbfad-2d53-4e6f-adb8-5d2c48b7aed6
 -rw-r----- 1 user user    4731440 12月 6 16:10 87f37a8d-f121-4411-9e54-e9804e16a254
 -rw-r----- 1 user user   25165824 12月 6 16:11 cf055b1d-a7f7-4a92-b2b8-df53f7bb06a3


                                                    IDと同名でファイルが作
                                                    成されている。
イメージ管理
glance-demo 2) イメージの追加

 イメージの追加
 $ glance image-create --name="ubuntu" --disk-format=vdi --container-format=bare --is-public=true ¥
  < ubuntu.vdi


 $ glance image-list
 +--------------------------------------+---------------------------------+-------------+------------------+-
 -----------+--------+
 | ID                                   | Name                            | Disk Format | Container Format |
 Size       | Status |
 +--------------------------------------+---------------------------------+-------------+------------------+-
 -----------+--------+
 | cf055b1d-a7f7-4a92-b2b8-df53f7bb06a3 | cirros-0.3.0-x86_64-uec         | ami         | ami              |
 25165824   | active |
 | 87f37a8d-f121-4411-9e54-e9804e16a254 | cirros-0.3.0-x86_64-uec-kernel | aki          | aki              |
 4731440    | active |
 | 5c1bbfad-2d53-4e6f-adb8-5d2c48b7aed6 | cirros-0.3.0-x86_64-uec-ramdisk | ari         | ari              |
 2254249    | active |
 | 99abc396-6962-4ae0-909a-cbccdd9c57ea | ubuntu                          | vdi         | bare             |
 2702217216 | active |
 +--------------------------------------+---------------------------------+-------------+------------------+-
 -----------+--------+


                        追加されたイメージ。管
                        理画面にも反映される。
イメージ管理
glanceまとめ

 OpenStackのインスタンスのイメージ管理を担当している。
 主要なイメージ形式(RAW,ISO,各種仮想マシンイメージ)に対応し
  ている。

その他まめ知識

 イメージの登録はコマンドで実施する必要がある。管理画面からのイメージアップ
  ロードは(まだ)できない。
  ※HTTP経由で利用可能なイメージのみ管理画面から登録可

 コマンドのオプション形式を他OpenStackコンポーネントと統一するために、
  essex→folsomでオプションが大幅に変更されている。マニュアル通りにやってコ
  マンドが通らないときは、helpでオプションを確認すべし。
コンピューティング機能
ホスト

            Dashboard
             (Horizon)
              Apache                              NTP




        Identity          Image
      (Keystone)         (Glance)                MySQL




      Compute                         Block
                          Network
       (Nova)                        Storage    RabbitMQ
                         (quantum)
                                     (Cinder)




       QEMU         Open vSwitch      LVM


                               HW
コンピューティング機能
Compute (Nova) : コンピューティング機能

  【役割】
  • コンピューティングリソースの提供・管理
  【機能】
  • インスタンスの作成・削除、起動・停止
                             OpenStack Compute API
                             (Horizon,コマンド等)
             APIアクセスの待
             受け                                              keystone

                                     nova-api


                                                               DB
                                     AMQP

        インスタンス作成
        ノードの管理
                                                                glance
                           nova-                 nova-
                         scheduler              compute
                                                               quantum
                                                Hypervisor
                   インスタンス作
                   成・起動・停止


                                     この他にも nova-cert, nova-consoleauth といったデーモンが起動する。
コンピューティング機能
nova-demo 1) インスタンスの作成
                         イメージの起動
                         をクリック



                           起動するイメージを
                           選択して、インスタン
                           ス名を入力



                            利用するネットワークに
                            チェックを入れて
                            「Launch」をクリック




                                            完成!
コンピューティング機能
nova-demo 1) インスタンスの作成の裏側




 インスタンス作成フロー
                                    OpenStack Compute API
                                    (Horizon,コマンド等)
 1.   API経由でリクエストを受け取る
 2.   インスタンスの作成&起動命令をAMQPに投入              1

 3.   nova-schedulerがメッセージを受け取る                nova-api
 4.   インスタンスの起動ホストを決定してAMQPに投入
                                          2
 5.   nova-computeがメッセージを受け取る
 6.   quamtum経由でdhcpの設定(dnsmasq)               AMQP
 7.   glance経由でイメージコピー                                       5
                                      3         4                      6
 8.   Hypervisorからインスタンス起動                                                 quantum
                                     nova-                 nova-
                                   scheduler              compute
                                                                           glance
                                                    8                  7
                                                          Hypervisor
コンピューティング機能
nova-demo 1) インスタンスの作成の裏側

    novaから見えるインスタンス
    $ nova list
    +--------------------------------------+--------+--------+------------------+
    | ID                                   | Name | Status | Networks           |
    +--------------------------------------+--------+--------+------------------+
    | 24207deb-8907-4eaa-bade-4b2782d1b7c0 | testvm | ACTIVE | net1=192.168.0.2 |
    +--------------------------------------+--------+--------+------------------+



    libvirtから見える仮想マシンイメージ
                                                               novaのインスタンスIDと
    $ virsh list                                               libvirtから見えるuuidは同じ
                                                               libvirtから見えるIDは同じ
     Id Name                 State
    ----------------------------------
      4 instance-00000001    running
    $ virsh dumpxml instance-00000001
    <domain type='qemu' id='1'>
      <name>instance-00000001</name>
      <uuid>24207deb-8907-4eaa-bade-4b2782d1b7c0</uuid>
コンピューティング機能
nova-demo 1) インスタンスの作成の裏側




 インスタンス作成フロー
                                    OpenStack Compute API
                                    (Horizon,コマンド等)
 1.   API経由でリクエストを受け取る
 2.   インスタンスの作成&起動命令をAMQPに投入              1

 3.   nova-schedulerがメッセージを受け取る                nova-api
 4.   インスタンスの起動ホストを決定してAMQPに投入
                                          2
 5.   nova-computeがメッセージを受け取る
 6.   quamtum経由でdhcpの設定(dnsmasq)               AMQP
 7.   glance経由でイメージコピー                                       5
                                      3         4                      6
 8.   Hypervisorからインスタンス起動                                                 quantum
                                     nova-                 nova-
                                   scheduler              compute
                                                                           glance
                                                    8                  7
             ここをもうちょっと
                                                          Hypervisor
             詳しく。
コンピューティング機能
nova-demo 2) インスタンスのディスク構成

      VMware ESX/ESXi


                        VM1                 VM2



                      vm1.vmdk            vm2.vmdk        OS毎にディスク用のフ
                                                          ァイルが独立している




      OpenStack

                                                          イメージファイルは共通
                  instance-00000001   instance-00000002   利用。更新データは各イ
                                                          ンスタンスのファイルに
                   更新用ファイル             更新用ファイル            記録される。
                                                          (qemuのbacking fileと
                                                          いう機能を使っている。)
                       glanceからコピーしてきたイメージファイル
コンピューティング機能
nova-demo 2) インスタンスのディスク構成

   glanceの保存イメージ
   $ ls -l /opt/stack/data/glance/images/
   total 31404
   -rw-r----- 1 user user 2254249 12月 11 16:01 675b1da1-de4b-474e-91d4-2c1502895ec4
   -rw-r----- 1 user user 25165824 12月 11 16:01 733979b4-78d5-4290-804d-48fd99a6b3a2
   -rw-r----- 1 user user 4731440 12月 11 16:01 d59796ea-10ef-4ec8-8b3f-9b03a29198af

   novaインスタンス用イメージ
   $ ls -lR /opt/stack/data/nova/instances/
   /opt/stack/data/nova/instances/:                                          glance経由でコピーしてきた
   total 8                                                                   イメージ
   drwxrwxr-x 2 user libvirtd 4096 12月 11 16:53 _base
   drwxrwxr-x 2 user libvirtd 4096 12月 11 16:53 instance-00000001

   /opt/stack/data/nova/instances/_base:
   total 31408
   -rw-rw-r-- 1 user         libvirtd 2254249 12月 11 16:53 675b1da1-de4b-474e-91d4-2c1502895ec4
   -rw-rw-r-- 1 user         libvirtd 4731440 12月 11 16:53 d59796ea-10ef-4ec8-8b3f-9b03a29198af
   -rw-rw-r-- 1 libvirt-qemu kvm      25165824 12月 11 16:53 ff4afd2435d4ab51a6e62fe12d18ec7a89b32264

   /opt/stack/data/nova/instances/instance-00000001:
   total 13584
   -rw-rw---- 1 libvirt-qemu kvm        16389 12月 11   16:53   console.log
   -rw-r--r-- 1 libvirt-qemu kvm      7012352 12月 11   16:54   disk                _baseとinstance-????????
   -rw-rw-r-- 1 libvirt-qemu kvm      4731440 12月 11   16:53   kernel              のセットで1つのインスタンス
   -rw-rw-r-- 1 user         libvirtd    1510 12月 11   16:53   libvirt.xml
   -rw-rw-r-- 1 libvirt-qemu kvm      2254249 12月 11   16:53   ramdisk
コンピューティング機能
nova-demo 3) インスタンスへのアクセス




                            初期状態では全ての通信が
                            遮断されているので、必要な
                            ポートを開ける
コンピューティング機能
nova-demo 3) インスタンスへのアクセス




                            pingを許可




                            sshを許可
コンピューティング機能
nova-demo 3) インスタンスへのアクセスの裏側



                                                              セキュリティ設定はホスト上
                                                              のiptablesで実現されている。




   ホスト上のiptablesの設定
  $ sudo iptables -L nova-compute-inst-1
  Chain nova-compute-inst-14 (1 references)
  target     prot opt source               destination
  DROP       all -- anywhere                anywhere            state INVALID
  ACCEPT     all -- anywhere                anywhere            state RELATED,ESTABLISHED
  nova-compute-provider all -- anywhere                anywhere
  ACCEPT     udp -- 192.168.0.1             anywhere            udp spt:bootps dpt:bootpc
  ACCEPT     all -- 192.168.0.0/24          anywhere
  ACCEPT     icmp -- anywhere               anywhere
  ACCEPT     tcp -- anywhere                anywhere            tcp dpt:ssh
  nova-compute-sg-fallback all -- anywhere                anywhere
コンピューティング機能
nova-demo 3) スナップショット作成



                          スナップショットの作成
                          をクリック




                              スナップショット名を入
                              力して「スナップショット
                              の作成」をクリック


                                             完成!
コンピューティング機能
nova-demo 3) スナップショット作成の裏側




                                         OpenStack Compute API
                                         (Horizon,コマンド等)

 スナップショット作成フロー
 1. API経由でリクエストを受け取りスナップショットの
                                                    nova-api
    作成命令をAMQPに投入
                                           1
 2. nova-computeがインスタンスのスナップショット
    を作成&インスタンスイメージのコピー
                                                    AMQP
 3. 1で作成したスナップショットの削除
                                                                            3
 4. 2でコピーしたイメージをglanceに登録
                                                                                    glance
                                          nova-                 nova-
                                        scheduler      2       compute
                                                                                    quantum
                                                               Hypervisor
                                                                                4
                 qemuのイメージコピー機能を使ってい
                 る。
                 (イメージファイルをフルコピーしている。
                 VMwareで想像するスナップショットと
                 は違う)
コンピューティング機能
nova-demo 3) スナップショット作成の裏側




                             新しいインスタンス用
                             のイメージとして扱わ
                             れる
コンピューティング機能
novaまとめ

 インスタンスの作成・削除、スナップショットの作成を担当している。
 nova-schedulerがコントローラの役割、nova-computeがコンピュー
  トノードの役割を実行している。

その他まめ知識

 auto scaleの機能はない。
 インスタンスが起動するホストはschedulerによって自動的に決定される。ホスト
  指定はできない。
 novaホストのグループ(ゾーン)内に複数種類のハイパバイザーを混在すること
  はできない。
ボリューム機能
ホスト

            Dashboard
             (Horizon)
              Apache                              NTP




        Identity          Image
      (Keystone)         (Glance)                MySQL




      Compute                         Block
                          Network
       (Nova)                        Storage    RabbitMQ
                         (quantum)
                                     (Cinder)




       QEMU         Open vSwitch      LVM


                               HW
ボリューム機能
Storage (Cinder) : ブロックストレージ機能


  【役割】
  • ブロックストレージの提供・管理
  【機能】                             OpenStack Storage API
  • ボリュームの作成・削除                    (Horizon,コマンド等)

  • ボリュームスナップショットの作成・削除

                                         cinder-api             keystone
                 APIアクセスの待
                 受け


                                             AMQP



                ボリュームを払い                                              ストレージに対する各
                                  cinder-             cinder-         種操作
                出すホストの決
                定、管理             scheduler            volume          対応しているストレー
                                                                      ジはLVM, NFS等



                                    DB                storage
ボリューム機能
cinder-demo 1) devstack構築後のボリュームの状態



                                                                                    ボリューム提供用ファイルを作成
    devstackではデフォルトでLVMの機能を利用してボリュームを提供する。
                                                                                    (stack-volume-backing-file)し、ブ
    $ ls -l /opt/stack/data/                                                        ロックデバイス(/dev/loop0)として利
    total 5242916                                                                   用する。
    drwxrwxr-x 3 user user       4096   12月   13   13:49   cinder
    drwxr-xr-x 4 user user       4096   12月   13   14:06   dhcp
    drwxrwxr-x 4 user user       4096   12月   13   14:05   glance
    drwxrwxr-x 6 user user       4096   12月   13   14:05   nova
    -rw-rw-r-- 1 user user 5379194880   12月   13   14:22   stack-volumes-backing-file



    環境構築後のLVMの状態(VG)
    $ sudo vgs
      VG            #PV #LV #SN Attr   VSize VFree                                      cinderの作成したボリュ
      localvol        1   2   0 wz--n- 67.74g   0                                       ームグループ
      stack-volumes   1   0   0 wz--n- 5.01g 5.01g

    環境構築後のLVMの状態(LV)
    $ sudo   lvs
      LV     VG       Attr   LSize Origin Snap%     Move Log Copy%    Convert
      root   localvol -wi-ao 65.88g
      swap   localvol -wi-ao 1.86g
ボリューム機能
cinder-demo 1) ボリュームの作成
                                「ボリュームの作成」
                                をクリック




                                    「ボリューム名」「容量」を
                                    入力して「ボリュームの作
                                    成をクリック




                          完成!
ボリューム機能
cinder-demo 1) ボリュームの作成の裏側


     VG
                                                                   払い出した容量の分だけ
     $ sudo vgs
                                                                   Free領域が減っている。
       VG            #PV #LV #SN Attr VSize VFree
       localvol        1   2   0 wz--n- 67.74g   0
       stack-volumes   1   1   0 wz--n- 5.01g 4.01g


     LV
                                                                                        新しくLVが増えている。
     $ sudo lvs                                                                         これがcinderが払い出
       LV                                            VG           Attr   LSize          した領域。
     Origin Snap% Move Log Copy% Convert
       root                                          localvol      -wi-ao 65.88g
       swap                                          localvol      -wi-ao 1.86g
       volume-d47c3ee2-7d44-4b44-bdf7-109c705f5bd5   stack-volumes -wi-ao 1.00g


                                 ちなみにcinderの管理しているIDはこちら。
                                 LVM領域の名前は volume-<ID>となっていることがわ
                                 かる。(命名規則はcinderの設定で変更可能)

 $ cinder list
 +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
 |                  ID                  |   Status | Display Name | Size | Volume Type | Bootable | Attached to |
 +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
 | d47c3ee2-7d44-4b44-bdf7-109c705f5bd5 | available |   testvol    | 1    |     None    |          |             |
 +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
ボリューム機能
cinder-demo 2) ボリュームの接続
                               「ボリュームの接続」
                               をクリック




                                   接続先のインスタンスと接
                                   続デバイス名を入力して
                                   「ボリュームの接続」をクリ
                                   ック




                          完成
ボリューム機能
cinder-demo 2) ボリュームの接続の裏側




                                                                              Hypervisorの機能を使
   ハイパバイザーからみたボリュームの状態(# virsh edit instance-????????)                        ってデバイスを接続し
   <domain type='qemu'>                                                       ている。
   .
   .(略)
   .
   <disk type='block' device='disk'>
         <driver name='qemu' type='raw' cache='none'/>
         <source dev='/dev/disk/by-path/ip-192.168.56.101:3260-iscsi-iqn.2010-10.org.openstack:volume-
   d47c3ee2-7d44-4b44-bdf7-109c705f5bd5-lun-1'/>
         <target dev='vdb' bus='virtio'/>
         <serial>d47c3ee2-7d44-4b44-bdf7-109c705f5bd5</serial>
         <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
       </disk>
   .
   .(略)
   .
ボリューム機能
cinder-demo 3) スナップショットの作成
                                  「スナップショットの作
                                  成」をクリック




                                       スナップショット名を入力
                                       して「ボリュームスナップ
                                       ショットの作成」をクリック




                             完成
ボリューム機能
cinder-demo 3) スナップショットの作成の裏側




   LVの状態
   $ sudo lvs
     LV                                               VG           Attr      LSize    Origin
   Snap% Move Log Copy% Convert
     root                                             localvol      -wi-ao 65.88g
     swap                                             localvol      -wi-ao 1.86g
     _snapshot-839208c8-7e2c-46c4-abf7-d19c35319a1a   stack-volumes swi-a- 1.00g volume-d47c3ee2-7d44-
   4b44-bdf7-109c705f5bd5 0.00
     volume-d47c3ee2-7d44-4b44-bdf7-109c705f5bd5      stack-volumes owi-ao    1.00g




                                                                                      LVMのsnapshot機能でス
                                                                                      ナップショットを作成してい
                                                                                      る。
ボリューム機能
cinderまとめ

 ブロックストレージの作成、削除、スナップショットの作成を担当して
  いる。
 指定したデバイスから領域を切り出してインスタンスに接続する。

その他まめ知識

 cinderはnovaのソースコードを丸々コピーして、ボリューム関連以外のコードを削
  除して作った。
 LVM,NFSどの種類のデバイスを利用してもインスタンスからはローカルディスク
  として見える。
 ボリュームをcreateするときにホスト&ボリュームを紐付けて管理しているため、
  cinder-volumeが稼働しているサーバが障害でダウン → そのサーバで作成さ
  れていたボリュームの消失 となる。
ネットワーク機能
ホスト

            Dashboard
             (Horizon)
              Apache                              NTP




        Identity          Image
      (Keystone)         (Glance)                MySQL




      Compute                         Block
                          Network
       (Nova)                        Storage    RabbitMQ
                         (quantum)
                                     (Cinder)




       QEMU         Open vSwitch      LVM


                               HW
ネットワーク機能
Quantum: ネットワーク機能

  【役割】
  • ネットワークリソースの提供・管理
  【機能】
  • 仮想ネットワークの追加・削除
                                    OpenStack Network API
  • インスタンスのIPアドレスの払い出し              (Horizon,コマンド等)



                APIアクセスの待
                受け                        quantum-
                                                              keystone
                                           server



                                                                         ネットワークプラグインの操
           インスタンスIPアド                      AMQP                          作。
           レス払い出しとルー
                                                                         対応しているプラグインは
           ティング設定など
                                                                         Open vSwitch, Linux
                                                                         Bridge, OpenFlow 等。

                             quantum-     quantum-l3-       quantum-
                            dhcp-agent       agent           (plugin)-
                                                              agent




                                                DB
ネットワーク機能
quantum-demo 1) devstack構築後のネットワーク状態




                             devstackで構築するとデフォルトで
                             ext_netとnet1というネットワークが
                             作成される
ネットワーク機能
quantum-demo 1) devstack構築後のネットワーク状態




                                   eth0
                                           ext_netはルータと
                                           しての役割を持つ


                                 ext_net




   net1はdemoテナント用
   のネットワーク。              net1
   192.168.0.0/24のセグメ
   ントが存在する


                            192.168.0.2
                        testvm
ネットワーク機能
quantum-demo 2) ネットワークの作成

                            ネットワークの作成をク
                            リック




                             ネットワーク名を入力




                             セグメント情報、ゲート
                                           完成!
                             ウェイを入力して
                             Createをクリック
ネットワーク機能
quantum-demo 2) ネットワークの作成




                                      eth0

                                                         新規にネットワーク
                                                         が作成される
                                    ext_net




                            net1              testnet




                               192.168.0.2     この状態で作成したtestnet内でのインスタ
                                               ンス間の通信はできる状態になるが、外部
                        testvm                 との通信はできない。
                                               外部への通信を実現するには次ページの
                                               作業が必要。
ネットワーク機能
quantum-demo 2) ネットワークの作成
 quantum上のルータのリスト
 $ quantum router-list
 +--------------------------------------+---------+--------------------------------------------------------+
 | id                                   | name    | external_gateway_info                                  |
 +--------------------------------------+---------+--------------------------------------------------------+
 | 5de02c83-4756-4241-a6c9-bfafa2c3dad7 | router1 | {"network_id": "126468b5-1850-45f9-853c-cb832c4fa183"} |
 +--------------------------------------+---------+--------------------------------------------------------+

 quantum上のサブネットのリスト
 $ quantum subnet-list
 +--------------------------------------+------------+----------------+---------------------------------------
 -----------+
 | id                                   | name       | cidr           | allocation_pools
 |
 +--------------------------------------+------------+----------------+---------------------------------------
 -----------+
 | 292e57b4-2f0b-4fa0-9047-49cb4b7e3517 | testsubnet | 192.168.1.0/24 | {"start": "192.168.1.1", "end":
 "192.168.1.253"} |
 | 52d6960f-8e21-4aa9-941e-4bdbee1c0529 |            | 10.103.2.0/24 | {"start": “10.103.2.1", "end":
 "10.103.2.253"} |
 | 916cb1dc-6244-4ba5-be88-e19e24643d09 |            | 192.168.0.0/24 | {"start": "192.168.0.1", "end":
 "192.168.0.253"} |
 +--------------------------------------+------------+----------------+---------------------------------------
 -----------+
                                                                               quantumのルータに
                                                                               testsubnet(testnetに作っ
 $ quantum router-interface-add router1 testsubnet                             たセグメント)を接続
 Added interface to router router1
ネットワーク機能
quantum-demo 2) ネットワークの作成




                                      eth0



                                                        これでtestnet内部から
                                    ext_net             外部への通信ができ
                                                        るようになる。




                            net1              testnet




                               192.168.0.2
                        testvm
ネットワーク機能
quantum-demo 3) floating ip の払い出し


                                                           floating ip (public ip)
                                                           • パブリックIPアドレス(AWSの
                                           eth0                Elastic IP)
                                                           •    インスタンスに関連付けることで
                                                                OpenStack外部からインスタンス
                                              10.103.2.2
                                                                へのアクセスが可能になる
                                         ext_net




                              net1                    testnet



                                                           fixed ip (private ip)
                                    192.168.0.2            •    インスタンス作成時に割り当て
                             testvm                             られるプライベートIPアドレス
                                                           •    OpenStack外部から疎通でき
                                                                ない
ネットワーク機能
quantum-demo 3) floating ip の払い出し

    floating ip の払い出し
    $ quantum floatingip-create ext_net
    Created a new floatingip:
                                                                   接続するfloating ipと
                                                                   fixed ipのuuidを確認
                                                                   する。
    fixed ip の確認
    $ quantum port-list
    +--------------------------------------+------+-------------------+----------------------------------------
    ----------------------------------------------+
    | id                                   | name | mac_address       | fixed_ips
    |
    +--------------------------------------+------+-------------------+----------------------------------------
    ----------------------------------------------+
    | 005f1846-bccc-4a16-a8e7-72214397fafe |      | fa:16:3e:08:c7:dc | {"subnet_id": "52d6960f-8e21-4aa9-941e-
    4bdbee1c0529", "ip_address": “10.103.2.2"}    |
    | 398855fd-d2c5-47a8-8f4e-b7dc38736470 |      | fa:16:3e:f4:93:2c | {"subnet_id": "916cb1dc-6244-4ba5-be88-
    e19e24643d09", "ip_address": "192.168.0.2"}   |
    (中略)




    floating ip と fixed ip の紐付け
    $ quantum floatingip-associate 005f1846-bccc-4a16-a8e7-72214397fafe 398855fd-d2c5-47a8-8f4e-b7dc38736470
    Associated floatingip 005f1846-bccc-4a16-a8e7-72214397fafe
ネットワーク機能
quantum-demo 3) floating ip の払い出し




                                           eth0


                                              10.103.2.2
                                         ext_net




                              net1                    testnet



                                                                floatingip-associateで内部の
                                                                fixedipと紐付けを行なっている。
                                    192.168.0.2
                             testvm                             どういう技術でこれを実現している
                                                                が、どういう技術でこれを実現して
                                                                のかまで追っかけられていません。
                                                                いるのかまで追っかけられていま
                                                                (誰か分かった人は教えてくださ
                                                                せん。(誰か知っている人は教えて
                                                                い。)
                                                                ください。)
ネットワーク機能
quantumまとめ

 OpenStack内の仮想ネットワーク全般(L2,L3)を担当している。


その他まめ知識

 テナントをまたいだネットワークは作成できない。
 folsomから新規に追加された機能で比較的新しいため、他コンポーネントとの連
  携がいまいちなところがある。(管理画面からfloatingIPの払い出しができないと
  か。)
 セキュリティグループの機能は今後nova→quantumに移る予定
 LBの機能はない。別プロジェクト(Atlus-LB)にて開発中
3.他サービスとの比較

OpenStackと関連する業界のお話
IaaS基盤比較




                        ここに使う場合に、
       パブリック            どれを使えばい
                        い?
       クラウド



                         プライベート
                          クラウド
  大手企業がIaaS基盤をつかって
  サービスプロバイダとして構築

  HP, Dell(OpenStack)
  IDCフロンティア、NTTコミュニケ
  ーションズ(CloudStack)
IaaS基盤比較
OSSのIaaS基盤
IaaS基盤比較

                   (http://incubator.apache.org/cloudstack/)
• Cloud.com社が開発したクラウド基盤をCitrixが買収しOSS化してApacheに寄贈
  したもの。
• CitrixはCloudPlatformとしてサポートを提供。


OpenStackと比較したCloudStackの強み・弱み

• (本勉強会でお見せしたOpenStackの管理画面とは比べ物にならない)充実した
  Webインターフェースを実装しており、操作が楽。
• 商用サービスを提供するための機能が充実しており、LB、HAの機能を搭載して
  いる。オブジェクトストレージ(S3)に相当する機能はない。
• 独自APIだがAWS互換APIも利用可能。(CloudBridge)
• 商用導入実績多数。
IaaS基盤比較

                     (http://www.eucalyptus.com/)
• Eucalyptus Systems, Inc.が開発。OSS版と商用版あり。
• Amazon EC2/S3とのAPI互換のプライベートクラウドを簡単に構築できるように
  するのが目標。

OpenStackと比較したEucalyptusの強み・弱み

• 開発当初からEC2/S3互換APIを実装している。Amazonとも提携しAPI対応の拡
  充を表明しており、AWSとの親和性が高い。(EC2,S3,EBS,IAM等の互換APIを
  提供)
• クラウド構築基盤としては古参であり、プライベートクラウドとしての導入実績多数。
• 機能的にできることはOpenStackと大差ない。
• OpenStack、CloudStackの話題に隠れてしまい、いまいち盛り上がっている感じ
  がしない。
IaaS基盤比較
2つのOSSクラウド基盤と比較した時のOpenStackの優位性は?

           コミュニティが活発である




                          出典:http://www.cloud-watch.net/
IaaS基盤比較
2つのOSSクラウド基盤と比較した時のOpenStackの優位性は?

           コミュニティが活発である

機能的な面ではCloudStackの方が優位、AWS互換という点では
Eucalyptusの方が優位。。。ユーザとしての利用を考えるとまだ発展
途中のOpenStackを選択する強い理由は今のところ見当たらないとい
うのがホンネ。

参加企業が多く開発コミュニティが活発なので、今後化ける可能性は
大いにあると思います。
IaaS基盤比較




           尐し話を広げて
IaaS基盤比較




     パブリック
     クラウド




      全部パブリック使え
      ばいいじゃない?
IaaS基盤比較
OSSのIaaS基盤と商用クラウドサービスの違いは?
IaaS基盤比較
OSSのIaaS基盤と商用クラウドサービスの違いは?




                        OSSはIaaS機能に限定。

                        商用クラウドサービスは、IaaS/PaaS
                        といった垣根を超えて幅広くサービス
                        を提供するようにシフト。(Google,
                        Microsoftも同様)




              OSS IaaS基盤が
              提供している機能
              はこの辺。
IaaS基盤比較



パブリッククラウドが本格普及したらOSSのIaaS基盤って必要なくなる
んじゃ・・・



いや、そんなことはない。

 パブリッククラウドから移行したい
 パブリッククラウドで提供されていないサービスを利用したい
 カスタム性の高いクラウドを利用したい

こんなニーズがある。
IaaS基盤比較

             クラウド環境を自社内に構築した
             いという企業にとってはOSSの
             IaaS基盤は有力な選択肢になる

     パブリック
     クラウド
IaaS基盤比較




           もう尐し話を広げて
IaaS基盤比較




    クラウドだらけ。。。
    クラウド間の互換性
    はどうなる?
IaaS基盤比較



                         異種クラウド間アプ
                         リケーションの移行
                         ができる




           異種クラウド間を統一
           管理できる(マルチクラ
           ウド運用管理ソフト)
IaaS基盤比較




   複数のクラウドのAPIを抽象化
   して共通APIで操作できるよう
   にする

   Redhat: DeltaCloud

   Citrix: OpenCloud
                        クラウド共通APIを作
                        る
IaaS基盤比較

まとめ

 OpenStackは現時点では話題先行で実力が伴ってない
  感がある。今後の成長に期待。
 OSSのIaaS基盤という括りでは、パブリッククラウドが普
  及してもプライベートクラウド環境としての需要はあり。
 ただし、クラウド業界自体が過渡期であるため今後何が
  残っていくのかは注視する必要あり。
おしまい
補足資料
ネットワーク機能(補足)
ホスト

            Dashboard
             (Horizon)
              Apache                              NTP




        Identity          Image
      (Keystone)         (Glance)                MySQL




      Compute                         Block
                          Network
       (Nova)                        Storage    RabbitMQ
                         (quantum)
                                     (Cinder)




       QEMU         Open vSwitch      LVM


                               HW
ネットワーク機能(補足)
quantum-demo 0) 操作をする前に用語説明


  Network Namaspace

  •   仮想ネットワーク機能。1つのホスト内に独立したネットワーク空間を構築できる。
  •   Ubunbu12.04、Fedora16以降で利用可能。RHEL6.4以降で対応予定?

  利用方法
  # ip netns


  Open vSwitch

  •   仮想スイッチ機能
  •   Ubuntu12.04は利用可能。RHEL6.3未対応

  管理系コマンド
  # ovs-vsctl
ネットワーク機能(補足)
quantum-demo 1) devstack構築後のネットワーク状態




                             devstackで構築するとデフォルトで
                             ext_netとnet1というネットワークが
                             作成される
ネットワーク機能(補足)
quantum-demo 1) devstack構築後のネットワーク状態

                                                     openvswitchの機能を利
                                                     用して、br-exとbr-intとい
                                                     う仮想スイッチと各ポート
                                                     が作られる




                                              tapX



                     qg-X     qr-X


      eth0   br-ex                   br-int
ネットワーク機能(補足)
quantum-demo 1) devstack構築後のネットワーク状態


                                                                               net1

                                                                          qdhcp-X

                                   ext_net
                                                                 192.168.0.1
                                  qrouter-X                       tapX

                                        192.168.0.254
                      qg-X                     qr-X
                     10.103.2.1
      eth0   br-ex                                      br-int




                                                                    ネットワークネームスペースの機能で
                                                                    qrouter-x(ext_net)とqdhcp-X(net1)の仮
                                                                    想ネットワーク空間が作られる。

                                                                    ext_netはルータとしての役割をもつ。
                                                                    net1は192.168.0.1のセグメント。
ネットワーク機能(補足)
quantum-demo 1) devstack構築後のネットワーク状態


                                                                               net1

                                                                          qdhcp-X

                                   ext_net
                                                                 192.168.0.1
                                  qrouter-X                       tapX

                                        192.168.0.254
                      qg-X                     qr-X               qvoX                              VM1
                                                                                      192.168.0.2
                     10.103.2.1
      eth0   br-ex                                      br-int




                                                                           インスタンスを作成すると
                                                                           qvoXというポートが作成さ
                                                                           れてインスタンスに紐付け
                                                                           られる。
ネットワーク機能(補足)
quantum-demo 2) ネットワークの作成

                            ネットワークの作成をク
                            リック




                             ネットワーク名を入力




                             セグメント情報、ゲート
                                           完成!
                             ウェイを入力して
                             Createをクリック
ネットワーク機能(補足)
quantum-demo 2) ネットワークの作成


                                                                               net1

                                                                          qdhcp-X

                                   ext_net
                                                                 192.168.0.1
                                  qrouter-X                       tapX

                                        192.168.0.254
                      qg-X                     qr-X               qvoX                              VM1
                                                                                      192.168.0.2
                     10.103.2.1
      eth0   br-ex                                      br-int

              新規にqdhcp-Y(testnet)                                192.168.1.1
              というネットワーク空間が                                        tapX
              作成される。




               この状態で作成したtestnet内でのインスタ
               ンス間の通信はできる状態になるが、外部
               との通信はできない。                                                 qdhcp-Y
               外部への通信を実現するには次ページの
               作業が必要。                                                      testnet
ネットワーク機能(補足)
quantum-demo 2) ネットワークの作成
 quantum上のルータのリスト
 $ quantum router-list
 +--------------------------------------+---------+--------------------------------------------------------+
 | id                                   | name    | external_gateway_info                                  |
 +--------------------------------------+---------+--------------------------------------------------------+
 | 5de02c83-4756-4241-a6c9-bfafa2c3dad7 | router1 | {"network_id": "126468b5-1850-45f9-853c-cb832c4fa183"} |
 +--------------------------------------+---------+--------------------------------------------------------+

 quantum上のサブネットのリスト
 $ quantum subnet-list
 +--------------------------------------+------------+----------------+---------------------------------------
 -----------+
 | id                                   | name       | cidr           | allocation_pools
 |
 +--------------------------------------+------------+----------------+---------------------------------------
 -----------+
 | 292e57b4-2f0b-4fa0-9047-49cb4b7e3517 | testsubnet | 192.168.1.0/24 | {"start": "192.168.1.1", "end":
 "192.168.1.253"} |
 | 52d6960f-8e21-4aa9-941e-4bdbee1c0529 |            | 10.103.2.0/24 | {"start": "10.103.2.1", "end":
 "10.103.2.253"} |
 | 916cb1dc-6244-4ba5-be88-e19e24643d09 |            | 192.168.0.0/24 | {"start": "192.168.0.1", "end":
 "192.168.0.253"} |
 +--------------------------------------+------------+----------------+---------------------------------------
 -----------+
                                                                                 quantumのルータに
 $ quantum router-interface-add router1 testsubnet                               testnetを接続
 Added interface to router router1
ネットワーク機能(補足)
quantum-demo 2) ネットワークの作成


                                                                               net1

                                                                          qdhcp-X

                                   ext_net
                                                                 192.168.0.1
                                  qrouter-X                       tapX

                                        192.168.0.254
                      qg-X                     qr-X               qvoX                              VM1
                                                                                      192.168.0.2
                     10.103.2.1
      eth0   br-ex                                      br-int

                                        192.168.1.254            192.168.1.1
                                               qr-X               tapX




    testnet通信用のポート作
    成&ルーティングが設定
                                                                          qdhcp-Y
    される。
                                                                           testnet
ネットワーク機能(補足)
quantum-demo 3) floating ip の払い出し

    floating ip の払い出し
    $ quantum floatingip-create ext_net
    Created a new floatingip:
                                                                   接続するfloating ipと
                                                                   fixed ipのuuidを確認
                                                                   する。
    fixed ip の確認
    $ quantum port-list
    +--------------------------------------+------+-------------------+----------------------------------------
    ----------------------------------------------+
    | id                                   | name | mac_address       | fixed_ips
    |
    +--------------------------------------+------+-------------------+----------------------------------------
    ----------------------------------------------+
    | 005f1846-bccc-4a16-a8e7-72214397fafe |      | fa:16:3e:08:c7:dc | {"subnet_id": "52d6960f-8e21-4aa9-941e-
    4bdbee1c0529", "ip_address": “10.103.2.2"}    |
    | 398855fd-d2c5-47a8-8f4e-b7dc38736470 |      | fa:16:3e:f4:93:2c | {"subnet_id": "916cb1dc-6244-4ba5-be88-
    e19e24643d09", "ip_address": "192.168.0.2"}   |
    (中略)




    floating ip と fixed ip の紐付け
    $ quantum floatingip-associate 005f1846-bccc-4a16-a8e7-72214397fafe 398855fd-d2c5-47a8-8f4e-b7dc38736470
    Associated floatingip 005f1846-bccc-4a16-a8e7-72214397fafe
ネットワーク機能(補足)
quantum-demo 3) floating ip の払い出し


                                                                                 net1

                                                                            qdhcp-X

                                     ext_net
                                                                   192.168.0.1
                                    qrouter-X                       tapX

                                          192.168.0.254
                        qg-X                     qr-X               qvoX                              VM1
                                                                                        192.168.0.2
                       10.103.2.1
        eth0   br-ex   10.103.2.2                         br-int

                                        192.168.100.254            192.168.100.1
                                                 qr-X               tapX
          floatingip-createでqg-Xに新規にVIPが
          作成される。(10.103.2.2)
          floatingip-associateで内部のfixedipと紐
          付けを行なっている。

          が、どういう技術でこれを実現しているの
                                                                            qdhcp-Y
          かまで追っかけられていません。(誰か
          知っている人は教えてください。)
          わかった人は教えてください。)
                                                                             testnet

Más contenido relacionado

La actualidad más candente

OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方Toru Makabe
 
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)VirtualTech Japan Inc.
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観Yamato Tanaka
 
OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門VirtualTech Japan Inc.
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
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クラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2Etsuji Nakai
 
OpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれOpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれToru Makabe
 
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA JapanプロジェクトのこれまでとこれからLinux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれからksk_ha
 
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみようTakashi Kajinami
 
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月VirtualTech Japan Inc.
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengewhywaita
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Emma Haruka Iwao
 
L3HA-VRRP-20141201
L3HA-VRRP-20141201L3HA-VRRP-20141201
L3HA-VRRP-20141201Manabu Ori
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌LINE Corporation
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVRToru Makabe
 
日本OpenStackユーザ会 第37回勉強会
日本OpenStackユーザ会 第37回勉強会日本OpenStackユーザ会 第37回勉強会
日本OpenStackユーザ会 第37回勉強会Yushiro Furukawa
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~NTT Communications Technology Development
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザインMasayuki Kobayashi
 

La actualidad más candente (20)

OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
 
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
 
OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
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クラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
 
OpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれOpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれ
 
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA JapanプロジェクトのこれまでとこれからLinux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
 
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう
 
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallenge
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説
 
L3HA-VRRP-20141201
L3HA-VRRP-20141201L3HA-VRRP-20141201
L3HA-VRRP-20141201
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
 
日本OpenStackユーザ会 第37回勉強会
日本OpenStackユーザ会 第37回勉強会日本OpenStackユーザ会 第37回勉強会
日本OpenStackユーザ会 第37回勉強会
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザイン
 

Similar a OpenStack勉強会

Open stack overview_20130301
Open stack overview_20130301Open stack overview_20130301
Open stack overview_20130301Satoshi Konno
 
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swiftirix_jp
 
第17回CloudStackユーザー会パネル資料(OpenStackの説明)
第17回CloudStackユーザー会パネル資料(OpenStackの説明)第17回CloudStackユーザー会パネル資料(OpenStackの説明)
第17回CloudStackユーザー会パネル資料(OpenStackの説明)Toru Makabe
 
OSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUGOSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUGHideki Saito
 
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門Etsuji Nakai
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseHideki Saito
 
知らないと地味にハマるOpen stackインストール時の注意点
知らないと地味にハマるOpen stackインストール時の注意点知らないと地味にハマるOpen stackインストール時の注意点
知らないと地味にハマるOpen stackインストール時の注意点d-shen
 
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~Masanori Itoh
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudsamemoon
 
How to use Ceph RBD as CloudStack Primary Storage
How to use Ceph RBD as CloudStack Primary StorageHow to use Ceph RBD as CloudStack Primary Storage
How to use Ceph RBD as CloudStack Primary StorageKimihiko Kitase
 
Nova からみる OpenStack プロジェクトの歴史 (rev.3)
Nova からみる OpenStack プロジェクトの歴史 (rev.3)Nova からみる OpenStack プロジェクトの歴史 (rev.3)
Nova からみる OpenStack プロジェクトの歴史 (rev.3)Akira Yoshiyama
 
Nova からみる OpenStack プロジェクトの歴史 (rev.4)
Nova からみる OpenStack プロジェクトの歴史 (rev.4)Nova からみる OpenStack プロジェクトの歴史 (rev.4)
Nova からみる OpenStack プロジェクトの歴史 (rev.4)Akira Yoshiyama
 
OpenStack Abstract @osc2012kyoto
OpenStack Abstract @osc2012kyotoOpenStack Abstract @osc2012kyoto
OpenStack Abstract @osc2012kyotoAyumi Oka
 
OSC@Kyoto2014 OpenStack概要
OSC@Kyoto2014 OpenStack概要OSC@Kyoto2014 OpenStack概要
OSC@Kyoto2014 OpenStack概要irix_jp
 
OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)Akira Yoshiyama
 

Similar a OpenStack勉強会 (20)

Open stack overview_20130301
Open stack overview_20130301Open stack overview_20130301
Open stack overview_20130301
 
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swift
 
第17回CloudStackユーザー会パネル資料(OpenStackの説明)
第17回CloudStackユーザー会パネル資料(OpenStackの説明)第17回CloudStackユーザー会パネル資料(OpenStackの説明)
第17回CloudStackユーザー会パネル資料(OpenStackの説明)
 
OpenStack概要
OpenStack概要OpenStack概要
OpenStack概要
 
OSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUGOSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUG
 
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
 
OpenStackとPythonと私
OpenStackとPythonと私OpenStackとPythonと私
OpenStackとPythonと私
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - Icehouse
 
知らないと地味にハマるOpen stackインストール時の注意点
知らないと地味にハマるOpen stackインストール時の注意点知らないと地味にハマるOpen stackインストール時の注意点
知らないと地味にハマるOpen stackインストール時の注意点
 
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
 
OpenStack Updates
OpenStack UpdatesOpenStack Updates
OpenStack Updates
 
OpenStack 101
OpenStack 101OpenStack 101
OpenStack 101
 
20130319勉強会
20130319勉強会20130319勉強会
20130319勉強会
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloud
 
How to use Ceph RBD as CloudStack Primary Storage
How to use Ceph RBD as CloudStack Primary StorageHow to use Ceph RBD as CloudStack Primary Storage
How to use Ceph RBD as CloudStack Primary Storage
 
Nova からみる OpenStack プロジェクトの歴史 (rev.3)
Nova からみる OpenStack プロジェクトの歴史 (rev.3)Nova からみる OpenStack プロジェクトの歴史 (rev.3)
Nova からみる OpenStack プロジェクトの歴史 (rev.3)
 
Nova からみる OpenStack プロジェクトの歴史 (rev.4)
Nova からみる OpenStack プロジェクトの歴史 (rev.4)Nova からみる OpenStack プロジェクトの歴史 (rev.4)
Nova からみる OpenStack プロジェクトの歴史 (rev.4)
 
OpenStack Abstract @osc2012kyoto
OpenStack Abstract @osc2012kyotoOpenStack Abstract @osc2012kyoto
OpenStack Abstract @osc2012kyoto
 
OSC@Kyoto2014 OpenStack概要
OSC@Kyoto2014 OpenStack概要OSC@Kyoto2014 OpenStack概要
OSC@Kyoto2014 OpenStack概要
 
OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)
 

Último

UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Último (9)

UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

OpenStack勉強会

  • 1. OpenStack勉強会 ~その時何が起こっているのか~ TIS株式会社 コーポレート本部 戦略技術センター 小原雄樹
  • 2. 目次 1.OpenStack概要 1. OpenStackとは 2. OpenStackの歴史 2.OpenStackの機能説明(デモ) 1. デモ環境の説明 2. 管理画面(Horizon) 3. 認証(Keystone) 4. イメージ管理(Glance) 5. コンピューティング機能(Nova) 6. ボリューム機能(Cinder) 7. ネットワーク機能(Quantum) 3.他サービスとの比較
  • 6. OpenStackとは OpenStackとは オープンソースのIaaS基盤 です
  • 7. OpenStackとは XaaSについてのまとめ (Wikipedia[クラウドコンピューティング]より) SaaS インターネット経由のソフトウェアパッケージの提供。電子メール、グループウェア、CRMなど。セール スフォース・ドットコムのSalesforce CRM、マイクロソフトのMicrosoft Online Services、Googleの Google Appsがある。オープンソースのSaaS構築フレームワークとしてはLiferayがある。 PaaS インターネット経由のアプリケーション実行用のプラットフォームの提供。仮想化されたアプリケーショ ンサーバやデータベースなど。ユーザーが自分のアプリケーションを配置して運用できる。セールスフ ォース・ドットコムのForce.comプラットフォーム、GoogleのGoogle App Engine、AppScale、マイクロ ソフトのWindows Azure、Amazon.comのAmazon S3やAmazon DynamoDBやAmazon SimpleDBなど。 HaaSまたはIaaS インターネット経由のハードウェアやインフラの提供。サーバー仮想化やデスクトップ仮想化や共有デ ィスクなど。ユーザーが自分でOSなどを含めてシステム導入・構築できる。Amazon.comのAmazon EC2など。
  • 8. OpenStackの歴史 OpenStackの構成概要図 AWSのS3相当 AWS Management Consoleに相当 AWSのEC2相当  機能毎にモジュール化されている AWSのEBS相当  開発言語はpython 引用元:http://ken.pepple.info/
  • 9. OpenStackの歴史 2010年に2つのオープンソースを組み合わせてプロジェクトがスタート Swift – Rackspace社が提供している商用クラウドサービス(CloudFiles)をオープンソース化したもの。オブジェクトストレージ機能 を提供する。 Nova - NASAがクラウド基盤開発のために独自開発したソフトウェア(Nebula)をオープンソース化したもの。クラウド基盤のコンピ ューティング機能などを提供する。 Swift Nova 2010 Oct 21 OpenStack first release (Austin) この時点ではNovaとSwiftをOpenStackとして1つにパッケ ージングしただけ 引用元:http://ken.pepple.info/
  • 10. OpenStackの歴史 Glance Swift Nova 2011 Feb 3 OpenStack (Bexar) release イメージ管理(Glance)が登場することで初めてNovaと Swiftが連携できるようになる Apr 15 OpenStack (Cactus) release Sep 22 OpenStack (Diablo) release この辺からリリーススケジュールが半年に一回になる 引用元:http://ken.pepple.info/
  • 11. OpenStackの歴史 Horizon Glance Swift 2012 Nova Apr 5 OpenStack (Essex) release 統合認証(Keystone)と管理画面(Horizon)が登場 Sep 27 OpenStack (folsom) release Novaからネットワーク機能(Quantum)とボリューム Keystone 機能(Cinder)が分離 Apr 4 OpenStack (Grizzly) release予定 引用元:http://ken.pepple.info/
  • 12. OpenStackの歴史 Horizon quantum Nova Glance Swift 2012 Apr 5 OpenStack (Essex) release 統合認証(Keystone)と管理画面(Horizon)が登場 cinder Sep 27 OpenStack (folsom) release Novaからネットワーク機能(Quantum)とボリューム Keystone 機能(Cinder)が分離 Apr 4 OpenStack (Grizzly) release予定 引用元:http://ken.pepple.info/
  • 14. 環境 本日使用するデモ環境  ハードウェア 項目 値 CPU Xeon(R) E5405 (2GHz/12MB) x 1 (4 core) メモリ 4GB NIC 8port ディスク 73GB x 2 (RAID1) (実効73GB) 外部ディスク 147GB x 5 (RAID5) (実効550GB)  ホストOS: Ubuntu 12.04 LTS  OpenStack導入方式: devstack 【注意点】 OpenStack All-in-one環境を構築する場合のサーバ推奨スペック vCPU:1個以上 メモリ:2GB以上(OpenStack起動、インスタンス未起動状態で1GB超消費します) ディスク:20GB以上(OS最小インストール+OpenStackコンポーネントで10GB程度消費します) NIC:1個以上
  • 15. devstackとは devstackとは • OpenStackのインストール用スクリプト。 • OpenStack自体の導入を簡略化するためにOpenStackの開発者が開発している。 devstackの使い方 4ステップでOpenStack環境のできあがり! 1. # git clone http://github.com/openstack-dev/devstack.git 2. # cd devstack 3. 環境にあわせてlocalrcを作成する githubから最新の devstackをとってくる 4. # ./stack.sh devstack実行スクリプ トをたたく stack.sh初回実行時はOpenStack関連パッケージをネットワーク経由でダウンロー ドしてくるため構築完了に30分~1時間程度かかる。(ネットワーク転送速度次第で すが) 2回目以降は5~10分程度で完了。
  • 16. devstackとは devstackの主要なファイル  stack.sh devstackの構築用スクリプト本体。 既に構築済みの環境で実行すると全設定を削除して再構築される。  unstack.sh devstackを停止する場合に実行する。  rejoin-stack.sh devstack構築済みの環境で停止しているdevstackを再実行する場合に実行する。  localrc devstackの最初に読み込まれる。デフォルトの環境変数を変更したい場合にはこれに 記載する。  local.sh stack.shの一番最後に呼び出されるスクリプト。自前で実行したいコマンドがある場合 はこれに記載する。  openrc OpenStack操作時の環境変数をセットするための定義ファイル # source openrc [username] [tenantname]
  • 17. システム構成 devstack導入後のシステム構成 複数台構成する場合は時 刻同期必須。 ホスト Dashboard (Horizon) Apache NTP OpenStack各コンポーネン トが情報置き場として利用 するデータベース。 Identity Image (Keystone) (Glance) MySQL AMQPのOSS実装。 Compute Block Network ソフトウェア間の処理のや (Nova) Storage RabbitMQ (quantum) りとり(メッセージング)を仲 (Cinder) 介するものと思ってくださ い。 QEMU Open vSwitch LVM HW
  • 18. システム構成 devstack導入後のシステム構成 ホスト Dashboard (Horizon) Apache NTP Identity Image (Keystone) (Glance) MySQL コントローラ機能 Compute Block Network (Nova) Storage RabbitMQ (quantum) (Cinder) 下の機能のみ切り出して 構成したホストはコンピュ QEMU Open vSwitch LVM ーティングノードと呼ばれ たりする HW
  • 19. システム構成 devstack導入後のシステム構成 ホスト Dashboard (Horizon) こんな風にノードの追加が NTP 可能。 Apache (ネットワーク、ボリューム 機能も同様) Identity Image (Keystone) (Glance) MySQL 追加ホスト Compute Block (コンピューティングノード) Network (Nova) Storage RabbitMQ (quantum) (Cinder) Compute (Nova) ・・・ QEMU Open vSwitch LVM QEMU HW HW
  • 20. 管理画面 ホスト Dashboard (Horizon) Apache NTP Identity Image (Keystone) (Glance) MySQL Compute Block Network (Nova) Storage RabbitMQ (quantum) (Cinder) QEMU Open vSwitch LVM HW
  • 21. 管理画面 Dashboard (Horizon) : 管理画面の提供 【役割】 • 管理者、一般ユーザが利用する管理画面 の提供 【機能】 • GUIによる各種操作 • コンポーネントへのAPIアクセス HTTP(S) horizon nova-api glance-api keystone-api cinder-api quantum-api
  • 22. 管理画面 horizon-demo 1) 管理画面の裏側  HorizonはDjango(pythonで記述された Webアプリケーションフレームワーク)で 作成されていて、apache上で動作してい ます。 サーバ:80にきたアクセス を全てdjango.wsgiに飛ば している Horizon用apache設定ファイル(/etc/apache2/sites-available/horizon) <VirtualHost *:80> WSGIScriptAlias / /opt/stack/horizon/openstack_dashboard/wsgi/django.wsgi ・ ・ ・
  • 23. 認証 ホスト Dashboard (Horizon) Apache NTP Identity Image (Keystone) (Glance) MySQL Compute Block Network (Nova) Storage RabbitMQ (quantum) (Cinder) QEMU Open vSwitch LVM HW
  • 24. 認証 Identity Service (Keystone) : 統合認証基盤 【役割】 認証処理フロー • OpenStack各コンポーネントが利用する 統合認証機能の提供 client keystone-all 【機能】 • 認証および認可 1) 認証要求 • ユーザID/パスワードで認証を行い トークンを発行する。 2) トークンの発行 • ユーザはトークンを利用して 3) テナント情報の要求 OpenStack各サービスにアクセスす ることができる。 4) テナントリスト OpenStack Identity API 5) エンドポイント情報の要求 (Horizon,コマンド等) ホスト上で起動する デーモン。keystone 6) エンドポイントリスト 本体。 keystone-all 対応しているバック クライアントは指定されたエンドポイントにトー エンド(プラグイン形 クンを指定してアクセスすることで各 式で選択可能) OpenStackの操作をすることができるようにな Backend KVS, SQL, PAM, る。 LDAPなど 参考:http://www.slideshare.net/h-saito/openstack-study9-josug
  • 25. 認証 keystone-demo 1) 認証処理 ユーザー名、パスワードを 入れてログインをクリックす ると管理画面が表示される
  • 26. 認証 keystone-demo 1.a) 認証処理の裏側 - トークンの発行 - client keystone-all  クライアントからkeystoneに対してユーザ ID・パスワードで認証する。 1) 認証要求  認証が通るとトークンが発行される。 2) トークンの発行 トークン:keystoneに認証されたユーザに発行され る許可証 コマンドでトークンを発行する $ curl ¥ -X 'POST' ¥ -d '{"auth":{"passwordCredentials":{"username": "demo", "password":"password"}}}' ¥ -H 'Content-type: application/json' ¥ http://localhost:5000/v2.0/tokens ユーザ名、パスワードをセットしてkeystone のAPIに投げる 結果 {"access": {"token": {"expires": "2012-12-22T05:55:05Z", "id": "a62be0784aee470d883ede36abcbd509"}, "serviceCatalog": {}, "user": {"username": "demo", "roles_links": [], "id": "fc6e7accbdde47a8931d0ba772e1001d", "roles": [], "name": "demo"}}} 発行されたトークン
  • 27. 認証 keystone-demo 1.b) 認証処理の裏側 - テナントの取得 - client keystone-all  取得したトークンを使ってテナント情報を 要求する。 3) テナント情報の要求 テナント(=プロジェクト):ユーザが所属するグループ 4) テナントリスト devstackにより作成されるユーザとテナント tenant: admin tenant: demo user: admin user: demo tenant: invisible_to_ad min
  • 28. 認証 keystone-demo 1.b) 認証処理の裏側 - テナントの取得 - client keystone-all  取得したトークンを使ってテナント情報を 要求する。 3) テナント情報の要求 テナント(=プロジェクト):ユーザが所属するグループ 4) テナントリスト コマンドでテナントリストを取得する 先ほど取得したトークンIDセッ トしてリクエストを投げる $ curl ¥ -H "X-Auth-Token: a62be0784aee470d883ede36abcbd509" ¥ http://localhost:5000/v2.0/tenants 結果 { "tenants": [ { "description": null, "enabled": true, "id": "596b667667d44abc8c834561eb9d3af5", "name": "demo" }, { "description": null, "enabled": true, "id": "8664a5810ba540508c304dc5b9b6e133", "name": "invisible_to_admin" } ], "tenants_links": [] } 所属しているテナントIDとテナント名 (demoユーザは、demoとinvisible_to_adminというテナントに所属 している)
  • 29. 認証 keystone-demo 1.c) 認証処理の裏側 - エンドポイントの取得 - client keystone-all  取得したトークンを使ってテナント情報を 要求する。 5) エンドポイント情報の要求 エンドポイント:OpenStackの各コンポーネントにアク 6) エンドポイントリスト セスするAPIのURL情報 horizon ここのURL nova-api glance-api keystone-api cinder-api quantum-api
  • 30. 認証 keystone-demo 1.c) 認証処理の裏側 - エンドポイントの取得 - client keystone-all  取得したトークンを使ってテナント情報を 要求する。 5) エンドポイント情報の要求 エンドポイント:OpenStackの各コンポーネントにアク 6) エンドポイントリスト セスするAPIのURL情報 トークンIDとテナントセットし てリクエストを投げる コマンドでエンドポイントリストを取得する $ curl -X 'POST' ¥ -d '{"auth":{"token":{"id": "a62be0784aee470d883ede36abcbd509"}, "tenantId": "596b667667d44abc8c834561eb9d3af5"}}' ¥ -H "X-Auth-Token: a62be0784aee470d883ede36abcbd509" ¥ -H 'Content-type: application/json' ¥ http://localhost:5000/v2.0/tokens 結果 エンドポイントのリストとそこにアクセスする {"access": {"token": {"expires": "2013-01-12T08:15:30Z", "id": ためのトークンが取得できる。 "8778b2cbc63640e9b7a181f194fcfeac", (省略) {"endpoints": [{"adminURL": "http://192.168.56.101:9696/", "region": "RegionOne", (省略)
  • 31. 認証 keystone まとめ  OpenStack各コンポーネントが認証基盤として利用している。  認証したアカウントにトークンを発行する。  キーワード トークン:keystoneに認証されたユーザに発行される許可証 テナント(=プロジェクト):ユーザが所属するグループ エンドポイント:OpenStackの各コンポーネントにアクセスするAPIのURL情報 その他まめ知識  トークンの有効期限はデフォルトで1日もしくはユーザが削除されるまで。
  • 32. イメージ管理 ホスト Dashboard (Horizon) Apache NTP Identity Image (Keystone) (Glance) MySQL Compute Block Network (Nova) Storage RabbitMQ (quantum) (Cinder) QEMU Open vSwitch LVM HW
  • 33. イメージ管理 Image Service (Glance) : インスタンスイメージの管理 【役割】 対応しているイメージ形式 • インスタンスイメージの管理 種類 説明 【機能】 raw RAWイメージ • イメージの追加・削除 iso ISOイメージ vhd 各種仮想環境の仮想ディスクイメー vmdk OpenStack Image API ジ(Hyper-V、VMware、VirtualBox) (Horizon,コマンド等) APIアクセスの待 vdi 受け QEMUによってサポートされている qcow2 イメージ形式 aki keystone glance-api ari Amazonのイメージ形式 イメージメタデー ami タの管理 DB glance-registory 対応しているコンテナ形式 種類 説明 ovf OVF形式 対応しているイメージストア aki Store (格納場所はプラグイン形式 で選択可能) ari Amazon形式 ファイルシステム, Swift, ami RADOS block devices, コンテナやメタデータがない場 Amazon S3, HTTP bare 合
  • 34. イメージ管理 glance-demo 1) イメージリストの取得 devstackは構築完了後初期状態で cirrosというOSイメージが登録されて いる。 有識者によるとubuntuの軽量版みた いなものらしい。
  • 35. イメージ管理 glance-demo 1) イメージリストの取得 登録されているイメージリストの取得 $ glance image-list 今管理画面に表示され +--------------------------------------+---------------------------------+-------------+------------------+----- ているのはこれ。 -------+--------+ | ID | Name | Disk Format | Container Format | Size | Status | +--------------------------------------+---------------------------------+-------------+------------------+----- -------+--------+ | cf055b1d-a7f7-4a92-b2b8-df53f7bb06a3 | cirros-0.3.0-x86_64-uec | ami | ami | 25165824 | active | | 87f37a8d-f121-4411-9e54-e9804e16a254 | cirros-0.3.0-x86_64-uec-kernel | aki | aki | 4731440 | active | | 5c1bbfad-2d53-4e6f-adb8-5d2c48b7aed6 | cirros-0.3.0-x86_64-uec-ramdisk | ari | ari | 2254249 | active | +--------------------------------------+---------------------------------+-------------+------------------+----- -------+--------+ イメージ保存先(ファイルシステム) $ ls -l /opt/stack/data/glance/images/ -rw-r----- 1 user user 2254249 12月 6 16:10 5c1bbfad-2d53-4e6f-adb8-5d2c48b7aed6 -rw-r----- 1 user user 4731440 12月 6 16:10 87f37a8d-f121-4411-9e54-e9804e16a254 -rw-r----- 1 user user 25165824 12月 6 16:11 cf055b1d-a7f7-4a92-b2b8-df53f7bb06a3 IDと同名でファイルが作 成されている。
  • 36. イメージ管理 glance-demo 2) イメージの追加 イメージの追加 $ glance image-create --name="ubuntu" --disk-format=vdi --container-format=bare --is-public=true ¥ < ubuntu.vdi $ glance image-list +--------------------------------------+---------------------------------+-------------+------------------+- -----------+--------+ | ID | Name | Disk Format | Container Format | Size | Status | +--------------------------------------+---------------------------------+-------------+------------------+- -----------+--------+ | cf055b1d-a7f7-4a92-b2b8-df53f7bb06a3 | cirros-0.3.0-x86_64-uec | ami | ami | 25165824 | active | | 87f37a8d-f121-4411-9e54-e9804e16a254 | cirros-0.3.0-x86_64-uec-kernel | aki | aki | 4731440 | active | | 5c1bbfad-2d53-4e6f-adb8-5d2c48b7aed6 | cirros-0.3.0-x86_64-uec-ramdisk | ari | ari | 2254249 | active | | 99abc396-6962-4ae0-909a-cbccdd9c57ea | ubuntu | vdi | bare | 2702217216 | active | +--------------------------------------+---------------------------------+-------------+------------------+- -----------+--------+ 追加されたイメージ。管 理画面にも反映される。
  • 37. イメージ管理 glanceまとめ  OpenStackのインスタンスのイメージ管理を担当している。  主要なイメージ形式(RAW,ISO,各種仮想マシンイメージ)に対応し ている。 その他まめ知識  イメージの登録はコマンドで実施する必要がある。管理画面からのイメージアップ ロードは(まだ)できない。 ※HTTP経由で利用可能なイメージのみ管理画面から登録可  コマンドのオプション形式を他OpenStackコンポーネントと統一するために、 essex→folsomでオプションが大幅に変更されている。マニュアル通りにやってコ マンドが通らないときは、helpでオプションを確認すべし。
  • 38. コンピューティング機能 ホスト Dashboard (Horizon) Apache NTP Identity Image (Keystone) (Glance) MySQL Compute Block Network (Nova) Storage RabbitMQ (quantum) (Cinder) QEMU Open vSwitch LVM HW
  • 39. コンピューティング機能 Compute (Nova) : コンピューティング機能 【役割】 • コンピューティングリソースの提供・管理 【機能】 • インスタンスの作成・削除、起動・停止 OpenStack Compute API (Horizon,コマンド等) APIアクセスの待 受け keystone nova-api DB AMQP インスタンス作成 ノードの管理 glance nova- nova- scheduler compute quantum Hypervisor インスタンス作 成・起動・停止 この他にも nova-cert, nova-consoleauth といったデーモンが起動する。
  • 40. コンピューティング機能 nova-demo 1) インスタンスの作成 イメージの起動 をクリック 起動するイメージを 選択して、インスタン ス名を入力 利用するネットワークに チェックを入れて 「Launch」をクリック 完成!
  • 41. コンピューティング機能 nova-demo 1) インスタンスの作成の裏側 インスタンス作成フロー OpenStack Compute API (Horizon,コマンド等) 1. API経由でリクエストを受け取る 2. インスタンスの作成&起動命令をAMQPに投入 1 3. nova-schedulerがメッセージを受け取る nova-api 4. インスタンスの起動ホストを決定してAMQPに投入 2 5. nova-computeがメッセージを受け取る 6. quamtum経由でdhcpの設定(dnsmasq) AMQP 7. glance経由でイメージコピー 5 3 4 6 8. Hypervisorからインスタンス起動 quantum nova- nova- scheduler compute glance 8 7 Hypervisor
  • 42. コンピューティング機能 nova-demo 1) インスタンスの作成の裏側 novaから見えるインスタンス $ nova list +--------------------------------------+--------+--------+------------------+ | ID | Name | Status | Networks | +--------------------------------------+--------+--------+------------------+ | 24207deb-8907-4eaa-bade-4b2782d1b7c0 | testvm | ACTIVE | net1=192.168.0.2 | +--------------------------------------+--------+--------+------------------+ libvirtから見える仮想マシンイメージ novaのインスタンスIDと $ virsh list libvirtから見えるuuidは同じ libvirtから見えるIDは同じ Id Name State ---------------------------------- 4 instance-00000001 running $ virsh dumpxml instance-00000001 <domain type='qemu' id='1'> <name>instance-00000001</name> <uuid>24207deb-8907-4eaa-bade-4b2782d1b7c0</uuid>
  • 43. コンピューティング機能 nova-demo 1) インスタンスの作成の裏側 インスタンス作成フロー OpenStack Compute API (Horizon,コマンド等) 1. API経由でリクエストを受け取る 2. インスタンスの作成&起動命令をAMQPに投入 1 3. nova-schedulerがメッセージを受け取る nova-api 4. インスタンスの起動ホストを決定してAMQPに投入 2 5. nova-computeがメッセージを受け取る 6. quamtum経由でdhcpの設定(dnsmasq) AMQP 7. glance経由でイメージコピー 5 3 4 6 8. Hypervisorからインスタンス起動 quantum nova- nova- scheduler compute glance 8 7 ここをもうちょっと Hypervisor 詳しく。
  • 44. コンピューティング機能 nova-demo 2) インスタンスのディスク構成 VMware ESX/ESXi VM1 VM2 vm1.vmdk vm2.vmdk OS毎にディスク用のフ ァイルが独立している OpenStack イメージファイルは共通 instance-00000001 instance-00000002 利用。更新データは各イ ンスタンスのファイルに 更新用ファイル 更新用ファイル 記録される。 (qemuのbacking fileと いう機能を使っている。) glanceからコピーしてきたイメージファイル
  • 45. コンピューティング機能 nova-demo 2) インスタンスのディスク構成 glanceの保存イメージ $ ls -l /opt/stack/data/glance/images/ total 31404 -rw-r----- 1 user user 2254249 12月 11 16:01 675b1da1-de4b-474e-91d4-2c1502895ec4 -rw-r----- 1 user user 25165824 12月 11 16:01 733979b4-78d5-4290-804d-48fd99a6b3a2 -rw-r----- 1 user user 4731440 12月 11 16:01 d59796ea-10ef-4ec8-8b3f-9b03a29198af novaインスタンス用イメージ $ ls -lR /opt/stack/data/nova/instances/ /opt/stack/data/nova/instances/: glance経由でコピーしてきた total 8 イメージ drwxrwxr-x 2 user libvirtd 4096 12月 11 16:53 _base drwxrwxr-x 2 user libvirtd 4096 12月 11 16:53 instance-00000001 /opt/stack/data/nova/instances/_base: total 31408 -rw-rw-r-- 1 user libvirtd 2254249 12月 11 16:53 675b1da1-de4b-474e-91d4-2c1502895ec4 -rw-rw-r-- 1 user libvirtd 4731440 12月 11 16:53 d59796ea-10ef-4ec8-8b3f-9b03a29198af -rw-rw-r-- 1 libvirt-qemu kvm 25165824 12月 11 16:53 ff4afd2435d4ab51a6e62fe12d18ec7a89b32264 /opt/stack/data/nova/instances/instance-00000001: total 13584 -rw-rw---- 1 libvirt-qemu kvm 16389 12月 11 16:53 console.log -rw-r--r-- 1 libvirt-qemu kvm 7012352 12月 11 16:54 disk _baseとinstance-???????? -rw-rw-r-- 1 libvirt-qemu kvm 4731440 12月 11 16:53 kernel のセットで1つのインスタンス -rw-rw-r-- 1 user libvirtd 1510 12月 11 16:53 libvirt.xml -rw-rw-r-- 1 libvirt-qemu kvm 2254249 12月 11 16:53 ramdisk
  • 46. コンピューティング機能 nova-demo 3) インスタンスへのアクセス 初期状態では全ての通信が 遮断されているので、必要な ポートを開ける
  • 48. コンピューティング機能 nova-demo 3) インスタンスへのアクセスの裏側 セキュリティ設定はホスト上 のiptablesで実現されている。 ホスト上のiptablesの設定 $ sudo iptables -L nova-compute-inst-1 Chain nova-compute-inst-14 (1 references) target prot opt source destination DROP all -- anywhere anywhere state INVALID ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED nova-compute-provider all -- anywhere anywhere ACCEPT udp -- 192.168.0.1 anywhere udp spt:bootps dpt:bootpc ACCEPT all -- 192.168.0.0/24 anywhere ACCEPT icmp -- anywhere anywhere ACCEPT tcp -- anywhere anywhere tcp dpt:ssh nova-compute-sg-fallback all -- anywhere anywhere
  • 49. コンピューティング機能 nova-demo 3) スナップショット作成 スナップショットの作成 をクリック スナップショット名を入 力して「スナップショット の作成」をクリック 完成!
  • 50. コンピューティング機能 nova-demo 3) スナップショット作成の裏側 OpenStack Compute API (Horizon,コマンド等) スナップショット作成フロー 1. API経由でリクエストを受け取りスナップショットの nova-api 作成命令をAMQPに投入 1 2. nova-computeがインスタンスのスナップショット を作成&インスタンスイメージのコピー AMQP 3. 1で作成したスナップショットの削除 3 4. 2でコピーしたイメージをglanceに登録 glance nova- nova- scheduler 2 compute quantum Hypervisor 4 qemuのイメージコピー機能を使ってい る。 (イメージファイルをフルコピーしている。 VMwareで想像するスナップショットと は違う)
  • 51. コンピューティング機能 nova-demo 3) スナップショット作成の裏側 新しいインスタンス用 のイメージとして扱わ れる
  • 52. コンピューティング機能 novaまとめ  インスタンスの作成・削除、スナップショットの作成を担当している。  nova-schedulerがコントローラの役割、nova-computeがコンピュー トノードの役割を実行している。 その他まめ知識  auto scaleの機能はない。  インスタンスが起動するホストはschedulerによって自動的に決定される。ホスト 指定はできない。  novaホストのグループ(ゾーン)内に複数種類のハイパバイザーを混在すること はできない。
  • 53. ボリューム機能 ホスト Dashboard (Horizon) Apache NTP Identity Image (Keystone) (Glance) MySQL Compute Block Network (Nova) Storage RabbitMQ (quantum) (Cinder) QEMU Open vSwitch LVM HW
  • 54. ボリューム機能 Storage (Cinder) : ブロックストレージ機能 【役割】 • ブロックストレージの提供・管理 【機能】 OpenStack Storage API • ボリュームの作成・削除 (Horizon,コマンド等) • ボリュームスナップショットの作成・削除 cinder-api keystone APIアクセスの待 受け AMQP ボリュームを払い ストレージに対する各 cinder- cinder- 種操作 出すホストの決 定、管理 scheduler volume 対応しているストレー ジはLVM, NFS等 DB storage
  • 55. ボリューム機能 cinder-demo 1) devstack構築後のボリュームの状態 ボリューム提供用ファイルを作成 devstackではデフォルトでLVMの機能を利用してボリュームを提供する。 (stack-volume-backing-file)し、ブ $ ls -l /opt/stack/data/ ロックデバイス(/dev/loop0)として利 total 5242916 用する。 drwxrwxr-x 3 user user 4096 12月 13 13:49 cinder drwxr-xr-x 4 user user 4096 12月 13 14:06 dhcp drwxrwxr-x 4 user user 4096 12月 13 14:05 glance drwxrwxr-x 6 user user 4096 12月 13 14:05 nova -rw-rw-r-- 1 user user 5379194880 12月 13 14:22 stack-volumes-backing-file 環境構築後のLVMの状態(VG) $ sudo vgs VG #PV #LV #SN Attr VSize VFree cinderの作成したボリュ localvol 1 2 0 wz--n- 67.74g 0 ームグループ stack-volumes 1 0 0 wz--n- 5.01g 5.01g 環境構築後のLVMの状態(LV) $ sudo lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert root localvol -wi-ao 65.88g swap localvol -wi-ao 1.86g
  • 56. ボリューム機能 cinder-demo 1) ボリュームの作成 「ボリュームの作成」 をクリック 「ボリューム名」「容量」を 入力して「ボリュームの作 成をクリック 完成!
  • 57. ボリューム機能 cinder-demo 1) ボリュームの作成の裏側 VG 払い出した容量の分だけ $ sudo vgs Free領域が減っている。 VG #PV #LV #SN Attr VSize VFree localvol 1 2 0 wz--n- 67.74g 0 stack-volumes 1 1 0 wz--n- 5.01g 4.01g LV 新しくLVが増えている。 $ sudo lvs これがcinderが払い出 LV VG Attr LSize した領域。 Origin Snap% Move Log Copy% Convert root localvol -wi-ao 65.88g swap localvol -wi-ao 1.86g volume-d47c3ee2-7d44-4b44-bdf7-109c705f5bd5 stack-volumes -wi-ao 1.00g ちなみにcinderの管理しているIDはこちら。 LVM領域の名前は volume-<ID>となっていることがわ かる。(命名規則はcinderの設定で変更可能) $ cinder list +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+ | ID | Status | Display Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+ | d47c3ee2-7d44-4b44-bdf7-109c705f5bd5 | available | testvol | 1 | None | | | +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
  • 58. ボリューム機能 cinder-demo 2) ボリュームの接続 「ボリュームの接続」 をクリック 接続先のインスタンスと接 続デバイス名を入力して 「ボリュームの接続」をクリ ック 完成
  • 59. ボリューム機能 cinder-demo 2) ボリュームの接続の裏側 Hypervisorの機能を使 ハイパバイザーからみたボリュームの状態(# virsh edit instance-????????) ってデバイスを接続し <domain type='qemu'> ている。 . .(略) . <disk type='block' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source dev='/dev/disk/by-path/ip-192.168.56.101:3260-iscsi-iqn.2010-10.org.openstack:volume- d47c3ee2-7d44-4b44-bdf7-109c705f5bd5-lun-1'/> <target dev='vdb' bus='virtio'/> <serial>d47c3ee2-7d44-4b44-bdf7-109c705f5bd5</serial> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> . .(略) .
  • 60. ボリューム機能 cinder-demo 3) スナップショットの作成 「スナップショットの作 成」をクリック スナップショット名を入力 して「ボリュームスナップ ショットの作成」をクリック 完成
  • 61. ボリューム機能 cinder-demo 3) スナップショットの作成の裏側 LVの状態 $ sudo lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert root localvol -wi-ao 65.88g swap localvol -wi-ao 1.86g _snapshot-839208c8-7e2c-46c4-abf7-d19c35319a1a stack-volumes swi-a- 1.00g volume-d47c3ee2-7d44- 4b44-bdf7-109c705f5bd5 0.00 volume-d47c3ee2-7d44-4b44-bdf7-109c705f5bd5 stack-volumes owi-ao 1.00g LVMのsnapshot機能でス ナップショットを作成してい る。
  • 62. ボリューム機能 cinderまとめ  ブロックストレージの作成、削除、スナップショットの作成を担当して いる。  指定したデバイスから領域を切り出してインスタンスに接続する。 その他まめ知識  cinderはnovaのソースコードを丸々コピーして、ボリューム関連以外のコードを削 除して作った。  LVM,NFSどの種類のデバイスを利用してもインスタンスからはローカルディスク として見える。  ボリュームをcreateするときにホスト&ボリュームを紐付けて管理しているため、 cinder-volumeが稼働しているサーバが障害でダウン → そのサーバで作成さ れていたボリュームの消失 となる。
  • 63. ネットワーク機能 ホスト Dashboard (Horizon) Apache NTP Identity Image (Keystone) (Glance) MySQL Compute Block Network (Nova) Storage RabbitMQ (quantum) (Cinder) QEMU Open vSwitch LVM HW
  • 64. ネットワーク機能 Quantum: ネットワーク機能 【役割】 • ネットワークリソースの提供・管理 【機能】 • 仮想ネットワークの追加・削除 OpenStack Network API • インスタンスのIPアドレスの払い出し (Horizon,コマンド等) APIアクセスの待 受け quantum- keystone server ネットワークプラグインの操 インスタンスIPアド AMQP 作。 レス払い出しとルー 対応しているプラグインは ティング設定など Open vSwitch, Linux Bridge, OpenFlow 等。 quantum- quantum-l3- quantum- dhcp-agent agent (plugin)- agent DB
  • 65. ネットワーク機能 quantum-demo 1) devstack構築後のネットワーク状態 devstackで構築するとデフォルトで ext_netとnet1というネットワークが 作成される
  • 66. ネットワーク機能 quantum-demo 1) devstack構築後のネットワーク状態 eth0 ext_netはルータと しての役割を持つ ext_net net1はdemoテナント用 のネットワーク。 net1 192.168.0.0/24のセグメ ントが存在する 192.168.0.2 testvm
  • 67. ネットワーク機能 quantum-demo 2) ネットワークの作成 ネットワークの作成をク リック ネットワーク名を入力 セグメント情報、ゲート 完成! ウェイを入力して Createをクリック
  • 68. ネットワーク機能 quantum-demo 2) ネットワークの作成 eth0 新規にネットワーク が作成される ext_net net1 testnet 192.168.0.2 この状態で作成したtestnet内でのインスタ ンス間の通信はできる状態になるが、外部 testvm との通信はできない。 外部への通信を実現するには次ページの 作業が必要。
  • 69. ネットワーク機能 quantum-demo 2) ネットワークの作成 quantum上のルータのリスト $ quantum router-list +--------------------------------------+---------+--------------------------------------------------------+ | id | name | external_gateway_info | +--------------------------------------+---------+--------------------------------------------------------+ | 5de02c83-4756-4241-a6c9-bfafa2c3dad7 | router1 | {"network_id": "126468b5-1850-45f9-853c-cb832c4fa183"} | +--------------------------------------+---------+--------------------------------------------------------+ quantum上のサブネットのリスト $ quantum subnet-list +--------------------------------------+------------+----------------+--------------------------------------- -----------+ | id | name | cidr | allocation_pools | +--------------------------------------+------------+----------------+--------------------------------------- -----------+ | 292e57b4-2f0b-4fa0-9047-49cb4b7e3517 | testsubnet | 192.168.1.0/24 | {"start": "192.168.1.1", "end": "192.168.1.253"} | | 52d6960f-8e21-4aa9-941e-4bdbee1c0529 | | 10.103.2.0/24 | {"start": “10.103.2.1", "end": "10.103.2.253"} | | 916cb1dc-6244-4ba5-be88-e19e24643d09 | | 192.168.0.0/24 | {"start": "192.168.0.1", "end": "192.168.0.253"} | +--------------------------------------+------------+----------------+--------------------------------------- -----------+ quantumのルータに testsubnet(testnetに作っ $ quantum router-interface-add router1 testsubnet たセグメント)を接続 Added interface to router router1
  • 70. ネットワーク機能 quantum-demo 2) ネットワークの作成 eth0 これでtestnet内部から ext_net 外部への通信ができ るようになる。 net1 testnet 192.168.0.2 testvm
  • 71. ネットワーク機能 quantum-demo 3) floating ip の払い出し floating ip (public ip) • パブリックIPアドレス(AWSの eth0 Elastic IP) • インスタンスに関連付けることで OpenStack外部からインスタンス 10.103.2.2 へのアクセスが可能になる ext_net net1 testnet fixed ip (private ip) 192.168.0.2 • インスタンス作成時に割り当て testvm られるプライベートIPアドレス • OpenStack外部から疎通でき ない
  • 72. ネットワーク機能 quantum-demo 3) floating ip の払い出し floating ip の払い出し $ quantum floatingip-create ext_net Created a new floatingip: 接続するfloating ipと fixed ipのuuidを確認 する。 fixed ip の確認 $ quantum port-list +--------------------------------------+------+-------------------+---------------------------------------- ----------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+---------------------------------------- ----------------------------------------------+ | 005f1846-bccc-4a16-a8e7-72214397fafe | | fa:16:3e:08:c7:dc | {"subnet_id": "52d6960f-8e21-4aa9-941e- 4bdbee1c0529", "ip_address": “10.103.2.2"} | | 398855fd-d2c5-47a8-8f4e-b7dc38736470 | | fa:16:3e:f4:93:2c | {"subnet_id": "916cb1dc-6244-4ba5-be88- e19e24643d09", "ip_address": "192.168.0.2"} | (中略) floating ip と fixed ip の紐付け $ quantum floatingip-associate 005f1846-bccc-4a16-a8e7-72214397fafe 398855fd-d2c5-47a8-8f4e-b7dc38736470 Associated floatingip 005f1846-bccc-4a16-a8e7-72214397fafe
  • 73. ネットワーク機能 quantum-demo 3) floating ip の払い出し eth0 10.103.2.2 ext_net net1 testnet floatingip-associateで内部の fixedipと紐付けを行なっている。 192.168.0.2 testvm どういう技術でこれを実現している が、どういう技術でこれを実現して のかまで追っかけられていません。 いるのかまで追っかけられていま (誰か分かった人は教えてくださ せん。(誰か知っている人は教えて い。) ください。)
  • 74. ネットワーク機能 quantumまとめ  OpenStack内の仮想ネットワーク全般(L2,L3)を担当している。 その他まめ知識  テナントをまたいだネットワークは作成できない。  folsomから新規に追加された機能で比較的新しいため、他コンポーネントとの連 携がいまいちなところがある。(管理画面からfloatingIPの払い出しができないと か。)  セキュリティグループの機能は今後nova→quantumに移る予定  LBの機能はない。別プロジェクト(Atlus-LB)にて開発中
  • 76. IaaS基盤比較 ここに使う場合に、 パブリック どれを使えばい い? クラウド プライベート クラウド 大手企業がIaaS基盤をつかって サービスプロバイダとして構築 HP, Dell(OpenStack) IDCフロンティア、NTTコミュニケ ーションズ(CloudStack)
  • 78. IaaS基盤比較 (http://incubator.apache.org/cloudstack/) • Cloud.com社が開発したクラウド基盤をCitrixが買収しOSS化してApacheに寄贈 したもの。 • CitrixはCloudPlatformとしてサポートを提供。 OpenStackと比較したCloudStackの強み・弱み • (本勉強会でお見せしたOpenStackの管理画面とは比べ物にならない)充実した Webインターフェースを実装しており、操作が楽。 • 商用サービスを提供するための機能が充実しており、LB、HAの機能を搭載して いる。オブジェクトストレージ(S3)に相当する機能はない。 • 独自APIだがAWS互換APIも利用可能。(CloudBridge) • 商用導入実績多数。
  • 79. IaaS基盤比較 (http://www.eucalyptus.com/) • Eucalyptus Systems, Inc.が開発。OSS版と商用版あり。 • Amazon EC2/S3とのAPI互換のプライベートクラウドを簡単に構築できるように するのが目標。 OpenStackと比較したEucalyptusの強み・弱み • 開発当初からEC2/S3互換APIを実装している。Amazonとも提携しAPI対応の拡 充を表明しており、AWSとの親和性が高い。(EC2,S3,EBS,IAM等の互換APIを 提供) • クラウド構築基盤としては古参であり、プライベートクラウドとしての導入実績多数。 • 機能的にできることはOpenStackと大差ない。 • OpenStack、CloudStackの話題に隠れてしまい、いまいち盛り上がっている感じ がしない。
  • 80. IaaS基盤比較 2つのOSSクラウド基盤と比較した時のOpenStackの優位性は? コミュニティが活発である 出典:http://www.cloud-watch.net/
  • 81. IaaS基盤比較 2つのOSSクラウド基盤と比較した時のOpenStackの優位性は? コミュニティが活発である 機能的な面ではCloudStackの方が優位、AWS互換という点では Eucalyptusの方が優位。。。ユーザとしての利用を考えるとまだ発展 途中のOpenStackを選択する強い理由は今のところ見当たらないとい うのがホンネ。 参加企業が多く開発コミュニティが活発なので、今後化ける可能性は 大いにあると思います。
  • 82. IaaS基盤比較 尐し話を広げて
  • 83. IaaS基盤比較 パブリック クラウド 全部パブリック使え ばいいじゃない?
  • 85. IaaS基盤比較 OSSのIaaS基盤と商用クラウドサービスの違いは? OSSはIaaS機能に限定。 商用クラウドサービスは、IaaS/PaaS といった垣根を超えて幅広くサービス を提供するようにシフト。(Google, Microsoftも同様) OSS IaaS基盤が 提供している機能 はこの辺。
  • 87. IaaS基盤比較 クラウド環境を自社内に構築した いという企業にとってはOSSの IaaS基盤は有力な選択肢になる パブリック クラウド
  • 88. IaaS基盤比較 もう尐し話を広げて
  • 89. IaaS基盤比較 クラウドだらけ。。。 クラウド間の互換性 はどうなる?
  • 90. IaaS基盤比較 異種クラウド間アプ リケーションの移行 ができる 異種クラウド間を統一 管理できる(マルチクラ ウド運用管理ソフト)
  • 91. IaaS基盤比較 複数のクラウドのAPIを抽象化 して共通APIで操作できるよう にする Redhat: DeltaCloud Citrix: OpenCloud クラウド共通APIを作 る
  • 92. IaaS基盤比較 まとめ  OpenStackは現時点では話題先行で実力が伴ってない 感がある。今後の成長に期待。  OSSのIaaS基盤という括りでは、パブリッククラウドが普 及してもプライベートクラウド環境としての需要はあり。  ただし、クラウド業界自体が過渡期であるため今後何が 残っていくのかは注視する必要あり。
  • 95. ネットワーク機能(補足) ホスト Dashboard (Horizon) Apache NTP Identity Image (Keystone) (Glance) MySQL Compute Block Network (Nova) Storage RabbitMQ (quantum) (Cinder) QEMU Open vSwitch LVM HW
  • 96. ネットワーク機能(補足) quantum-demo 0) 操作をする前に用語説明 Network Namaspace • 仮想ネットワーク機能。1つのホスト内に独立したネットワーク空間を構築できる。 • Ubunbu12.04、Fedora16以降で利用可能。RHEL6.4以降で対応予定? 利用方法 # ip netns Open vSwitch • 仮想スイッチ機能 • Ubuntu12.04は利用可能。RHEL6.3未対応 管理系コマンド # ovs-vsctl
  • 97. ネットワーク機能(補足) quantum-demo 1) devstack構築後のネットワーク状態 devstackで構築するとデフォルトで ext_netとnet1というネットワークが 作成される
  • 98. ネットワーク機能(補足) quantum-demo 1) devstack構築後のネットワーク状態 openvswitchの機能を利 用して、br-exとbr-intとい う仮想スイッチと各ポート が作られる tapX qg-X qr-X eth0 br-ex br-int
  • 99. ネットワーク機能(補足) quantum-demo 1) devstack構築後のネットワーク状態 net1 qdhcp-X ext_net 192.168.0.1 qrouter-X tapX 192.168.0.254 qg-X qr-X 10.103.2.1 eth0 br-ex br-int ネットワークネームスペースの機能で qrouter-x(ext_net)とqdhcp-X(net1)の仮 想ネットワーク空間が作られる。 ext_netはルータとしての役割をもつ。 net1は192.168.0.1のセグメント。
  • 100. ネットワーク機能(補足) quantum-demo 1) devstack構築後のネットワーク状態 net1 qdhcp-X ext_net 192.168.0.1 qrouter-X tapX 192.168.0.254 qg-X qr-X qvoX VM1 192.168.0.2 10.103.2.1 eth0 br-ex br-int インスタンスを作成すると qvoXというポートが作成さ れてインスタンスに紐付け られる。
  • 101. ネットワーク機能(補足) quantum-demo 2) ネットワークの作成 ネットワークの作成をク リック ネットワーク名を入力 セグメント情報、ゲート 完成! ウェイを入力して Createをクリック
  • 102. ネットワーク機能(補足) quantum-demo 2) ネットワークの作成 net1 qdhcp-X ext_net 192.168.0.1 qrouter-X tapX 192.168.0.254 qg-X qr-X qvoX VM1 192.168.0.2 10.103.2.1 eth0 br-ex br-int 新規にqdhcp-Y(testnet) 192.168.1.1 というネットワーク空間が tapX 作成される。 この状態で作成したtestnet内でのインスタ ンス間の通信はできる状態になるが、外部 との通信はできない。 qdhcp-Y 外部への通信を実現するには次ページの 作業が必要。 testnet
  • 103. ネットワーク機能(補足) quantum-demo 2) ネットワークの作成 quantum上のルータのリスト $ quantum router-list +--------------------------------------+---------+--------------------------------------------------------+ | id | name | external_gateway_info | +--------------------------------------+---------+--------------------------------------------------------+ | 5de02c83-4756-4241-a6c9-bfafa2c3dad7 | router1 | {"network_id": "126468b5-1850-45f9-853c-cb832c4fa183"} | +--------------------------------------+---------+--------------------------------------------------------+ quantum上のサブネットのリスト $ quantum subnet-list +--------------------------------------+------------+----------------+--------------------------------------- -----------+ | id | name | cidr | allocation_pools | +--------------------------------------+------------+----------------+--------------------------------------- -----------+ | 292e57b4-2f0b-4fa0-9047-49cb4b7e3517 | testsubnet | 192.168.1.0/24 | {"start": "192.168.1.1", "end": "192.168.1.253"} | | 52d6960f-8e21-4aa9-941e-4bdbee1c0529 | | 10.103.2.0/24 | {"start": "10.103.2.1", "end": "10.103.2.253"} | | 916cb1dc-6244-4ba5-be88-e19e24643d09 | | 192.168.0.0/24 | {"start": "192.168.0.1", "end": "192.168.0.253"} | +--------------------------------------+------------+----------------+--------------------------------------- -----------+ quantumのルータに $ quantum router-interface-add router1 testsubnet testnetを接続 Added interface to router router1
  • 104. ネットワーク機能(補足) quantum-demo 2) ネットワークの作成 net1 qdhcp-X ext_net 192.168.0.1 qrouter-X tapX 192.168.0.254 qg-X qr-X qvoX VM1 192.168.0.2 10.103.2.1 eth0 br-ex br-int 192.168.1.254 192.168.1.1 qr-X tapX testnet通信用のポート作 成&ルーティングが設定 qdhcp-Y される。 testnet
  • 105. ネットワーク機能(補足) quantum-demo 3) floating ip の払い出し floating ip の払い出し $ quantum floatingip-create ext_net Created a new floatingip: 接続するfloating ipと fixed ipのuuidを確認 する。 fixed ip の確認 $ quantum port-list +--------------------------------------+------+-------------------+---------------------------------------- ----------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+---------------------------------------- ----------------------------------------------+ | 005f1846-bccc-4a16-a8e7-72214397fafe | | fa:16:3e:08:c7:dc | {"subnet_id": "52d6960f-8e21-4aa9-941e- 4bdbee1c0529", "ip_address": “10.103.2.2"} | | 398855fd-d2c5-47a8-8f4e-b7dc38736470 | | fa:16:3e:f4:93:2c | {"subnet_id": "916cb1dc-6244-4ba5-be88- e19e24643d09", "ip_address": "192.168.0.2"} | (中略) floating ip と fixed ip の紐付け $ quantum floatingip-associate 005f1846-bccc-4a16-a8e7-72214397fafe 398855fd-d2c5-47a8-8f4e-b7dc38736470 Associated floatingip 005f1846-bccc-4a16-a8e7-72214397fafe
  • 106. ネットワーク機能(補足) quantum-demo 3) floating ip の払い出し net1 qdhcp-X ext_net 192.168.0.1 qrouter-X tapX 192.168.0.254 qg-X qr-X qvoX VM1 192.168.0.2 10.103.2.1 eth0 br-ex 10.103.2.2 br-int 192.168.100.254 192.168.100.1 qr-X tapX floatingip-createでqg-Xに新規にVIPが 作成される。(10.103.2.2) floatingip-associateで内部のfixedipと紐 付けを行なっている。 が、どういう技術でこれを実現しているの qdhcp-Y かまで追っかけられていません。(誰か 知っている人は教えてください。) わかった人は教えてください。) testnet