シナリオ: Open vSwitch を使ったプロバイダーネットワーク構成

シナリオ: Open vSwitch を使ったプロバイダーネットワーク構成

このシナリオでは、ML2 プラグインで Open vSwitch (OVS) を使った OpenStack Networking サービスのプロバイダーネットワークの実装について説明します。

一般に、プロバイダーネットワークは、自由度を犠牲にしますが、単純さ、性能、信頼性を実現します。他のシナリオと違い、管理者だけがプロバイダーネットワークを管理できます。プロバイダーネットワークは物理ネットワーク基盤の設定も必要とするからです。また、インスタンスに対するレイヤー 2 の接続性のみを扱うため、プロバイダーネットワークには Fixed IP アドレスと Floating IP アドレスという概念がありません。

多くの場合、物理ネットワーク基盤に依存するネットワークアーキテクチャーにすでに使っているオペレーターであれば、 OpenStack Networking サービスを簡単に導入できます。時間をかけて、オペレーターはその環境にクラウドネットワーク機能をテストし導入できます。

OpenStack Networking に DVR が導入される前は、すべてのネットワークトラフィックは 1 台以上の専用のネットワークノードを経由し、性能と信頼性に限界がありました。物理ネットワーク基盤は、一般的には、ソフトウェアで様々なネットワーク操作を行う汎用サーバーに比べると、高い性能と信頼性を持ちます。

一般には、 レイヤー 3 操作を行う OpenStack Networking のソフトウェアコンポーネントは、最も性能と信頼性に影響を与えるコンポーネントです。性能と信頼性を向上させるため、プロバイダーネットワークでは、レイヤー 3 操作を物理ネットワーク基盤に移しています。

ある特定のユースケースでは、従来の仮想化とベアメタルホストが混在する、かなり大きな物理ネットワーク基盤を使った環境に、 OpenStack 環境があります。 OpenStack 環境内で動作するアプリケーションが OpenStack 環境外のアプリケーションに直接レイヤー 2 (通常は VLAN を使用) でのアクセスが必要な場合があります。

この設定例では、 VLAN プロバイダーネットワークを作成しますが、 フラット (タグなし、素の) プロバイダーネットワークもサポートされています。

前提

この前提は、このシナリオをデプロイするのに必要な最低限の物理インフラと OpenStack サービスの依存関係を記載しています。例えば、Networking サービスは Identity サービスに直接依存しており、Compute サービスは Networking サービスに直接依存しています。 Networking サービスは Image サービスに直接は依存していないので、これらの依存関係には Image サービスなどのサービスは含まれていません。 しかしながら、 Compute サービスはインスタンスを起動するために Image サービスに依存しています。このシナリオの設定例では、 Networking サービスコンポーネントの基本的な設定に関する知識を前提にしています。

説明のため、管理ネットワークは 10.0.0.0/24 を、プロバイダーネットワークは 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 を使用します。

インフラストラクチャー

  1. 1 台のコントローラーノード。ネットワークインターフェースは 2 つ: 管理ネットワークとプロバイダーネットワーク。プロバイダーインターフェースは通常のネットワークに接続され、外部ネットワーク (通常はインターネット) へのスイッチングやルーティングは物理ネットワーク基盤により行われます。 Open vSwitch ブリッジ br-provider は、プロバイダーネットワークインターフェースに接続されたポートを持つ必要があります。

  2. 最低 2 台のコンピュートノード。ネットワークインターフェースは 2 つ: 管理ネットワークとプロバイダーネットワーク。プロバイダーインターフェースは汎用のネットワークに接続され、外部ネットワーク (通常はインターネット) へのスイッチングやルーティングは物理ネットワーク基盤により行われます。 Open vSwitch ブリッジ br-provider は、プロバイダーネットワークインターフェースに接続されたポートを持つ必要があります。

Hardware layout
Network layout
Service layout

警告

Linux ディストリビューションではしばしば古いリリースの Open vSwitch がパッケージ化されており、 Networking サービスと組み合わせて動作させた際に問題が起こることがあります。最良の性能が得られ、かつ Open vSwitch のサポートが得られるよう、最新の LTS (長期間サポート) の安定版の Open vSwitch を使用することをお薦めします。利用可能なリリースについては http://www.openvswitch.org を参照してください。様々なディストリビューションで、新しいリリースをソースからビルドする方法については インストール手順 <https://github.com/openvswitch/ovs/blob/master/INSTALL.md> を参照してください。

