Oracle® Solaris 11.2 での OpenStack のインストールと構成

印刷ビューの終了

更新: 2015 年 4 月
 
 

Neutron L3 エージェントの構成

このセクションでは、外部ネットワークを表す仮想ネットワークを作成する方法を示します。この仮想ネットワークでは DHCP が使用されません。代わりにフローティング IP アドレスが作成されます。これらのフローティング IP アドレスは特定のテナントに割り当てられ、そのテナントで、ユーザーによって使用される Nova VM インスタンスに割り当てることができます。Neutron L3 エージェントは、Nova インスタンスに割り当てられたアドレスとフローティング IP アドレス間の 1 対 1 の NAT マッピングを自動的に作成します。

OpenStack Neutron の Oracle Solaris 11.2 実装は、プライベートネットワークデプロイメントモデルによって、プロバイダルーターをサポートしています。このモデルの詳細は、運用者トレーニングガイド』の第 7 章にある OpenStack Neutron のユースケースを参照してください。このデプロイメントモデルで、各テナントは 1 つ以上のプライベートネットワークを使用でき、すべてのテナントネットワークが同じルーターを共有します。このルーターはデータ管理者によって作成、所有、および管理されます。ルーターはテナントのネットワークトポロジビューに表示されません。単一のルーターしかないため、テナントネットワークでは重複する IP アドレスを使用できません。管理者はテナントの代わりにプライベートネットワークを作成します。

デフォルトで、このモデル内のルーターは同じテナントに含まれるプライベートネットワーク間のルーティングを妨げます。あるプライベートネットワーク内の VM インスタンスは別のプライベートネットワーク内の VM インスタンスと、それらがすべて同じテナントに含まれる場合でも通信できません。この動作を変更するには、/etc/neutron/l3_agent.ini 構成ファイルで allow_forwarding_between_networksTrue に設定し、neutron-l3-agent SMF サービスを再起動します。

このモデルのルーターはテナントの VM インスタンスの外部への接続を提供します。ルーターは、外部ネットワークにルーターを接続するインタフェース上で双方向の NAT を実行します。テナントは、それらが必要なだけ、またはフローティング IP の割り当て制限によって許可されるだけの数のフローティング IP (パブリック IP) を作成し、これらのフローティング IP を、外部接続を必要とする VM インスタンスに関連付けます。

次の図に、Oracle Solaris 11.2 Neutron デプロイメントモデルを示します。図の説明は図の後にあります。

図 3-3  プライベートネットワークモデルでのプロバイダルーター

image:それぞれ 2 つの内部ネットワークと 2 つの VM インスタンスを持つ 2 つのテナント

前の図に示したモデルで、各テナントには 2 つの内部ネットワークと 2 つの VM インスタンスがあります。

テナント A
  • サブネット 192.168.100.0/24 とゲートウェイ 192.168.100.1 の HR ネットワーク

  • サブネット 192.168.101.0/24 とゲートウェイ 192.168.101.1 の ENG ネットワーク

  • 192.168.100.3 の固定 IP アドレスを持つ HR に接続された VM1

  • 192.168.101.3 の固定 IP アドレスを持つ ENG に接続された VM2

テナント B
  • サブネット 192.168.102.0/24 とゲートウェイ 192.168.102.1 の IT ネットワーク

  • サブネット 192.168.103.0/24 とゲートウェイ 192.168.103.1 の ACCT ネットワーク

  • 192.168.102.3 の固定 IP アドレスを持つ IT に接続された VM3

  • 192.168.103.3 の固定 IP アドレスを持つ ACCT に接続された VM4

双方向 NAT テーブルは次の表に示すように構成されます。

内部 IP
フローティング IP
192.168.100.3
10.134.13.40
192.168.101.3
10.134.13.9

すべてのゲートウェイインタフェースが neutron-l3-agent SMF サービスを実行しているノードでインスタンス化されます。クラウドでは多くの Neutron インスタンスを使用できますが、クラウドあたりに必要な neutron-l3-agent は 1 つだけです。

外部ネットワークは、外部から到達可能なサブネット 10.134.13.0/24 24 に関連付けられたプロバイダネットワークです。テナントはこのネットワークからフローティング IP アドレスを作成し、それらを VM インスタンスに関連付けます。VM1 と VM2 にはフローティング IP 10.134.13.40 と 10.134.13.9 がそれぞれ関連付けられています。VM1 と VM2 はこれらの IP アドレスによって、外部から到達可能です。

