Subnet layanan

Subnet layanan

Subnet layanan mengaktifkan operator untuk menentukan tipe port yang valid untuk setiap subnet pada jaringan tanpa membatasi jaringan ke satu subnet atau secara manual membuat port dengan ID subnet tertentu. Menggunakan fitur ini, operator dapat memastikan bahwa port untuk instance dan antarmuka router, misalnya, selalu menggunakan subnet yang berbeda.

Operation (operasi)

Tentukan satu atau lebih tipe layanan untuk satu atau lebih subnet pada jaringan tertentu. Setiap tipe layanan harus sesuai dengan pemilik perangkat valid dalam model port supaya digunakan.

Selama alokasi IP, driver IPAM mengembalikan alamat dari subnet dengan tipe layanan yang cocok dengan pemilik perangkat port. Jika tidak ada subnet cocok, atau semua subnet yang cocok kekurangan alamat IP yang tersedia, driver IPAM mencoba untuk menggunakan subnet tanpa tipe layanan untuk melestarikan kompatibilitas. Jika semua subnet pada jaringan memiliki tipe layanan, driver IPAM tidak dapat melestarikan kompatibilitas. Namun, fitur ini mengaktifkan alokasi IP yang ketat dari subnet dengan pemilik perangkat yang cocok. Jika beberapa subnet berisi tipe layanan yang sama, atau subnet tanpa tipe layanan itu ada, driver IPAM memilih subnet pertama dengan tipe layanan yang cocok. Misalnya, port gerbang agen IP mengambang menggunakan proses seleksi berikut:

  • network:floatingip_agent_gateway
  • None

Catatan

Port dengan pemilik perangkat network:dhcp dibebaskan dari logika IPAM di atas untuk subnet dengan dhcp_enabled diatur ke `` True``. Ini mempertahankan perilaku penciptaan port DHCP otomatis yang ada untuk subnet DHCP-enabled.

Pembuatan atau pembaharuan port dengan subnet tertentu melompati proses seleksi ini dan secara eksplisit menggunakan subnet yang diberikan.

Usage (penggunaan)

Catatan

Pembuatan subnet dengan tipe layanan membutuhkan hak administratif.

Example 1 - Proof-of-concept

Ini contoh berikut ini tidak khas dari pengerahan yang nyata. Hal ini ditunjukkan untuk memungkinkan pengguna untuk bereksperimen dengan konfigurasi subnet layanan.

  1. Membuat jaringan.

    $ 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. Buat subnet pada jaringan dengan satu atau lebih tipe layanan. Sebagai contoh, tipe layanan compute:nova mengaktifkan instance untuk menggunakan subnet ini.

    $ openstack subnet create demo-subnet1 --subnet-range 192.0.2.0/24 \
      --service-type 'compute:nova' --network demo-net1
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | id                | 6e38b23f-0b27-4e3c-8e69-fd23a3df1935 |
    | ip_version        | 4                                    |
    | cidr              | 192.0.2.0/24                         |
    | name              | demo-subnet1                         |
    | network_id        | b5b729d8-31cc-4d2c-8284-72b3291fec02 |
    | service_types     | ['compute:nova']                     |
    | tenant_id         | a8b3054cc1214f18b1186b291525650f     |
    +-------------------+--------------------------------------+
    
  3. Secara opsional, buat subnet lain di jaringan dengan tipe layanan yang berbeda. Sebagai contoh, tipe layanan apapun compute:foo

    $ openstack subnet create demo-subnet2 --subnet-range 198.51.100.0/24 \
      --service-type 'compute:foo' --network demo-net1
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | id                | ea139dcd-17a3-4f0a-8cca-dff8b4e03f8a |
    | ip_version        | 4                                    |
    | cidr              | 198.51.100.0/24                      |
    | name              | demo-subnet2                         |
    | network_id        | b5b729d8-31cc-4d2c-8284-72b3291fec02 |
    | service_types     | ['compute:foo']                      |
    | tenant_id         | a8b3054cc1214f18b1186b291525650f     |
    +-------------------+--------------------------------------+
    
  4. Luncurkan sebuah instance menggunakan jaringan. Misalnya, dengan menggunakan image cirros dan flavor 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. Periksa status instance. Field Networks berisi alamat IP dari subnet memiliki tipe layanan compute:nova

    $ openstack server list
    +--------------------------------------+-----------------+---------+---------------------+
    | ID                                   | Name            | Status  | Networks            |
    +--------------------------------------+-----------------+---------+---------------------+
    | 20181f46-5cd2-4af8-9af0-f4cf5c983008 | demo-instance1  | ACTIVE  | demo-net1=192.0.2.3 |
    +--------------------------------------+-----------------+---------+---------------------+
    

