16.5. 라우팅된 공급자 네트워크 생성

라우팅된 공급자 네트워크는 하나의 네트워크만 표시하므로 최종 사용자를 위한 RHOSP(Red Hat OpenStack Platform) 클라우드를 단순화합니다. 클라우드 운영자의 경우 라우팅된 공급자 네트워크는 스칼라빌리티 및 내결함성을 제공합니다.

이 절차를 수행하면 두 개의 네트워크 세그먼트가 있는 라우팅된 공급자 네트워크를 생성합니다. 각 세그먼트에는 하나의 IPv4 서브넷과 하나의 IPv6 서브넷이 있습니다.

사전 요구 사항

  • xref:prepare-routed-prov-network_deploy-routed-prov-networks에서 단계를 완료합니다.

절차

  1. 기본 세그먼트가 포함된 VLAN 공급자 네트워크를 생성합니다.

    이 예에서 VLAN 공급자 네트워크의 이름은 multisegment1 이고, provider1 이라는 물리적 네트워크와 ID가 128 인 VLAN을 사용합니다.

    예제

    $ openstack network create --share --provider-physical-network provider1 \
      --provider-network-type vlan --provider-segment 128 multisegment1

    샘플 출력

    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | UP                                   |
    | id                        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | ipv4_address_scope        | None                                 |
    | ipv6_address_scope        | None                                 |
    | l2_adjacency              | True                                 |
    | mtu                       | 1500                                 |
    | name                      | multisegment1                        |
    | port_security_enabled     | True                                 |
    | provider:network_type     | vlan                                 |
    | provider:physical_network | provider1                            |
    | provider:segmentation_id  | 128                                  |
    | revision_number           | 1                                    |
    | router:external           | Internal                             |
    | shared                    | True                                 |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | tags                      | []                                   |
    +---------------------------+--------------------------------------+

  2. 기본 네트워크 세그먼트의 이름을 segment1 로 변경합니다.

    1. 세그먼트 ID를 가져옵니다.

      $ openstack network segment list --network multisegment1

      샘플 출력

      +--------------------------------------+----------+--------------------------------------+--------------+---------+
      | ID                                   | Name     | Network                              | Network Type | Segment |
      +--------------------------------------+----------+--------------------------------------+--------------+---------+
      | 43e16869-ad31-48e4-87ce-acf756709e18 | None     | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 | vlan         | 128     |
      +--------------------------------------+----------+--------------------------------------+--------------+---------+

    2. 세그먼트 ID를 사용하여 네트워크 세그먼트 이름을 segment1 로 변경합니다.

      $ openstack network segment set --name segment1 43e16869-ad31-48e4-87ce-acf756709e18
  3. 공급자 네트워크에 두 번째 세그먼트를 생성합니다.

    이 예에서 네트워크 세그먼트는 provider2 라는 물리적 네트워크와 ID가 129 인 VLAN을 사용합니다.

    예제

    $ openstack network segment create --physical-network provider2 \
      --network-type vlan --segment 129 --network multisegment1 segment2

    샘플 출력

    +------------------+--------------------------------------+
    | Field            | Value                                |
    +------------------+--------------------------------------+
    | description      | None                                 |
    | headers          |                                      |
    | id               | 053b7925-9a89-4489-9992-e164c8cc8763 |
    | name             | segment2                             |
    | network_id       | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | network_type     | vlan                                 |
    | physical_network | provider2                            |
    | revision_number  | 1                                    |
    | segmentation_id  | 129                                  |
    | tags             | []                                   |
    +------------------+--------------------------------------+

  4. 네트워크에 segment1segment2 세그먼트가 포함되어 있는지 확인합니다.

    $ openstack network segment list --network multisegment1

    샘플 출력

    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    | ID                                   | Name     | Network                              | Network Type | Segment |
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    | 053b7925-9a89-4489-9992-e164c8cc8763 | segment2 | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 | vlan         | 129     |
    | 43e16869-ad31-48e4-87ce-acf756709e18 | segment1 | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 | vlan         | 128     |
    +--------------------------------------+----------+--------------------------------------+--------------+---------+

  5. segment1 세그먼트에 하나의 IPv4 서브넷과 하나의 IPv6 서브넷을 만듭니다.

    이 예에서 IPv4 서브넷에서는 203.0.113.0/24 를 사용합니다.

    예제

    $ openstack subnet create \
      --network multisegment1 --network-segment segment1 \
      --ip-version 4 --subnet-range 203.0.113.0/24 \
      multisegment1-segment1-v4

    샘플 출력

    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | allocation_pools  | 203.0.113.2-203.0.113.254            |
    | cidr              | 203.0.113.0/24                       |
    | enable_dhcp       | True                                 |
    | gateway_ip        | 203.0.113.1                          |
    | id                | c428797a-6f8e-4cb1-b394-c404318a2762 |
    | ip_version        | 4                                    |
    | name              | multisegment1-segment1-v4            |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | revision_number   | 1                                    |
    | segment_id        | 43e16869-ad31-48e4-87ce-acf756709e18 |
    | tags              | []                                   |
    +-------------------+--------------------------------------+

    이 예에서 IPv6 서브넷은 fd00:203:0:113::/64 를 사용합니다.

    예제

    $ openstack subnet create \
      --network multisegment1 --network-segment segment1 \
      --ip-version 6 --subnet-range fd00:203:0:113::/64 \
      --ipv6-address-mode slaac multisegment1-segment1-v6

    샘플 출력

    +-------------------+------------------------------------------------------+
    | Field             | Value                                                |
    +-------------------+------------------------------------------------------+
    | allocation_pools  | fd00:203:0:113::2-fd00:203:0:113:ffff:ffff:ffff:ffff |
    | cidr              | fd00:203:0:113::/64                                  |
    | enable_dhcp       | True                                                 |
    | gateway_ip        | fd00:203:0:113::1                                    |
    | id                | e41cb069-9902-4c01-9e1c-268c8252256a                 |
    | ip_version        | 6                                                    |
    | ipv6_address_mode | slaac                                                |
    | ipv6_ra_mode      | None                                                 |
    | name              | multisegment1-segment1-v6                            |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9                 |
    | revision_number   | 1                                    |
    | segment_id        | 43e16869-ad31-48e4-87ce-acf756709e18                 |
    | tags              | []                                                   |
    +-------------------+------------------------------------------------------+

    참고

    기본적으로 공급자 네트워크의 IPv6 서브넷은 상태 비저장 주소 자동 구성(SLAAC) 및 라우터 알림을 위해 물리적 네트워크 인프라에 의존합니다.

  6. segment2 세그먼트에 하나의 IPv4 서브넷과 하나의 IPv6 서브넷을 만듭니다.

    이 예에서 IPv4 서브넷에서는 198.51.100.0/24 를 사용합니다.

    예제

    $ openstack subnet create \
      --network multisegment1 --network-segment segment2 \
      --ip-version 4 --subnet-range 198.51.100.0/24 \
      multisegment1-segment2-v4

    샘플 출력

    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | allocation_pools  | 198.51.100.2-198.51.100.254          |
    | cidr              | 198.51.100.0/24                      |
    | enable_dhcp       | True                                 |
    | gateway_ip        | 198.51.100.1                         |
    | id                | 242755c2-f5fd-4e7d-bd7a-342ca95e50b2 |
    | ip_version        | 4                                    |
    | name              | multisegment1-segment2-v4            |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | revision_number   | 1                                    |
    | segment_id        | 053b7925-9a89-4489-9992-e164c8cc8763 |
    | tags              | []                                   |
    +-------------------+--------------------------------------+

    이 예에서 IPv6 서브넷은 fd00:198:51:100::/64 를 사용합니다.

    예제

    $ openstack subnet create \
      --network multisegment1 --network-segment segment2 \
      --ip-version 6 --subnet-range fd00:198:51:100::/64 \
      --ipv6-address-mode slaac multisegment1-segment2-v6

    샘플 출력

    +-------------------+--------------------------------------------------------+
    | Field             | Value                                                  |
    +-------------------+--------------------------------------------------------+
    | allocation_pools  | fd00:198:51:100::2-fd00:198:51:100:ffff:ffff:ffff:ffff |
    | cidr              | fd00:198:51:100::/64                                   |
    | enable_dhcp       | True                                                   |
    | gateway_ip        | fd00:198:51:100::1                                     |
    | id                | b884c40e-9cfe-4d1b-a085-0a15488e9441                   |
    | ip_version        | 6                                                      |
    | ipv6_address_mode | slaac                                                  |
    | ipv6_ra_mode      | None                                                   |
    | name              | multisegment1-segment2-v6                              |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9                   |
    | revision_number   | 1                                                      |
    | segment_id        | 053b7925-9a89-4489-9992-e164c8cc8763                   |
    | tags              | []                                                     |
    +-------------------+--------------------------------------------------------+