次のダイアグラムに、これらのテナントリソースがネットワークノードおよび 2 つのコンピュートノードにどのように構成されているかを示します。図に示している機能の一部の説明は図の後にあります。

図 3-4  Neutron L3 エージェント構成

image:ネットワークノードとコンピュートノードに構成された内部ネットワークと VM インスタンス
VNIC

仮想ネットワークインタフェース。

l3e...

双方向 NAT が発生する外部 (「e」) ネットワーク上に VNIC を作成した L3 エージェント。

l3i...

デフォルトのゲートウェイ IP アドレスを持つ内部 (「i」) ネットワーク上に VNIC を作成した L3 エージェント。

次のリストに、この例の構成で IP アドレスがどのように使用されるかを示します。

10.134.13.1

デフォルトゲートウェイ

10.134.13.2 - 10.134.13.7

OpenStackAPI (Nova、Cinder、Glance など) をテナントに公開するために確保されている IP アドレス

10.134.13.9 - 10.134.13.254

テナント VM インスタンス用のフローティング IP アドレス

Neutron L3 エージェントを構成する方法

この手順では、service テナントを使用して、ルーター、外部ネットワーク、およびデータセンター内のすべてのテナントによって使用される外部サブネットを作成する方法を示します。

この手順は、データセンターの管理者によって実行されます。OpenStack ダッシュボードでは一度に 1 つのテナントのリソースしか管理できないため、単一の共有ルーターを構成し、異なるテナントのネットワークとサブネットを関連付けるには、コマンド行を使用する必要があります。

次の手順を実行する場合は、Figure 3–4 を参照してください。

始める前に