OpenStack サービス - コントローラーノード

  1. neutron データベースがある SQL サーバーと neutron.conf ファイルの適切な設定。

  2. メッセージキューサービスと neutron.conf ファイルの適切な設定。

  3. OpenStack Identity サービスと neutron.conf ファイルの適切な設定。

  4. OpenStack Compute コントローラー/管理サービスと nova.conf ファイルの適切な設定。

  5. Neutron サーバーサービス、Open vSwitch サービス、ML2 プラグイン、Open vSwitch エージェント、DHCP エージェントと依存サービス。

OpenStack サービス - コンピュートノード

  1. OpenStack Identity サービスと neutron.conf ファイルの適切な設定。

  2. OpenStack Compute コントローラー/管理サービスと nova.conf ファイルの適切な設定。

  3. Open vSwitch サービス、 Open vSwitch エージェントと依存サービス。

アーキテクチャー

汎用のプロバイダーネットワークアーキテクチャーでは、物理ネットワーク基盤を使って、ネットワークトラフィックのスイッチングとルーティングが行われます。

Architecture overview

コントローラーノードは、以下のネットワークコンポーネントを持ちます。

  1. Open vSwitch エージェント。仮想スイッチ、仮想スイッチ間の接続性、および仮想ポート経由での名前空間、 物理インターフェースなどの他のネットワークコンポーネントとのやり取りを管理します。

  2. DHCP エージェント。qdhcp 名前空間を管理します。 qdhcp 名前空間はプロバイダーネットワークを使用するインスタンスに対して DHCP サービスを提供します。

Controller node components - overview
Controller node components - connectivity

注釈

説明のため、図には 2 つの別のプロバイダーネットワークが書かれています。

コンピュートノードは、以下のネットワークコンポーネントを持ちます。

  1. Open vSwitch エージェント。仮想スイッチ、仮想スイッチ間の接続性、および仮想ポート経由での Linux ブリッジ、物理インターフェースなどの他のネットワークコンポーネントとのやり取りを管理します。

  2. Linux ブリッジ。セキュリティーグループを扱います。

    注釈

    Open vSwitch と iptables に関する制限のため、Networking サービスは Linux ブリッジを使ってインスタンスのセキュリティーグループの管理を行います。

Compute node components - overview
Compute node components - connectivity

注釈

説明のため、図には 2 つの別のプロバイダーネットワークが書かれています。

パケットフロー

注釈

north-south ネットワークトラフィックは、インスタンスと外部ネットワーク (通常はインターネット) 間の通信です。 easy-west ネットワークトラフィックは、インスタンス間の通信です。

注釈

Open vSwitch は、ブリッジを通過するネットワークを分離するために、内部では VLAN を使用します。この VLAN ID は普通は仮想ネットワークの segmentation ID とは異なります。

ケース 1: north-south

物理ネットワーク基盤が、プロバイダーネットワークと外部ネットワーク間の、ルーティングや潜在的には他のサービスも処理します。この場合、 プロバイダー外部 の違いは、前者がインスタンスが利用できるネットワークであり、後者はルーター経由でのみアクセスできるネットワークであるという点だけです。物理ネットワーク基盤がルーティングを行います。ただし、プロバイダーネットワークは、インターネットなどの 外部 ネットワークへの直接接続にも対応しています。

  • 外部ネットワーク

    • ネットワーク 203.0.113.0/24

  • プロバイダーネットワーク (VLAN)

    • ネットワーク 192.0.2.0/24

    • ゲートウェイ 192.0.2.1 (MAC アドレスは TG)

  • コンピュートノード 1

    • インスタンス 1 192.0.2.11 (MAC アドレスは I1)

  • インスタンス 1 はコンピュートノード 1 上にあり、プロバイダーネットワークを使用します。

  • インスタンスが外部ネットワーク上のホストにパケットを送信します。

