サービスサブネットを使用すると、運用者がネットワーク上の各サブネットに対して有効なポート種別を定義できるようになります。これにより、ネットワークに作成するサブネットを 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
特定のサブネットを指定してポートの作成や更新を行った場合は、この選択処理はスキップされ、指定されたサブネットが明示的に使用されます。
注釈
サービスタイプを指定してサブネットを作成するには、管理者権限が必要です。
ネットワークを作成します。
$ 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 | [] |
+---------------------------+--------------------------------------+
サービスタイプを 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 |
+-------------------+--------------------------------------+
別のサービスタイプを指定して、同じネットワーク上に別のサブネットを作成することもできます。例えば、 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 |
+-------------------+--------------------------------------+
上記のネットワークを使ってインスタンスを起動します。例えば、 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 |
+--------------------------------------+-----------------------------------------------+
インスタンスの状態を確認します。 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 |
+--------------------------------------+-----------------+---------+--------------------+
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.