검증

  1. 각 IPv4 서브넷이 하나 이상의 DHCP 에이전트와 연결되어 있는지 확인합니다.

    $ openstack network agent list --agent-type dhcp --network multisegment1

    샘플 출력

    +--------------------------------------+------------+-------------+-------------------+-------+-------+--------------------+
    | ID                                   | Agent Type | Host        | Availability Zone | Alive | State | Binary             |
    +--------------------------------------+------------+-------------+-------------------+-------+-------+--------------------+
    | c904ed10-922c-4c1a-84fd-d928abaf8f55 | DHCP agent | compute0001 | nova              | :-)   | UP    | neutron-dhcp-agent |
    | e0b22cc0-d2a6-4f1c-b17c-27558e20b454 | DHCP agent | compute0101 | nova              | :-)   | UP    | neutron-dhcp-agent |
    +--------------------------------------+------------+-------------+-------------------+-------+-------+--------------------+

  2. Compute 서비스 배치 API의 각 세그먼트 IPv4 서브넷에 대해 인벤토리가 생성되었는지 확인합니다.

    모든 세그먼트 ID에 대해 이 명령을 실행합니다.

    $ SEGMENT_ID=053b7925-9a89-4489-9992-e164c8cc8763
    $ openstack resource provider inventory list $SEGMENT_ID

    샘플 출력

    이 샘플 출력에서는 세그먼트 중 하나만 표시됩니다.

    +----------------+------------------+----------+----------+-----------+----------+-------+
    | resource_class | allocation_ratio | max_unit | reserved | step_size | min_unit | total |
    +----------------+------------------+----------+----------+-----------+----------+-------+
    | IPV4_ADDRESS   |              1.0 |        1 |        2 |         1 |        1 |    30 |
    +----------------+------------------+----------+----------+-----------+----------+-------+
  3. Compute 서비스의 각 세그먼트에 대해 호스트 집계가 생성되었는지 확인합니다.

    $ openstack aggregate list

    샘플 출력

    이 예제에서는 세그먼트 중 하나만 표시됩니다.

    +----+---------------------------------------------------------+-------------------+
    | Id | Name                                                    | Availability Zone |
    +----+---------------------------------------------------------+-------------------+
    | 10 | Neutron segment id 053b7925-9a89-4489-9992-e164c8cc8763 | None              |
    +----+---------------------------------------------------------+-------------------+
  4. 하나 이상의 인스턴스를 시작합니다. 각 인스턴스는 특정 계산 노드에서 사용하는 세그먼트에 따라 IP 주소를 가져옵니다.

    참고

    포트 생성 요청의 사용자가 고정 IP를 지정하면 해당 특정 IP가 포트에 즉시 할당됩니다. 그러나 포트를 생성하고 인스턴스에 전달하면 기존 네트워크와 다른 동작이 생성됩니다. 포트 생성 요청에 고정 IP를 지정하지 않으면 특정 계산 노드가 나타날 때까지 네트워킹 서비스에서 포트에 IP 주소 할당을 지연합니다. 예를 들어 다음 명령을 실행하는 경우:

    $ openstack port create --network multisegment1 port1

    샘플 출력

    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | admin_state_up        | UP                                   |
    | binding_vnic_type     | normal                               |
    | id                    | 6181fb47-7a74-4add-9b6b-f9837c1c90c4 |
    | ip_allocation         | deferred                             |
    | mac_address           | fa:16:3e:34:de:9b                    |
    | name                  | port1                                |
    | network_id            | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | port_security_enabled | True                                 |
    | revision_number       | 1                                    |
    | security_groups       | e4fcef0d-e2c5-40c3-a385-9c33ac9289c5 |
    | status                | DOWN                                 |
    | tags                  | []                                   |
    +-----------------------+--------------------------------------+

추가 리소스