Example 2 - DVR configuration

Contoh berikut menguraikan bagaimana Anda dapat mengkonfigurasi subnet layanan dalam pengerahan DVR-enabled, dengan tujuan meminimalkan konsumsi alamat IP publik. Contoh ini menggunakan tiga subnet pada jaringan eksternal yang sama:

  • 192.0.2.0/24 untuk alamat IP mengambang instance.
  • 198.51.100.0/24 untuk IP mengambang dimana IP gerbang agen dikonfigurasi pada node komputasi
  • 203.0.113.0/25 untuk semua alokasi IP lainnya pada jaringan eksternal

Contoh ini menggunakan lagi jaringan private, demo-net1 (b5b729d8-31cc-4d2c-8284-72b3291fec02) yang diciptakan di Example 1 - Proof-of-concept.

  1. Buat jaringan eksternal:

    $ openstack network create --external demo-ext-net
    
  2. Buat subnet pada jaringan eksternal untuk alamat IP mengambang instance. Ini menggunakan tipe layanan network:floatingip.

    $ openstack subnet create demo-floating-ip-subnet \
      --subnet-range 192.0.2.0/24 --no-dhcp \
      --service-type 'network:floatingip' --network demo-ext-net
    
  3. Buat subnet pada jaringan eksternal untuk floating IP agent gateway IP addresses, yang dikonfigurasi dengan DVR pada node komputasi. Ini akan menggunakan tipe layanan network:floatingip_agent_gateway.

    $ openstack subnet create demo-floating-ip-agent-gateway-subnet \
      --subnet-range 198.51.100.0/24 --no-dhcp \
      --service-type 'network:floatingip_agent_gateway' \
      --network demo-ext-net
    
  4. Buat subnet pada jaringan eksternal untuk semua alamat IP lainnya yang dialokasikan pada jaringan eksternal. Subnet tidak akan menggunakan tipe layanan. Subnet bertindak minder (fall back) ke alokasi yang tidak sesuai dengan salah satu dari dua subnet layanan di atas.

    $ openstack subnet create demo-other-subnet \
      --subnet-range 203.0.113.0/25 --no-dhcp \
      --network demo-ext-net
    
  5. Buat router:

    $ openstack router create demo-router
    
  6. Tambahkan antarmuka ke router pada demo-subnet1:

    $ openstack router add subnet demo-router demo-subnet1
    
  7. Atur gateway eksternal untuk router, yang akan membuat sebuah antarmuka dan mengalokasikan alamat IP pada demo-ext-net:

    $ neutron router-gateway-set demo-router demo-ext-net
    
  8. Luncurkan sebuah instance pada jaringan private dan mengambil ID port neutron yang dialokasikan. Seperti di atas, gunakan image cirros dan flavor m1.tiny:

    $ openstack server create demo-instance1 --flavor m1.tiny \
      --image cirros --nic net-id=b5b729d8-31cc-4d2c-8284-72b3291fec02
    $ openstack port list --server demo-instance1
    +--------------------------------------+------+-------------------+--------------------------------------------------+--------+
    | ID                                   | Name | MAC Address       | Fixed IP Addresses                               | Status |
    +--------------------------------------+------+-------------------+--------------------------------------------------+--------+
    | a752bb24-9bf2-4d37-b9d6-07da69c86f19 |      | fa:16:3e:99:54:32 | ip_address='203.0.113.130',                      | ACTIVE |
    |                                      |      |                   | subnet_id='6e38b23f-0b27-4e3c-8e69-fd23a3df1935' |        |
    +--------------------------------------+------+-------------------+--------------------------------------------------+--------+
    
  9. Kaitkan IP mengambang dengan port instance dan lakukan verifikasi apakah alamat IP yang dialokasikan itu dari subnet yang benar:

    $ openstack floating ip create --port \
      a752bb24-9bf2-4d37-b9d6-07da69c86f19 demo-ext-net
    +---------------------+--------------------------------------+
    | Field               | Value                                |
    +---------------------+--------------------------------------+
    | fixed_ip_address    | 203.0.113.130                        |
    | floating_ip_address | 192.0.2.12                           |
    | floating_network_id | 02d236d5-dad9-4082-bb6b-5245f9f84d13 |
    | id                  | f15cae7f-5e05-4b19-bd25-4bb71edcf3de |
    | port_id             | a752bb24-9bf2-4d37-b9d6-07da69c86f19 |
    | project_id          | d44c19e056674381b86430575184b167     |
    | router_id           | 5a8ca19f-3703-4f81-bc29-db6bc2f528d6 |
    | status              | ACTIVE                               |
    +---------------------+--------------------------------------+
    
  10. Sebagai pengguna admin, lakukan verifikasi apakah router neutron dialokasikan alamat IP dari subnet yang benar. Gunakan openstack port list untuk menemukan port yang berhubungan dengan router.

    Pertama, port eksternal gerbang router:

    $ neutron port-show f148ffeb-3c26-4067-bc5f-5c3dfddae2f5
    +-----------------------+--------------------------------------------------------------------------+
    | Field                 | Value                                                                    |
    +-----------------------+--------------------------------------------------------------------------+
    | admin_state_up        | UP                                                                       |
    | device_id             | 5a8ca19f-3703-4f81-bc29-db6bc2f528d6                                     |
    | device_owner          | network:router_gateway                                                   |
    | extra_dhcp_opts       |                                                                          |
    | fixed_ips             | ip_address='203.0.113.11',                                               |
    |                       | subnet_id='67c251d9-2b7a-4200-99f6-e13785b0334d'                         |
    | id                    | f148ffeb-3c26-4067-bc5f-5c3dfddae2f5                                     |
    | mac_address           | fa:16:3e:2c:0f:69                                                        |
    | network_id            | 02d236d5-dad9-4082-bb6b-5245f9f84d13                                     |
    | project_id            |                                                                          |
    | status                | ACTIVE                                                                   |
    +-----------------------+--------------------------------------------------------------------------+
    

    Kedua, port eksternal gerbang agen IP mengambang router :

    $ neutron port-show a2d1e756-8ae1-4f96-9aa1-e7ea16a6a68a
    +-----------------------+--------------------------------------------------------------------------+
    | Field                 | Value                                                                    |
    +-----------------------+--------------------------------------------------------------------------+
    | admin_state_up        | UP                                                                       |
    | device_id             | 3d0c98eb-bca3-45cc-8aa4-90ae3deb0844                                     |
    | device_owner          | network:floatingip_agent_gateway                                         |
    | extra_dhcp_opts       |                                                                          |
    | fixed_ips             | ip_address='198.51.100.10',                                              |
    |                       | subnet_id='67c251d9-2b7a-4200-99f6-e13785b0334d'                         |
    | id                    | a2d1e756-8ae1-4f96-9aa1-e7ea16a6a68a                                     |
    | mac_address           | fa:16:3e:f4:5d:fa                                                        |
    | network_id            | 02d236d5-dad9-4082-bb6b-5245f9f84d13                                     |
    | project_id            |                                                                          |
    | status                | ACTIVE                                                                   |
    +-----------------------+--------------------------------------------------------------------------+
    
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.