以下の手順は、コンピュートノード 1 に関係します。

  1. インスタンス 1 の tap インターフェース (1) はパケットを Linux ブリッジ qbr に転送します。宛先は別のネットワーク上にあるので、パケットの宛先 MAC アドレスは TG です。

  2. Linux ブリッジ qbr 上のセキュリティーグループルール (2) で、このパケットに対するファイアウォールと状態追跡 (state tracking) が行われます。

  3. Linux ブリッジ qbr は、パケットを Open vSwitch の統合ブリッジ br-int に転送します。

  4. Open vSwitch の統合ブリッジ br-int は、プロバイダーネットワークの内部タグを追加します。

  5. Open vSwitch の統合ブリッジ br-int は、パケットを Open vSwitch のプロバイダーブリッジ br-provider に転送します。

  6. Open vSwitch のプロバイダーブリッジ br-provider は、内部タグをプロバイダーネットワークの実際の VLAN タグ (segmentation ID) に置き換えます。

  7. Open vSwitch のプロバイダーブリッジ br-provider は、パケットをプロバイダーネットワークインターフェース経由で物理ネットワークに転送します。

以下の手順は、物理ネットワーク環境に関係します。

  1. スイッチ (3) は、プロバイダーネットワーク 1 とルーター (4) 間のあらゆる VLAN タグ操作を行います。

  2. ルーター (4) は、パケットをプロバイダーネットワーク 1 から外部ネットワークへルーティングします。

  3. スイッチ (3) は、ルーター (4) と外部ネットワーク間のあらゆる VLAN タグ操作を行います。

  4. スイッチ(3)は、外部ネットワークへパケットを転送します

注釈

戻りのトラフィックは、同様の手順の逆順で処理されます。

Network traffic flow - north/south

ケース 2: 別のネットワークのインスタンスでの east-west トラフィック

物理ネットワーク基盤がプロバイダーネットワーク間のルーティングを行います。

  • プロバイダーネットワーク 1

    • ネットワーク: 192.0.2.0/24

    • ゲートウェイ: 192.0.2.1 (MAC アドレスは TG1)

  • プロバイダーネットワーク 2

    • ネットワーク: 198.51.100.0/24

    • ゲートウェイ: 198.51.100.1 (MAC アドレスは TG2)

  • コンピュートノード 1

    • インスタンス 1: 192.0.2.11 (MAC アドレスは I1)

  • コンピュートノード 2

    • インスタンス 2: 198.51.100.11 (MAC アドレスは I2)

  • インスタンス 1 はコンピュートノード 1 上にあり、プロバイダーネットワーク 1 を使用します。

  • インスタンス 2 はコンピュートノード 2 上にあり、プロバイダーネットワーク 2 を使用します。

  • インスタンス 1 がインスタンス 2 にパケットを送信します。

以下の手順は、コンピュートノード 1 に関係します。

  1. インスタンス 1 の tap インターフェース (1) はパケットを Linux ブリッジ qbr に転送します。宛先は別のネットワーク上にあるので、パケットの宛先 MAC アドレスは TG1 です。

  2. Linux ブリッジ qbr 上のセキュリティーグループルール (2) で、このパケットに対するファイアウォールと状態追跡 (state tracking) が行われます。

  3. Linux ブリッジ qbr は、パケットを Open vSwitch の統合ブリッジ br-int に転送します。

  4. Open vSwitch の統合ブリッジ br-int は、プロバイダーネットワーク 1 の内部タグを追加します。

  5. Open vSwitch の統合ブリッジ br-int は、パケットを Open vSwitch のプロバイダーブリッジ br-provider に転送します。

  6. Open vSwitch のプロバイダーブリッジ br-provider は、内部タグをプロバイダーネットワーク 1 の実際の VLAN タグ (segmentation ID) に置き換えます。

  7. Open vSwitch の VLAN ブリッジ br-provider は、パケットをプロバイダーネットワークインターフェース経由で物理ネットワーク基盤に転送します。

以下の手順は、物理ネットワーク環境に関係します。

  1. スイッチ (3) は、プロバイダーネットワーク 1 とルーター (4) 間のあらゆる VLAN タグ操作を行います。

  2. ルーター (4) は、パケットをプロバイダーネットワーク 1 からプロバイダーネットワーク 2 へルーティングします。

  3. スイッチ (3) は、ルーター (4) とプロバイダーネットワーク 2 間のあらゆる VLAN タグ操作を行います。

  4. スイッチ(3)は、コンピュートノード2 にパケットを転します