この手順を実行する前に、内部ネットワークの構成を完了する必要があります。

  1. Solaris IP フィルタ機能を有効にします。
    network# svcadm enable ipfilter
  2. ホスト全体で IP 転送を有効にします。
    network# ipadm set-prop -p forwarding=on ipv4
    network# ipadm set-prop -p forwarding=on ipv6
  3. EVS が正しく構成されており、外部ネットワークに必要な VLAN ID を持つことを確認します。

    次の例の VLAN ID と範囲値は、Step 9 で完了した EVS 構成に基づいています。

    network# evsadm show-controlprop -p vlan-range,l2-type
    PROPERTY     PERM    VALUE         DEFAULT    HOST
    l2-type      rw      vlan          vlan       --
    vlan-range   rw      13,1000-2000  --         --
    
  4. service テナントが存在することを確認します。
    network# keystone tenant-list
  5. プロバイダルーターを作成します。

    プロバイダルーターは service テナントに、OpenStack neutron ユーザーとして作成します。

    新しいルーターの UUID (id) をメモします。これは次のステップで使用します。

    network# export OS_USERNAME=neutron
    network# export OS_PASSWORD=neutron-password
    network# export OS_TENANT_NAME=service
    network# export OS_AUTH_URL=http://controller-name:5000/v2.0
    network# neutron router-create provider_router
    Created a new router:
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | admin_state_up        | True                                 |
    | external_gateway_info |                                      |
    | id                    | 181543df-40d1-4514-ea77-fddd78c389ff |
    | name                  | provider_router                      |
    | status                | ACTIVE                               |
    | tenant_id             | f164220cb02465db929ce520869895fa     |
    +-----------------------+--------------------------------------+
  6. L3 エージェント構成ファイルを更新します。

    前のステップからのルーター UUID (id) を使用して、/etc/neutron/l3_agent.ini ファイル内の router_id の値を更新します。

    router_id = 181543df-40d1-4514-ea77-fddd78c389ff  
  7. neutron-l3-agent SMF サービスを有効にします。
    network# svcadm enable neutron-l3-agent
  8. 外部ネットワークを作成します。

    仮想ネットワークは service テナントに、OpenStack neutron ユーザーとして作成します。

    network# neutron net-create --provider:network_type=vlan \
    --provider:segmentation_id=13 --router:external=true external_network
    Created a new network:
    +--------------------------+--------------------------------------+
    | Field                    | Value                                |
    +--------------------------+--------------------------------------+
    | admin_state_up           | True                                 |
    | id                       | f67f0d72-0ddf-11e4-9d95-e1f29f417e2f |
    | name                     | external_network                     |
    | provider:network_type    | vlan                                 |
    | provider:segmentation_id | 13                                   |
    | router:external          | True                                 |
    | shared                   | False                                |
    | status                   | ACTIVE                               |
    | subnets                  |                                      |
    | tenant_id                | f164220cb02465db929ce520869895fa     |
    +--------------------------+--------------------------------------+
  9. 外部ネットワークにサブネットを関連付けます。

    外部ネットワークに関連付けられるサブネットネットワークを作成し、DHCP が無効であることとサブネットが外部ルーティングに使用されることを指定します。フローティング IP アドレスが割り当てられるルート可能 IP サブネットを指定します。この例では、このサブネットは VLAN ID 13 に関連付けられています。

    network# neutron subnet-create  --enable-dhcp=False \
    --allocation-pool start=10.134.13.8,end=10.134.13.254 \
    --name external_subnet  external_network 10.134.13.0/24
    Created a new subnet:
    
    +------------------+--------------------------------------------------+
    | Field            | Value                                            |
    +------------------+--------------------------------------------------+
    | allocation_pools | {"start": "10.134.13.8", "end": "10.134.13.254"} |
    | cidr             | 10.134.13.0/24                                   |
    | dns_nameservers  |                                                  |
    | enable_dhcp      | False                                            |
    | gateway_ip       | 10.134.13.1                                      |
    | host_routes      |                                                  |
    | id               | 5d9c8958-0de0-11e4-9d96-e1f29f417e2f             |
    | ip_version       | 4                                                |
    | name             | external_subnet                                  |
    | network_id       | f67f0d72-0ddf-11e4-9d95-e1f29f417e2f             |
    | tenant_id        | f164220cb02465db929ce520869895fa                 |
    +------------------+--------------------------------------------------+
  10. ルーターに外部ネットワークを追加します。

    次のコマンドで、最初の UUID は provider_router UUID で、2 番目の UUID は external_network UUID です。

    network# neutron router-gateway-set \
    181543df-40d1-4514-ea77-fddd78c389ff \
    f67f0d72-0ddf-11e4-9d95-e1f29f417e2f
    Set gateway for router 181543df-40d1-4514-ea77-fddd78c389ff
    network# neutron router-list -c name -c external_gateway_info
    +-----------------+--------------------------------------------------------+
    | name            | external_gateway_info                                  |
    +-----------------+--------------------------------------------------------+
    | provider_router | {"network_id": "f67f0d72-0ddf-11e4-9d95-e1f29f417e2f"} |
    +-----------------+--------------------------------------------------------+
  11. ルーターにテナントのプライベートネットワークを追加します。

    neutron net-list コマンドによって表示されるネットワークは、以前に構成されました。

    network# keystone tenant-list
    +----------------------------------+---------+---------+
    |                id                |   name  | enabled |
    +----------------------------------+---------+---------+
    | 511d4cb9ef6c40beadc3a664c20dc354 |   demo  |   True  |
    | f164220cb02465db929ce520869895fa | service |   True  |
    +----------------------------------+---------+---------+
    network# neutron net-list --tenant-id=511d4cb9ef6c40beadc3a664c20dc354
    +-------------------------------+------+------------------------------+
    | id                            | name | subnets                      |
    +-------------------------------+------+------------------------------+
    | c0c15e0a-0def-11e4-9d9f-      | HR   | c0c53066-0def-11e4-9da0-     |
    |  e1f29f417e2f                 |      | e1f29f417e2f 192.168.100.0/24|   
    | ce64b430-0def-11e4-9da2-      | ENG  | ce693ac8-0def-11e4-9da3-     |
    |  e1f29f417e2f                 |      | e1f29f417e2f 192.168.101.0/24|
    +-------------------------------+------+------------------------------+

    次のコマンドで、最初の UUID は provider_router UUID で、2 番目の UUID は HR サブネット UUID です。

    network# neutron router-interface-add  \
    181543df-40d1-4514-ea77-fddd78c389ff \
    c0c53066-0def-11e4-9da0-e1f29f417e2f       (HR subnet UUID)
    Added interface 7843841e-0e08-11e4-9da5-e1f29f417e2f to router 181543df-40d1-4514-ea77-fddd78c389ff.

    次のコマンドで、最初の UUID は provider_router UUID で、2 番目の UUID は ENG サブネット UUID です。

    network# neutron router-interface-add \
    181543df-40d1-4514-ea77-fddd78c389ff \
    ce693ac8-0def-11e4-9da3-e1f29f417e2f
    Added interface 89289b8e-0e08-11e4-9da6-e1f29f417e2f to router 181543df-40d1-4514-ea77-fddd78c389ff.

