셀프 서비스 네트워크

네트워킹 옵션 2를 선택한 경우, 물리 네트워크 인프라를 NAT를 통해 접속하는 셀프 서비스 (사설) 프로젝트 네트워크를 생성 또한 가능합니다. 해당 네트워크는 IP 주소를 인스턴스에 제공하는 DHCP 서버를 포함합니다. 해당 네트워크에서 한 개의 인스턴스는 자동으로 Internet과 같은 외부 네트워크에 자동으로 액세스 가능합니다. 그러나 인스턴스가 Internet과 같은 외부 네트워크로부터 해당 네트워크에 대한 액세스를 하기 위해서는 floating IP address 를 필요로합니다.

demo 또는 다른 관리 권한을 가지지 않은 사용자는 demo 프로젝트 내에만 있는 인스턴스에 대한 접속을 제공하기 때문에 해당 네트워크를 생성할 수 있습니다.

경고

셀프 서비스 프로젝트 네트워크 이전에 create the provider network 를 진행해야 합니다.

참고

다음 안내 및 그림은 예제 IP 주소 범위를 사용합니다. 특정 대상 환경을 위해 이들을 조정해야 합니다.

Networking Option 2: Self-service networks - Overview

네트워킹 옵션 2: 셀프-서비스 네트워크 - 개요

Networking Option 2: Self-service networks - Connectivity

네트워킹 옵션 2: 셀프-서비스 네트워크 - 연결

셀프 서비스 네트워크를 생성합니다

  1. 컨트롤러 노드에서 demo credential을 소스로 하여 사용자 전용 CLI 명령에 대한 액세스를 갖습니다:

    $ . demo-openrc
    
  2. 네트워크 생성:

    $ openstack network create selfservice
    
    Created a new network:
    +-------------------------+--------------------------------------+
    | Field                   | Value                                |
    +-------------------------+--------------------------------------+
    | admin_state_up          | UP                                   |
    | availability_zone_hints |                                      |
    | availability_zones      |                                      |
    | created_at              | 2016-11-04T18:20:59Z                 |
    | description             |                                      |
    | headers                 |                                      |
    | id                      | 7c6f9b37-76b4-463e-98d8-27e5686ed083 |
    | ipv4_address_scope      | None                                 |
    | ipv6_address_scope      | None                                 |
    | mtu                     | 1450                                 |
    | name                    | selfservice                          |
    | port_security_enabled   | True                                 |
    | project_id              | 3828e7c22c5546e585f27b9eb5453788     |
    | project_id              | 3828e7c22c5546e585f27b9eb5453788     |
    | revision_number         | 3                                    |
    | router:external         | Internal                             |
    | shared                  | False                                |
    | status                  | ACTIVE                               |
    | subnets                 |                                      |
    | tags                    | []                                   |
    | updated_at              | 2016-11-04T18:20:59Z                 |
    +-------------------------+--------------------------------------+
    

    관리자가 아닌 사용자는 보통 해당 명령어에 대해 부가적인 매개변수를 제공할 수 없습니다. 해당 서비스는 다음 파일에 있는 정보를 사용하여 매개변수를 자동으로 선택합니다:

    ml2_conf.ini:

    [ml2]
    tenant_network_types = vxlan
    
    [ml2_type_vxlan]
    vni_ranges = 1:1000
    
  3. 네트워크에 서브넷을 생성합니다:

    $ openstack subnet create --network selfservice \
      --dns-nameserver DNS_RESOLVER --gateway SELFSERVICE_NETWORK_GATEWAY \
      --subnet-range SELFSERVICE_NETWORK_CIDR selfservice
    

    DNS_RESOLVER 를 DNS를 변환하는 IP 주소로 변경합니다. 대부분의 경우, 호스트에 있는 /etc/resolv.conf 파일에 있는 하나를 사용 가능합니다.

    SELFSERVICE_NETWORK_GATEWAY 를 셀프 서비스 네트워크에 사용하고자 하는 게이트웨이로 변경합니다. 보통, 《.1》 IP 주소를 사용합니다.

    SELFSERVICE_NETWORK_CIDR 을 셀프 서비스 네트워크에 사용하고자 하는 서브넷으로 변경합니다. RFC 1918 상의 네트워크를 권장하지만, 임의의 값을 사용할 수 있습니다.

    예시

    해당 셀프 서비스 네트워크는 172.16.1.0/24 대역을 172.16.1.1 게이트웨이와 함께 사용합니다. DHCP 서버는 각 인스턴스에 172.16.1.2부터 172.16.1.254 까지의 IP 주소를 할당합니다. 모든 인스턴스들은 DNS 변환에 대해 8.8.4.4를 사용합니다.

    $ openstack subnet create --network selfservice \
      --dns-nameserver 8.8.4.4 --gateway 172.16.1.1 \
      --subnet-range 172.16.1.0/24 selfservice
    
    Created a new subnet:
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | allocation_pools  | 172.16.1.2-172.16.1.254              |
    | cidr              | 172.16.1.0/24                        |
    | created_at        | 2016-11-04T18:30:54Z                 |
    | description       |                                      |
    | dns_nameservers   | 8.8.4.4                              |
    | enable_dhcp       | True                                 |
    | gateway_ip        | 172.16.1.1                           |
    | headers           |                                      |
    | host_routes       |                                      |
    | id                | 5c37348e-e7da-439b-8c23-2af47d93aee5 |
    | ip_version        | 4                                    |
    | ipv6_address_mode | None                                 |
    | ipv6_ra_mode      | None                                 |
    | name              | selfservice                          |
    | network_id        | b9273876-5946-4f02-a4da-838224a144e7 |
    | project_id        | 3828e7c22c5546e585f27b9eb5453788     |
    | project_id        | 3828e7c22c5546e585f27b9eb5453788     |
    | revision_number   | 2                                    |
    | service_types     | []                                   |
    | subnetpool_id     | None                                 |
    | updated_at        | 2016-11-04T18:30:54Z                 |
    +-------------------+--------------------------------------+
    