以下の手順は、コンピュートノード 2 に関係します。

  1. プロバイダーネットワークインターフェースは、パケットを Open vSwitch のプロバイダーブリッジ br-provider に転送します。

  2. Open vSwitch のプロバイダーブリッジ br-provider は、パケットを Open vSwitch の統合ブリッジ br-int に転送します。

  3. Open vSwitch の統合ブリッジ br-int は、プロバイダーネットワーク 2 の実際の VLAN タグ (segmentation ID) を内部タグに置き換えます。

  4. Open vSwitch の統合ブリッジ br-int は、パケットを Linux ブリッジ qbr に転送します。

  5. Linux ブリッジ qbr 上のセキュリティーグループルール (5) で、このパケットに対するファイアウォールと状態追跡 (state tracking) が行われます。

  6. Linux ブリッジ qbr は、パケットをインスタンス 2 の tap インターフェース (6) に転送します。

注釈

戻りのトラフィックは、同様の手順の逆順で処理されます。

Network traffic flow - east/west for instances on different networks

ケース 3: 同じネットワークのインスタンスでの east-west トラフィック

物理ネットワーク基盤がプロバイダーネットワーク内のスイッチングを行います。

  • プロバイダーネットワーク

    • ネットワーク: 192.0.2.0/24

  • コンピュートノード 1

    • インスタンス 1: 192.0.2.11 (MAC アドレスは I1)

  • コンピュートノード 2

    • インスタンス 2: 192.0.2.12 (MAC アドレスは I2)

  • インスタンス 1 はコンピュートノード 1 上にあります。

  • インスタンス 2 はコンピュートノード 2 上にあります。

  • 両方のインスタンスは同じプロバイダーネットワーク上にあります。

  • インスタンス 1 がインスタンス 2 にパケットを送信します。

以下の手順は、コンピュートノード 1 に関係します。

  1. インスタンス 1 の tap インターフェース (1) はパケットを Linux ブリッジ qbr に転送します。宛先は同じネットワーク上にあるので、パケットの宛先 MAC アドレスは I2 です。

  2. Linux ブリッジ qbr 上のセキュリティーグループルール (2) で、このパケットに対するファイアウォールと状態追跡 (state tracking) が行われます。

  3. Linux ブリッジ qbr は、パケットを Open vSwitch の統合ブリッジ br-int に転送します。

  4. Open vSwitch の統合ブリッジ br-int は、プロバイダーネットワークの内部タグを追加します。

  5. Open vSwitch の統合ブリッジ br-int は、パケットを Open vSwitch のプロバイダーブリッジ br-provider に転送します。

  6. Open vSwitch のプロバイダーブリッジ br-provider は、内部タグをプロバイダーネットワークの実際の VLAN タグ (segmentation ID) に置き換えます。

  7. Open vSwitch の VLAN ブリッジ br-provider は、パケットをプロバイダーネットワークインターフェース経由で物理ネットワーク基盤に転送します。

以下の手順は、物理ネットワーク環境に関係します。

  1. スイッチ (3) は、コンピュートノード 1 からコンピュートノード 2 へパケットを転送します

以下の手順は、コンピュートノード 2 に関係します。

  1. プロバイダーネットワークインターフェースは、パケットを Open vSwitch のプロバイダーブリッジ br-provider に転送します。

  2. Open vSwitch のプロバイダーブリッジ br-provider は、パケットを Open vSwitch の統合ブリッジ br-int に転送します。

  3. Open vSwitch の統合ブリッジ br-int は、プロバイダーネットワーク 1 の実際の VLAN タグ (segmentation ID) を内部タグに置き換えます。

  4. Open vSwitch の統合ブリッジ br-int は、パケットを Linux ブリッジ qbr に転送します。

  5. Linux ブリッジ qbr 上のセキュリティーグループルール (4) で、このパケットに対するファイアウォールと状態追跡 (state tracking) が行われます。

  6. Linux ブリッジ qbr は、パケットをインスタンス 2 の tap インターフェース (5) に転送します。

注釈

戻りのトラフィックは、同様の手順の逆順で処理されます。

Network traffic flow - east/west for instances on the same network

設定例

以下の設定例を、お使いの環境でこのシナリオをデプロイする際の雛形として使ってください。

注釈