関連項目

フローティング IP アドレスをテナントユーザーとして作成および関連付ける方法

この手順は OpenStack Horizon ダッシュボードを使用してテナントユーザーによって実行します。

  1. OpenStack ダッシュボードにログインします。

    テナントユーザーの資格証明を使用して、OpenStack ダッシュボードにアクセスする方法の説明に従って、ログインします。

  2. 「プロジェクト」 -> 「アクセスとセキュリティ」 -> 「Floating IP」を選択します。
  3. external_network を選択します。
  4. 「IP の確保」ボタンをクリックします。

    「Floating IP」タブに、フローティング IP アドレス 10.134.13.9 が割り当てられていることが示されます。

  5. 「割り当て」ボタンをクリックします。
  6. プルダウンメニューから VM インスタンスのポートを選択します。

    「プロジェクト」 -> 「インスタンス」ウィンドウにはフローティング IP アドレスが VM インスタンスに関連付けられていることが示されます。

    VM インスタンスの起動中に、鍵ペア (SSH 公開鍵) を選択した場合、その SSH 鍵は VM インスタンスの root ユーザーの authorized_keys ファイルに追加されます。

  7. 実行中の VM インスタンスにログインします。
    global# ssh root@10.134.13.9
    Last login: Fri Jul 18 00:37:39 2014 from 10.132.146.13
    Oracle Corporation      SunOS 5.11      11.2     June 2014
    root@host-192-168-101-3:~# uname -a
    SunOS host-192-168-101-3 5.11 11.2 i86pc i386 i86pc
    root@host-192-168-101-3:~# zoneadm list -cv
    ID NAME              STATUS      PATH                 BRAND      IP    
     2 instance-00000001 running     /                    solaris    excl 
    root@host-192-168-101-3:~# ipadm
    NAME             CLASS/TYPE STATE     UNDER      ADDR
    lo0              loopback   ok        --         --
       lo0/v4        static     ok        --         127.0.0.1/8
       lo0/v6        static     ok        --         ::1/128
    net0             ip         ok        --         --
       net0/dhcp     inherited  ok        --         192.168.101.3/24

L3 エージェント構成を監視する方法

ipfippool、および ipnat などの IP フィルターコマンドおよび dladmipadm などのネットワークコマンドを使用すると、neturon-l3-agent によって実行された構成を監視し、トラブルシューティングすることができます。

  1. neutron-l3-agent によって作成された VNIC を表示します。
    network# dladm show-vnic
    LINK                OVER         SPEED  MACADDRESS        MACADDRTYPE VIDS
    l3i7843841e_0_0     net1         1000   2:8:20:42:ed:22   fixed       200
    l3i89289b8e_0_0     net1         1000   2:8:20:7d:87:12   fixed       201
    l3ed527f842_0_0     net0         100    2:8:20:9:98:3e    fixed       0
  2. neutron-l3-agent によって作成された IP アドレスを表示します。
    network# ipadm
    NAME                  CLASS/TYPE STATE   UNDER      ADDR
    l3ed527f842_0_0       ip         ok      --         --
      l3ed527f842_0_0/v4  static     ok      --         10.134.13.8/24
      l3ed527f842_0_0/v4a static     ok      --         10.134.13.9/32
    l3i7843841e_0_0       ip         ok      --         --
      l3i7843841e_0_0/v4  static     ok      --         192.168.100.1/24
    l3i89289b8e_0_0       ip         ok      --         --
      l3i89289b8e_0_0/v4  static     ok      --         192.168.101.1/24
  3. IP フィルタルールを表示します。
    network# ipfstat -io
    empty list for ipfilter(out)
    block in quick on l3i7843841e_0_0 from 192.168.100.0/24 to pool/4386082
    block in quick on l3i89289b8e_0_0 from 192.168.101.0/24 to pool/8226578
    network# ippool -l
    table role = ipf type = tree number = 8226578
    { 192.168.100.0/24; };
    table role = ipf type = tree number = 4386082
    { 192.168.101.0/24; };
  4. IP NAT ルールを表示します。
    network# ipnat -l
    List of active MAP/Redirect filters:
    bimap l3ed527f842_0_0 192.168.101.3/32 -> 10.134.13.9/32
    List of active sessions:
    BIMAP 192.168.101.3  22  <- -> 10.134.13.9  22 [10.132.146.13 36405]