라우터 생성

셀프 서비스 네트워크는 프로바이더 네트워크에 통상 양방향 NAT를 수생하는 가상 라우터를 사용하여 접속합니다. 각 라우터는 적어도 하나의 셀프 서비스 프로젝트 네트워크와 프로바이더 네트워크에 대한 게이트웨이에 대한 인터페이스를 포함합니다.

프로바이더 네트워크는 router: external 옵션을 포함하여 Internet과 같은 외부 네트워크에 대한 접속을 위해 셀프 서비스 라우터를 활성화하도록 해야 합니다. admin 또는 다른 관리 권한이 있는 사용자는 네트워크 생성 또는 이후 추가하고자 하는 경우 해당 옵션을 반드시 사용해야 합니다. 이 경우에는, router:external 옵션이 provider 네트워크를 사용하는 경우 --external 매개변수를 사용해 설정되어 있습니다.

  1. 컨트롤러 노드에서 demo credential을 소스로 하여 사용자 전용 CLI 명령에 대한 액세스를 갖습니다:

    $ . demo-openrc
    
  2. 라우터 생성

    $ openstack router create router
    
    Created a new router:
    +-------------------------+--------------------------------------+
    | Field                   | Value                                |
    +-------------------------+--------------------------------------+
    | admin_state_up          | UP                                   |
    | availability_zone_hints |                                      |
    | availability_zones      |                                      |
    | created_at              | 2016-11-04T18:32:56Z                 |
    | description             |                                      |
    | external_gateway_info   | null                                 |
    | flavor_id               | None                                 |
    | headers                 |                                      |
    | id                      | 67324374-396a-4db6-9443-c70be167a42b |
    | name                    | router                               |
    | project_id              | 3828e7c22c5546e585f27b9eb5453788     |
    | project_id              | 3828e7c22c5546e585f27b9eb5453788     |
    | revision_number         | 2                                    |
    | routes                  |                                      |
    | status                  | ACTIVE                               |
    | updated_at              | 2016-11-04T18:32:56Z                 |
    +-------------------------+--------------------------------------+
    
  3. 셀프 서비스 네트워크 서브넷을 라우터에 인터페이스로 추가합니다:

    $ openstack router add subnet router selfservice
    
  4. 게이트웨이를 라우터에 대한 프로바이더 네트워크로 설정합니다:

    $ openstack router set router --external-gateway provider
    

검증 과정

다음 단계를 계속하기 전에 과정을 검증하고 이슈가 있는 경우 고칠 것을 권장합니다. 다음 단계에서는 네트워크 및 서브넷 생성 예제에서 IP 주소 범위를 사용합니다.

  1. 컨트롤러 노드에서 admin credential을 소스로 사용하여 관리자 전용 CLI 명령어에 대한 액세스를 갖습니다:

    $ . admin-openrc
    
  2. 네트워크 네임스페이스를 나열합니다. qrouter 네임스페이스 하나와 두 개의 qdhcp 네임스페이스를 볼 수 있을 것입니다.

    $ ip netns
    
    qrouter-89dd2083-a160-4d75-ab3a-14239f01ea0b
    qdhcp-7c6f9b37-76b4-463e-98d8-27e5686ed083
    qdhcp-0e62efcd-8cee-46c7-b163-d8df05c3c5ad
    
  3. 프로바이더 네트워크에서 게이트웨이 IP 주소를 결정하기 위해 라우터에 대한 포트를 나열합니다:

    $ openstack port list --router router
    
    +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
    | ID                                   | Name | MAC Address       | Fixed IP Addresses                                                            | Status |
    +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
    | bff6605d-824c-41f9-b744-21d128fc86e1 |      | fa:16:3e:2f:34:9b | ip_address='172.16.1.1', subnet_id='3482f524-8bff-4871-80d4-5774c2730728'     | ACTIVE |
    | d6fe98db-ae01-42b0-a860-37b1661f5950 |      | fa:16:3e:e8:c1:41 | ip_address='203.0.113.102', subnet_id='5cc70da8-4ee7-4565-be53-b9c011fca011'  | ACTIVE |
    +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
    
  4. 물리 프로바이더 네트워크에서 컨트롤러 노드 또는 임의의 호스트에 해당 IP 주소로 ping을 수행합니다:

    $ ping -c 4 203.0.113.102
    
    PING 203.0.113.102 (203.0.113.102) 56(84) bytes of data.
    64 bytes from 203.0.113.102: icmp_req=1 ttl=64 time=0.619 ms
    64 bytes from 203.0.113.102: icmp_req=2 ttl=64 time=0.189 ms
    64 bytes from 203.0.113.102: icmp_req=3 ttl=64 time=0.165 ms
    64 bytes from 203.0.113.102: icmp_req=4 ttl=64 time=0.216 ms
    
    --- 203.0.113.102 ping statistics ---
    rtt min/avg/max/mdev = 0.165/0.297/0.619/0.187 ms
    

Launch an instance - Create virtual networks 로 돌아갑니다.