このシナリオをさらに単純にするため、従来のメタデータエージェントではなくコンフィグドライブを使用して、インスタンスのメタデータを提供することを推奨します。

コントローラーノード

  1. 共通のオプションを設定します。 /etc/neutron/neutron.conf ファイルを編集します。

    [DEFAULT]
    verbose = True
    core_plugin = ml2
    service_plugins =
    

    注釈

    このシナリオでは Networking サービスはルーティングなどのレイヤー 3 サービスを提供しないため、 service_plugins オプションには何の値も設定しません。ただし、この設定にすると、 Networking サービスを管理するダッシュボードの一部機能が正しく動作しません。詳細は インストールガイド を参照してください。

  2. ML2 プラグインを設定します。/etc/neutron/plugins/ml2/ml2_conf.ini ファイルを編集します。

    [ml2]
    type_drivers = flat,vlan
    tenant_network_types =
    mechanism_drivers = openvswitch
    extension_drivers = port_security
    
    [ml2_type_flat]
    flat_networks = provider
    
    [ml2_type_vlan]
    network_vlan_ranges = provider
    
    [securitygroup]
    enable_ipset = True
    

    注釈

    tenant_network_types オプションには何も値を指定しません。このアーキテクチャーでは、プロジェクト (プライベート) ネットワークがサポートされないからです。

    注釈

    network_vlan_ranges オプションの provider 値に VLAN ID を指定しなかった場合、任意の VLAN ID を使用できます。

  3. Open vSwitch エージェントを設定します。 /etc/neutron/plugins/ml2/openvswitch_agent.ini ファイルを編集します。

    [ovs]
    bridge_mappings = provider:br-provider
    
    [agent]
    prevent_arp_spoofing = True
    
    [securitygroup]
    firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
    enable_security_group = True
    
  4. DHCP エージェントを設定します。 /etc/neutron/dhcp_agent.ini ファイルを編集します。

    [DEFAULT]
    verbose = True
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
    dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
    enable_isolated_metadata = True
    
  5. 以下のサービスを実行します。

    • Open vSwitch
  6. Open vSwitch のプロバイダーブリッジ br-provider を作成します。

    $ ovs-vsctl add-br br-provider
    
  7. プロバイダーネットワークインターフェースを Open vSwitch のプロバイダーブリッジ br-provider にポートとして追加します。

    $ ovs-vsctl add-port br-provider PROVIDER_INTERFACE
    

    PROVIDER_INTERFACE は、 プロバイダーネットワークを処理するインターフェース名で置き換えます。例えば、 eth1 など。

  8. 以下のサービスを実行します。

    • Server
    • Open vSwitch エージェント

    • DHCP エージェント

コンピュートノード

  1. 共通のオプションを設定します。 /etc/neutron/neutron.conf ファイルを編集します。

    [DEFAULT]
    verbose = True
    
  2. Open vSwitch エージェントを設定します。 /etc/neutron/plugins/ml2/openvswitch_agent.ini ファイルを編集します。

    [ovs]
    bridge_mappings = provider:br-provider
    
    [agent]
    prevent_arp_spoofing = True
    
    [securitygroup]
    firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
    enable_security_group = True
    
  3. 以下のサービスを実行します。

    • Open vSwitch
  4. Open vSwitch のプロバイダーブリッジ br-provider を作成します。

    $ ovs-vsctl add-br br-provider
    
  5. プロバイダーネットワークインターフェースを Open vSwitch のプロバイダーブリッジ br-provider にポートとして追加します。

    $ ovs-vsctl add-port br-provider PROVIDER_INTERFACE
    

    PROVIDER_INTERFACE は、 プロバイダーネットワークを処理するインターフェース名で置き換えます。例えば、 eth1 など。

  6. 以下のサービスを実行します。

    • Open vSwitch エージェント

