サービスサブネット

サービスサブネット

サービスサブネットを使用すると、運用者がネットワーク上の各サブネットに対して有効なポート種別を定義できるようになります。これにより、ネットワークに作成するサブネットを 1 つに限定したり、特定のサブネット ID を指定してポートを手動で作成したりする必要がなくなります。この機能を使うと、運用者は、例えば、インスタンス用のポートとルーターインターフェース用のポートが常に別のサブネットを使用するようにできます。

運用

あるネットワークの 1 つ以上のサブネットにサービスタイプを 1 つ以上定義します。サービスタイプを使用するには、サービスタイプがポートモデルの有効な device_owner に対応する必要があります。

IP 割り当ての際、 IPAM ドライバーは、ポートの device_owner に一致するサービスタイプを持つサブネットからアドレスを返します。一致するサブネットがない場合や、一致するすべてのサブネットに利用可能な IP アドレスが不足している場合、 IPAM ドライバーは、これまでと同じ動作をするよう、サービスタイプが指定されていないサブネットを使って IP アドレスを割り当てようとします。ネットワーク上のすべてのサブネットにサービスタイプが指定されている場合には、 IPAM ドライバーはこれまでと同じ動作を保つことはできません。一方で、この機能を使うと、 device owner にマッチするサブネットから厳密に IP 割り当てができます。同じサービスタイプを持つサブネットが複数ある場合や、サービスタイプが指定されていないサブネットが存在する場合、 IPAM ドライバーはサービスタイプに一致した最初のサブネットを選択します。例えば、 Floating IP エージェントゲートウェイは以下の順番で選択を行います。

  • network:floatingip_agent_gateway
  • None

特定のサブネットを指定してポートの作成や更新を行った場合は、この選択処理はスキップされ、指定されたサブネットが明示的に使用されます。

使用方法

注釈

サービスタイプを指定してサブネットを作成するには、管理者権限が必要です。

  1. ネットワークを作成します。

    $ openstack network create demo-net1
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | UP                                   |
    | availability_zone_hints   |                                      |
    | availability_zones        |                                      |
    | description               |                                      |
    | headers                   |                                      |
    | id                        | b5b729d8-31cc-4d2c-8284-72b3291fec02 |
    | ipv4_address_scope        | None                                 |
    | ipv6_address_scope        | None                                 |
    | mtu                       | 1450                                 |
    | name                      | demo-net1                            |
    | port_security_enabled     | True                                 |
    | project_id                | a3db43cd0f224242a847ab84d091217d     |
    | provider:network_type     | vxlan                                |
    | provider:physical_network | None                                 |
    | provider:segmentation_id  | 110                                  |
    | router:external           | Internal                             |
    | shared                    | False                                |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | tags                      | []                                   |
    +---------------------------+--------------------------------------+
    
  2. サービスタイプを 1 つ以上指定して、ネットワークにサブネットを作成します。例えば、 compute:nova サービスタイプを指定すると、インスタンスがこのサブネットを使うようにできます。

    $ openstack subnet create demo-subnet1 --subnet-range 10.0.0.0/24 \
      --service-type 'compute:nova' --network demo-net1
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | id                | 6e38b23f-0b27-4e3c-8e69-fd23a3df1935 |
    | ip_version        | 4                                    |
    | cidr              | 10.0.0.0/24                          |
    | name              | demo-subnet1                         |
    | network_id        | b5b729d8-31cc-4d2c-8284-72b3291fec02 |
    | service_types     | ['compute:nova']                     |
    | tenant_id         | a8b3054cc1214f18b1186b291525650f     |
    +-------------------+--------------------------------------+
    
  3. 別のサービスタイプを指定して、同じネットワーク上に別のサブネットを作成することもできます。例えば、 compute:foo といった任意のサービスタイプを指定できます。

    $ openstack subnet create demo-subnet2 --subnet-range 10.0.10.0/24 \
      --service-type 'compute:foo' --network demo-net1
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | id                | ea139dcd-17a3-4f0a-8cca-dff8b4e03f8a |
    | ip_version        | 4                                    |
    | cidr              | 10.0.10.0/24                         |
    | name              | demo-subnet2                         |
    | network_id        | b5b729d8-31cc-4d2c-8284-72b3291fec02 |
    | service_types     | ['compute:foo']                      |
    | tenant_id         | a8b3054cc1214f18b1186b291525650f     |
    +-------------------+--------------------------------------+
    
  4. 上記のネットワークを使ってインスタンスを起動します。例えば、 cirros イメージと m1.tiny フレーバーを使用しています。

    $ openstack server create demo-instance1 --flavor m1.tiny \
      --image cirros --nic net-id=b5b729d8-31cc-4d2c-8284-72b3291fec02
    +--------------------------------------+-----------------------------------------------+
    | Field                                | Value                                         |
    +--------------------------------------+-----------------------------------------------+
    | OS-DCF:diskConfig                    | MANUAL                                        |
    | OS-EXT-AZ:availability_zone          |                                               |
    | OS-EXT-SRV-ATTR:host                 | None                                          |
    | OS-EXT-SRV-ATTR:hypervisor_hostname  | None                                          |
    | OS-EXT-SRV-ATTR:instance_name        | instance-00000009                             |
    | OS-EXT-STS:power_state               | 0                                             |
    | OS-EXT-STS:task_state                | scheduling                                    |
    | OS-EXT-STS:vm_state                  | building                                      |
    | OS-SRV-USG:launched_at               | None                                          |
    | OS-SRV-USG:terminated_at             | None                                          |
    | accessIPv4                           |                                               |
    | accessIPv6                           |                                               |
    | addresses                            |                                               |
    | adminPass                            | Fn85skabdxBL                                  |
    | config_drive                         |                                               |
    | created                              | 2016-09-19T15:07:42Z                          |
    | flavor                               | m1.tiny (1)                                   |
    | hostId                               |                                               |
    | id                                   | 04222b73-1a6e-4c2a-9af4-ef3d17d521ff          |
    | image                                | cirros (4aaec87d-c655-4856-8618-b2dada3a2b11) |
    | key_name                             | None                                          |
    | name                                 | demo-instance1                                |
    | os-extended-volumes:volumes_attached | []                                            |
    | progress                             | 0                                             |
    | project_id                           | d44c19e056674381b86430575184b167              |
    | properties                           |                                               |
    | security_groups                      | [{u'name': u'default'}]                       |
    | status                               | BUILD                                         |
    | updated                              | 2016-09-19T15:07:42Z                          |
    | user_id                              | 331afbeb322d4c559a181e19051ae362              |
    +--------------------------------------+-----------------------------------------------+
    
  5. インスタンスの状態を確認します。 Networks フィールドを見ると、 compute:nova サービスタイプを持つサブネットの IP アドレスが割り当てられています。

    $ openstack server list
    +--------------------------------------+-----------------+---------+--------------------+
    | ID                                   | Name            | Status  | Networks           |
    +--------------------------------------+-----------------+---------+--------------------+
    | 20181f46-5cd2-4af8-9af0-f4cf5c983008 | demo-instance1  | ACTIVE  | demo-net1=10.0.0.3 |
    +--------------------------------------+-----------------+---------+--------------------+
    
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.