サービスの動作検証

  1. 管理プロジェクトのクレデンシャルを読み込みます。

  2. エージェントの存在と動作を検証します。

    $ neutron agent-list
    +--------------------------------------+--------------------+------------+-------+----------------+---------------------------+
    | id                                   | agent_type         | host       | alive | admin_state_up | binary                    |
    +--------------------------------------+--------------------+------------+-------+----------------+---------------------------+
    | 09de6af6-c5f1-4548-8b09-18801f068c57 | Open vSwitch agent | controller | :-)   | True           | neutron-openvswitch-agent |
    | 1c5eca1c-3672-40ae-93f1-6bde214fa303 | DHCP agent         | controller | :-)   | True           | neutron-dhcp-agent        |
    | 6129b1ec-9946-4ec5-a4bd-460ca83a40cb | Open vSwitch agent | compute1   | :-)   | True           | neutron-openvswitch-agent |
    | 8a3fc26a-9268-416d-9d29-6d44f0e4a24f | Open vSwitch agent | compute2   | :-)   | True           | neutron-openvswitch-agent |
    +--------------------------------------+--------------------+------------+-------+----------------+---------------------------+
    

初期ネットワークの作成

この例では、 VLAN プロバイダーネットワークを作成します。 VLAN ID と IP アドレスの範囲をお使いの環境にあわせて適切な値に変更してください。

  1. 管理プロジェクトのクレデンシャルを読み込みます。

  2. プロバイダーネットワークを作成します:

    $ neutron net-create provider-101 --shared \
      --provider:physical_network provider --provider:network_type vlan \
      --provider:segmentation_id 101
    Created a new network:
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | True                                 |
    | id                        | 8b868082-e312-4110-8627-298109d4401c |
    | name                      | provider-101                         |
    | provider:network_type     | vlan                                 |
    | provider:physical_network | provider                             |
    | provider:segmentation_id  | 101                                  |
    | router:external           | False                                |
    | shared                    | True                                 |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | tenant_id                 | e0bddbc9210d409795887175341b7098     |
    +---------------------------+--------------------------------------+
    

    注釈

    shared オプションを指定すると、すべてのプロジェクトがこのネットワークを使用できるようになります。

  3. そのプロバイダーネットワークにサブネットを作成します:

    $ neutron subnet-create provider-101 203.0.113.0/24 \
      --name provider-101-subnet --gateway 203.0.113.1
    Created a new subnet:
    +-------------------+--------------------------------------------------+
    | Field             | Value                                            |
    +-------------------+--------------------------------------------------+
    | allocation_pools  | {"start": "203.0.113.2", "end": "203.0.113.254"} |
    | cidr              | 203.0.113.0/24                                   |
    | dns_nameservers   |                                                  |
    | enable_dhcp       | True                                             |
    | gateway_ip        | 203.0.113.1                                      |
    | host_routes       |                                                  |
    | id                | 0443aeb0-1c6b-4d95-a464-c551c47a0a80             |
    | ip_version        | 4                                                |
    | ipv6_address_mode |                                                  |
    | ipv6_ra_mode      |                                                  |
    | name              | provider-101-subnet                              |
    | network_id        | 8b868082-e312-4110-8627-298109d4401c             |
    | tenant_id         | e0bddbc9210d409795887175341b7098                 |
    +-------------------+--------------------------------------------------+
    

ネットワーク動作の検証

  1. コントローラーノードで、 qdhcp 名前空間が作成されているかを確認します。

    $ ip netns
    qdhcp-8b868082-e312-4110-8627-298109d4401c
    

    注釈

    インスタンスを起動するまでは qdhcp 名前空間は存在しない場合があります。

  2. 通常のプロジェクトの認証情報を読み込みます。 以下の手順では demo プロジェクトを使用します。

  3. 適切なセキュリティーグループを作成し、インスタンスへの ping と SSH を許可します。例えば以下のようにします。

    $ nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
    +-------------+-----------+---------+-----------+--------------+
    | IP Protocol | From Port | To Port | IP Range  | Source Group |
    +-------------+-----------+---------+-----------+--------------+
    | icmp        | -1        | -1      | 0.0.0.0/0 |              |
    +-------------+-----------+---------+-----------+--------------+
    
    $ nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
    +-------------+-----------+---------+-----------+--------------+
    | IP Protocol | From Port | To Port | IP Range  | Source Group |
    +-------------+-----------+---------+-----------+--------------+
    | tcp         | 22        | 22      | 0.0.0.0/0 |              |
    +-------------+-----------+---------+-----------+--------------+
    
  4. 作成したプロバイダーネットワークに接続されたインタフェースを持つインスタンスを起動します。

    注釈

    この例では CirrOS イメージを使っています。このイメージは Image Service に自分でアップロードしておく必要があります。

    $ nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64-disk test_server
    +--------------------------------------+-----------------------------------------------------------------+
    | Property                             | Value                                                           |
    +--------------------------------------+-----------------------------------------------------------------+
    | OS-DCF:diskConfig                    | MANUAL                                                          |
    | OS-EXT-AZ:availability_zone          | nova                                                            |
    | OS-EXT-SRV-ATTR:host                 | -                                                               |
    | OS-EXT-SRV-ATTR:hypervisor_hostname  | -                                                               |
    | OS-EXT-SRV-ATTR:instance_name        | instance-00000001                                               |
    | OS-EXT-STS:power_state               | 0                                                               |
    | OS-EXT-STS:task_state                | scheduling                                                      |
    | OS-EXT-STS:vm_state                  | building                                                        |
    | OS-SRV-USG:launched_at               | -                                                               |
    | OS-SRV-USG:terminated_at             | -                                                               |
    | accessIPv4                           |                                                                 |
    | accessIPv6                           |                                                                 |
    | adminPass                            | h7CkMdkRXuuh                                                    |
    | config_drive                         |                                                                 |
    | created                              | 2015-07-22T20:40:16Z                                            |
    | flavor                               | m1.tiny (1)                                                     |
    | hostId                               |                                                                 |
    | id                                   | dee2a9f4-e24c-444d-8c94-386f11f74af5                            |
    | image                                | cirros-0.3.3-x86_64-disk (2b6bb38f-f69f-493c-a1c0-264dfd4188d8) |
    | key_name                             | -                                                               |
    | metadata                             | {}                                                              |
    | name                                 | test_server                                                     |
    | os-extended-volumes:volumes_attached | []                                                              |
    | progress                             | 0                                                               |
    | security_groups                      | default                                                         |
    | status                               | BUILD                                                           |
    | tenant_id                            | 5f2db133e98e4bc2999ac2850ce2acd1                                |
    | updated                              | 2015-07-22T20:40:16Z                                            |
    | user_id                              | ea417ebfa86741af86f84a5dbcc97cd2                                |
    +--------------------------------------+-----------------------------------------------------------------+
    
  5. インスタンスの IP アドレスを確認します。以下の手順では 203.0.113.3 を使っています。

    $ nova list
    +--------------------------------------+-------------+--------+------------+-------------+--------------------------+
    | ID                                   | Name        | Status | Task State | Power State | Networks                 |
    +--------------------------------------+-------------+--------+------------+-------------+--------------------------+
    | dee2a9f4-e24c-444d-8c94-386f11f74af5 | test_server | ACTIVE | -          | Running     | provider-101=203.0.113.3 |
    +--------------------------------------+-------------+--------+------------+-------------+--------------------------+
    
  6. コントローラーノードかプロバイダーネットワークに接続されているホストから、インスタンスの IP アドレスに ping を行います。

    $ ping -c 4 203.0.113.3
    PING 203.0.113.3 (203.0.113.3) 56(84) bytes of data.
    64 bytes from 203.0.113.3: icmp_req=1 ttl=63 time=3.18 ms
    64 bytes from 203.0.113.3: icmp_req=2 ttl=63 time=0.981 ms
    64 bytes from 203.0.113.3: icmp_req=3 ttl=63 time=1.06 ms
    64 bytes from 203.0.113.3: icmp_req=4 ttl=63 time=0.929 ms
    
    --- 203.0.113.3 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3002ms
    rtt min/avg/max/mdev = 0.929/1.539/3.183/0.951 ms
    
  7. インスタンスにアクセスします。

  8. インターネットへの接続性を確認します。

    $ ping -c 4 openstack.org
    PING openstack.org (174.143.194.225) 56(84) bytes of data.
    64 bytes from 174.143.194.225: icmp_req=1 ttl=53 time=17.4 ms
    64 bytes from 174.143.194.225: icmp_req=2 ttl=53 time=17.5 ms
    64 bytes from 174.143.194.225: icmp_req=3 ttl=53 time=17.7 ms
    64 bytes from 174.143.194.225: icmp_req=4 ttl=53 time=17.5 ms
    
    --- openstack.org ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3003ms
    rtt min/avg/max/mdev = 17.431/17.575/17.734/0.143 ms
    
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.