8.2. 오버클라우드 네트워크 사용자 정의


오버클라우드의 물리적 네트워크의 구성을 사용자 지정할 수 있습니다. 예를 들어 Jinja2 ansible 형식의 NIC 템플릿 파일을 사용하여 NIC(네트워크 인터페이스 컨트롤러)에 대한 구성 파일을 생성할 수 있습니다.

8.2.1. 사용자 정의 네트워크 인터페이스 템플릿 정의

사용자 지정 네트워크 인터페이스 템플릿 세트를 생성하여 오버클라우드 환경의 각 노드의 NIC 레이아웃을 정의할 수 있습니다. 오버클라우드 코어 템플릿 컬렉션에는 다양한 사용 사례에 대한 기본 NIC 레이아웃 세트가 포함되어 있습니다. .j2.yaml 확장자로 Jinja2 형식 파일을 사용하여 사용자 지정 NIC 템플릿을 생성할 수 있습니다. director는 배포 중에 Jinja2 파일을 YAML 형식으로 변환합니다.

그런 다음 overcloud-baremetal-deploy.yaml 노드 정의 파일에서 network_config 속성을 사용자 지정 NIC 템플릿으로 설정하여 특정 노드의 네트워크를 프로비저닝할 수 있습니다. 자세한 내용은 오버클라우드의 베어 메탈 노드 프로비저닝을 참조하십시오.

8.2.1.1. 사용자 정의 NIC 템플릿 생성

NIC 템플릿을 생성하여 오버클라우드 환경의 각 노드의 NIC 레이아웃을 사용자 정의합니다.

프로세스

  1. /usr/share/ansible/roles/tripleo_network_config/templates/ 에서 환경 파일 디렉터리에 필요한 샘플 네트워크 구성 템플릿을 복사합니다.

    $ cp /usr/share/ansible/roles/tripleo_network_config/templates/<sample_NIC_template> /home/stack/templates/<NIC_template>
    Copy to Clipboard Toggle word wrap
    • < sample_NIC_template >을 복사할 샘플 NIC 템플릿의 이름으로 바꿉니다(예: single_nic_vlans/single_nic_vlans.j2 ).
    • & lt;NIC_template >을 사용자 지정 NIC 템플릿 파일의 이름으로 바꿉니다(예: single_nic_vlans.j2 ).
  2. 오버클라우드 네트워크 환경의 요구 사항과 일치하도록 사용자 지정 NIC 템플릿의 네트워크 구성을 업데이트합니다. NIC 템플릿을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 네트워크 인터페이스 구성 옵션을 참조하십시오. NIC 템플릿 예제는 사용자 지정 네트워크 인터페이스 예제 를 참조하십시오.
  3. 기존 환경 파일을 생성하거나 업데이트하여 사용자 정의 NIC 구성 템플릿을 활성화합니다.

    parameter_defaults:
      ControllerNetworkConfigTemplate: '/home/stack/templates/single_nic_vlans.j2'
      CephStorageNetworkConfigTemplate: '/home/stack/templates/single_nic_vlans_storage.j2'
      ComputeNetworkConfigTemplate: '/home/stack/templates/single_nic_vlans.j2'
    Copy to Clipboard Toggle word wrap
  4. 오버클라우드에서 기본 내부 로드 밸런싱을 사용하는 경우 환경 파일에 다음 구성을 추가하여 Redis 및 OVNDB에 대해 예측 가능한 가상 IP를 할당합니다.

    parameter_defaults:
      RedisVirtualFixedIPs: [{'ip_address':'<vip_address>'}]
      OVNDBsVirtualFixedIPs: [{'ip_address':'<vip_address>'}]
    Copy to Clipboard Toggle word wrap
    • & lt;vip_address >를 할당 풀 범위 외부에서 IP 주소로 바꿉니다.

8.2.1.2. 네트워크 인터페이스 구성 옵션

다음 표를 사용하여 네트워크 인터페이스를 구성하는 데 사용 가능한 옵션을 파악합니다.

인터페이스

단일 네트워크 인터페이스를 정의합니다. 네트워크 인터페이스 이름은 실제 인터페이스 이름(eth0,eth 1,enp0s25) 또는 번호가 매겨진 인터페이스 집합(nic1,nic2,nic3)을 사용합니다. 역할 내의 호스트의 네트워크 인터페이스는 eth0eno2 와 같은 이름이 지정된 인터페이스 대신 nic1nic2 와 같은 번호가 지정된 인터페이스를 사용할 때 정확히 같을 필요는 없습니다. 예를 들어 한 호스트에는 인터페이스 em1em2 가 있을 수 있지만 다른 호스트에는 eno1eno2 가 있지만 두 호스트의 NIC를 nic1nic2 로 참조할 수 있습니다.

번호가 지정된 인터페이스의 순서는 이름이 지정된 네트워크 인터페이스 유형의 순서에 해당합니다.

  • eth0,eth1 등과 같은 ethX 인터페이스. 일반적으로 온보드 인터페이스입니다.
  • eno0,eno1 등과 같은 enoX 인터페이스. 일반적으로 온보드 인터페이스입니다.
  • enX 인터페이스는 enp3s0,enp3s1, ens3 및ens3 등과 같이 숫자별로 정렬됩니다. 일반적으로 추가 기능 인터페이스입니다.

번호가 매겨진 NIC 방식에는 라이브 인터페이스만 포함됩니다(예: 인터페이스에 스위치에 연결된 케이블이 있는 경우). 4개의 인터페이스가 있고 일부 호스트가 6개의 인터페이스가 있는 경우 nic1 을 사용하여 nic4 를 사용하고 각 호스트에 4개의 케이블만 연결합니다.

  - type: interface
    name: nic2
Copy to Clipboard Toggle word wrap
Expand
표 8.1. 인터페이스 옵션
옵션Default설명

name

 

인터페이스 이름입니다. 네트워크 인터페이스 이름은 실제 인터페이스 이름(eth0,eth 1,enp0s25) 또는 번호가 매겨진 인터페이스 집합(nic1,nic2,nic3)을 사용합니다.

use_dhcp

False

DHCP를 사용하여 IP 주소를 가져옵니다.

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소를 가져옵니다.

addresses

 

인터페이스에 할당된 IP 주소 목록입니다.

routes

 

인터페이스에 할당된 경로 목록입니다. 자세한 내용은 routes의 내용을 참조하십시오.

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

기본 설정

False

인터페이스를 기본 인터페이스로 정의합니다.

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수입니다.

dns_servers

없음

인터페이스에 사용할 DNS 서버 목록입니다.

ethtool_opts

 

특정 NIC에서 VXLAN을 사용할 때 처리량을 개선하려면 이 옵션을 "rx-flow-hash udp4 sdfn" 로 설정합니다.

vlan

VLAN을 정의합니다. parameters 섹션에서 전달된 VLAN ID 및 서브넷을 사용합니다.

예를 들면 다음과 같습니다.

  - type: vlan
    device: nic{{ loop.index + 1 }}
    mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
    vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }}
    addresses:
    - ip_netmask:
      {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
  routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
Copy to Clipboard Toggle word wrap
Expand
표 8.2. VLAN 옵션
옵션Default설명

vlan_id

 

VLAN ID입니다.

device

 

VLAN을 연결할 상위 장치입니다. VLAN이 OVS 브리지의 멤버가 아닌 경우 이 매개변수를 사용합니다. 예를 들어 이 매개 변수를 사용하여 VLAN을 본딩된 인터페이스 장치에 연결합니다.

use_dhcp

False

DHCP를 사용하여 IP 주소를 가져옵니다.

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소를 가져옵니다.

addresses

 

VLAN에 할당된 IP 주소 목록입니다.

routes

 

VLAN에 할당된 경로 목록입니다. 자세한 내용은 routes의 내용을 참조하십시오.

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

기본 설정

False

VLAN을 기본 인터페이스로 정의합니다.

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수입니다.

dns_servers

없음

VLAN에 사용할 DNS 서버 목록입니다.

ovs_bond

Open vSwitch에서 두 개 이상의 인터페이스를 결합하는 본딩을 정의합니다. 이는 중복성을 지원하고 대역폭을 늘리는 데 도움이 됩니다.

예를 들면 다음과 같습니다.

  members:
    - type: ovs_bond
      name: bond1
      mtu: {{ min_viable_mtu }}
      ovs_options: {{ bond_interface_ovs_options }}
      members:
      - type: interface
        name: nic2
        mtu: {{ min_viable_mtu }}
        primary: true
      - type: interface
        name: nic3
        mtu: {{ min_viable_mtu }}
Copy to Clipboard Toggle word wrap
Expand
표 8.3. ovs_bond 옵션
옵션Default설명

name

 

본딩의 이름입니다.

use_dhcp

False

DHCP를 사용하여 IP 주소를 가져옵니다.

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소를 가져옵니다.

addresses

 

본딩에 할당된 IP 주소 목록입니다.

routes

 

본딩에 할당된 경로 목록입니다. 자세한 내용은 routes의 내용을 참조하십시오.

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

기본 설정

False

인터페이스를 기본 인터페이스로 정의합니다.

멤버

 

본딩에서 사용할 인터페이스 오브젝트의 시퀀스입니다.

ovs_options

 

본딩을 생성할 때 OVS에 전달할 옵션 세트입니다.

ovs_extra

 

본딩의 네트워크 구성 파일에서 OVS_EXTRA 매개변수로 설정할 옵션 세트입니다.

조각화

True

DHCP 서비스에서 제공하는 기본 경로를 사용합니다. use_dhcp 또는 use_dhcpv6 을 활성화할 때만 적용됩니다.

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수입니다.

dns_servers

없음

본딩에 사용할 DNS 서버 목록입니다.

ovs_bridge

Open vSwitch에서 브릿지를 정의합니다. 이 브릿지는 여러 인터페이스,ovs_bondvlan 오브젝트를 연결합니다.

네트워크 인터페이스 유형 ovs_bridge 는 매개 변수 이름을 사용합니다.

참고

브리지가 여러 개인 경우 bridge_name 의 기본 이름을 수락하는 대신 별도의 브릿지 이름을 사용해야 합니다. 고유한 이름을 사용하지 않으면 수렴 단계에서 두 개의 네트워크 본딩이 동일한 브릿지에 배치됩니다.

외부 tripleo 네트워크에 대한 OVS 브리지를 정의하는 경우 배포 프레임워크가 이러한 값을 각각 외부 브리지 이름과 외부 인터페이스 이름으로 자동으로 대체할 때 bridge_nameinterface_name 값을 유지합니다.

예를 들면 다음과 같습니다.

  - type: ovs_bridge
    name: br-bond
    dns_servers: {{ ctlplane_dns_nameservers }}
    domain: {{ dns_search_domains }}
    members:
    - type: ovs_bond
      name: bond1
      mtu: {{ min_viable_mtu }}
      ovs_options: {{ bound_interface_ovs_options }}
      members:
      - type: interface
        name: nic2
        mtu: {{ min_viable_mtu }}
        primary: true
      - type: interface
        name: nic3
        mtu: {{ min_viable_mtu }}
Copy to Clipboard Toggle word wrap
참고

OVS 브리지는 Networking 서비스(neutron) 서버에 연결하여 구성 데이터를 가져옵니다. OpenStack 제어 트래픽(일반적으로 컨트롤 플레인 및 내부 API 네트워크)이 OVS 브리지에 배치되면 OVS를 업그레이드할 때마다 neutron 서버에 대한 연결이 손실되거나 관리자 또는 프로세스에서 OVS 브리지가 다시 시작됩니다. 이로 인해 약간의 다운타임이 발생합니다. 이러한 경우 다운타임이 허용되지 않는 경우, OVS 브리지가 아닌 별도의 인터페이스 또는 본딩에 Control 그룹 네트워크를 배치해야 합니다.

  • 두 번째 인터페이스의 프로비저닝 인터페이스 및 OVS 브리지의 VLAN에 내부 API 네트워크를 배치하면 최소 설정을 수행할 수 있습니다.
  • 본딩을 구현하려면 두 개 이상의 본딩( 네 개의 네트워크 인터페이스)이 필요합니다. Linux 본딩(Linux 브리지)에 제어 그룹을 배치합니다. 스위치에서 PXE 부팅을 위한 단일 인터페이스로 LACP 대체를 지원하지 않는 경우 이 솔루션에는 최소 5개의 NIC가 필요합니다.
Expand
표 8.4. ovs_bridge 옵션
옵션Default설명

name

 

브리지의 이름입니다.

use_dhcp

False

DHCP를 사용하여 IP 주소를 가져옵니다.

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소를 가져옵니다.

addresses

 

브리지에 할당된 IP 주소 목록입니다.

routes

 

브리지에 할당된 경로 목록입니다. 자세한 내용은 routes의 내용을 참조하십시오.

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

멤버

 

브릿지에서 사용할 일련의 인터페이스, VLAN 및 본딩 오브젝트입니다.

ovs_options

 

브리지를 만들 때 OVS에 전달할 옵션 세트입니다.

ovs_extra

 

브리지의 네트워크 구성 파일에서 OVS_EXTRA 매개 변수로 설정할 수 있는 옵션 세트입니다.

조각화

True

DHCP 서비스에서 제공하는 기본 경로를 사용합니다. use_dhcp 또는 use_dhcpv6 을 활성화할 때만 적용됩니다.

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수입니다.

dns_servers

없음

브리지에 사용할 DNS 서버 목록입니다.

linux_bond

두 개 이상의 인터페이스를 결합하는 Linux 본딩을 정의합니다. 이는 중복성을 지원하고 대역폭을 늘리는 데 도움이 됩니다. bonding_options 매개변수에 커널 기반 본딩 옵션을 포함해야 합니다.

예를 들면 다음과 같습니다.

- type: linux_bond
  name: bond1
  mtu: {{ min_viable_mtu }}
  bonding_options: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100 xmit_hash_policy=layer3+4"
  members:
    type: interface
    name: ens1f0
    mtu: {{ min_viable_mtu }}
    primary: true
  type: interface
    name: ens1f1
    mtu: {{ min_viable_mtu }}
Copy to Clipboard Toggle word wrap
Expand
표 8.5. linux_bond 옵션
옵션Default설명

name

 

본딩의 이름입니다.

use_dhcp

False

DHCP를 사용하여 IP 주소를 가져옵니다.

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소를 가져옵니다.

addresses

 

본딩에 할당된 IP 주소 목록입니다.

routes

 

본딩에 할당된 경로 목록입니다. routes을 참조하십시오.

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

기본 설정

False

인터페이스를 기본 인터페이스로 정의합니다.

멤버

 

본딩에서 사용할 인터페이스 오브젝트의 시퀀스입니다.

bonding_options

 

본딩을 만들 때 일련의 옵션.

조각화

True

DHCP 서비스에서 제공하는 기본 경로를 사용합니다. use_dhcp 또는 use_dhcpv6 을 활성화할 때만 적용됩니다.

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수입니다.

dns_servers

없음

본딩에 사용할 DNS 서버 목록입니다.

linux_bridge

여러 인터페이스,linux_bondvlan 오브젝트를 연결하는 Linux 브리지를 정의합니다. 외부 브리지는 매개변수에 두 개의 특수 값도 사용합니다.

  • bridge_name - 외부 브리지 이름으로 교체됩니다.
  • interface_name - 외부 인터페이스로 교체됩니다.

예를 들면 다음과 같습니다.

  - type: linux_bridge
      name: bridge_name
      mtu:
        get_attr: [MinViableMtu, value]
      use_dhcp: false
      dns_servers:
        get_param: DnsServers
      domain:
        get_param: DnsSearchDomains
      addresses:
      - ip_netmask:
          list_join:
          - /
          - - get_param: ControlPlaneIp
            - get_param: ControlPlaneSubnetCidr
      routes:
        list_concat_unique:
          - get_param: ControlPlaneStaticRoutes
Copy to Clipboard Toggle word wrap
Expand
표 8.6. linux_bridge options
옵션Default설명

name

 

브리지의 이름입니다.

use_dhcp

False

DHCP를 사용하여 IP 주소를 가져옵니다.

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소를 가져옵니다.

addresses

 

브리지에 할당된 IP 주소 목록입니다.

routes

 

브리지에 할당된 경로 목록입니다. 자세한 내용은 routes의 내용을 참조하십시오.

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

멤버

 

브릿지에서 사용할 일련의 인터페이스, VLAN 및 본딩 오브젝트입니다.

조각화

True

DHCP 서비스에서 제공하는 기본 경로를 사용합니다. use_dhcp 또는 use_dhcpv6 을 활성화할 때만 적용됩니다.

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수입니다.

dns_servers

없음

브리지에 사용할 DNS 서버 목록입니다.

routes

네트워크 인터페이스, VLAN, 브리지 또는 본딩에 적용할 경로 목록을 정의합니다.

예를 들면 다음과 같습니다.

  - type: linux_bridge
    name: bridge_name
    ...
    routes: {{ [ctlplane_host_routes] | flatten | unique }}
Copy to Clipboard Toggle word wrap
Expand
옵션Default설명

ip_netmask

없음

대상 네트워크의 IP 및 넷마스크.

default

False

이 경로를 기본 경로로 설정합니다. ip_netmask: 0.0.0.0/0 설정과 동일합니다.

next_hop

없음

대상 네트워크에 도달하는 데 사용되는 라우터의 IP 주소입니다.

8.2.1.3. 사용자 정의 네트워크 인터페이스의 예

다음 예제에서는 네트워크 인터페이스 템플릿을 사용자 지정하는 방법을 보여줍니다.

별도의 제어 그룹 및 OVS 브리지 예

다음 예제 컨트롤러 노드 NIC 템플릿은 OVS 브리지와는 별도로 제어 그룹을 구성합니다. 템플릿은 5개의 네트워크 인터페이스를 사용하고 태그된 여러 VLAN 장치를 번호가 지정된 인터페이스에 할당합니다. 템플릿은 nic4nic5 에 OVS 브리지를 생성합니다.

network_config:
- type: interface
  name: nic1
  mtu: {{ ctlplane_mtu }}
  use_dhcp: false
  addresses:
  - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }}
  routes: {{ ctlplane_host_routes }}
- type: linux_bond
  name: bond_api
  mtu: {{ min_viable_mtu_ctlplane }}
  use_dhcp: false
  bonding_options: {{ bond_interface_ovs_options }}
  dns_servers: {{ ctlplane_dns_nameservers }}
  domain: {{ dns_search_domains }}
  members:
  - type: interface
    name: nic2
    mtu: {{ min_viable_mtu_ctlplane }}
    primary: true
  - type: interface
    name: nic3
    mtu: {{ min_viable_mtu_ctlplane }}
{% for network in role_networks if not network.startswith('Tenant') %}
- type: vlan
  device: bond_api
  mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
  vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }}
  addresses:
  - ip_netmask: {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
  routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
{% endfor %}
- type: ovs_bridge
  name: {{ neutron_physical_bridge_name }}
  dns_servers: {{ ctlplane_dns_nameservers }}
  members:
  - type: linux_bond
    name: bond-data
    mtu: {{ min_viable_mtu_dataplane }}
    bonding_options: {{ bond_interface_ovs_options }}
    members:
    - type: interface
      name: nic4
      mtu: {{ min_viable_mtu_dataplane }}
      primary: true
    - type: interface
      name: nic5
      mtu: {{ min_viable_mtu_dataplane }}
{% for network in role_networks if network.startswith('Tenant') %}
  - type: vlan
    device: bond-data
    mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
    vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }}
    addresses:
    - ip_netmask: {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
    routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
Copy to Clipboard Toggle word wrap

여러 NIC 예

다음 예제에서는 두 번째 NIC를 사용하여 DHCP 주소가 있는 인프라 네트워크와 본딩의 다른 NIC에 연결합니다.

network_config:
  # Add a DHCP infrastructure network to nic2
  - type: interface
    name: nic2
    mtu: {{ tenant_mtu }}
    use_dhcp: true
    primary: true
  - type: vlan
    mtu: {{ tenant_mtu }}
    vlan_id: {{ tenant_vlan_id }}
    addresses:
    - ip_netmask: {{ tenant_ip }}/{{ tenant_cidr }}
    routes: {{ [tenant_host_routes] | flatten | unique }}
  - type: ovs_bridge
    name: br-bond
    mtu: {{ external_mtu }}
    dns_servers: {{ ctlplane_dns_nameservers }}
    use_dhcp: false
    members:
      - type: interface
        name: nic10
        mtu: {{ external_mtu }}
        use_dhcp: false
        primary: true
      - type: vlan
        mtu: {{ external_mtu }}
        vlan_id: {{ external_vlan_id }}
        addresses:
        - ip_netmask: {{ external_ip }}/{{ external_cidr }}
        routes: {{ [external_host_routes, [{'default': True, 'next_hop': external_gateway_ip}]] | flatten | unique }}
Copy to Clipboard Toggle word wrap

8.2.1.4. 사전 프로비저닝된 노드의 NIC 매핑 사용자 정의

사전 프로비저닝된 노드를 사용하는 경우 다음 방법 중 하나를 사용하여 특정 노드에 대해 os-net-config 매핑을 지정할 수 있습니다.

  • 환경 파일에서 NetConfigDataLookup heat 매개변수를 구성하고 --network-config 없이 openstack overcloud node provision 명령을 실행합니다.
  • 노드 정의 파일 overcloud-baremetal-deploy.yamlnet_config_data_lookup 속성을 구성하고 --network-config 를 사용하여 openstack overcloud node provision 명령을 실행합니다.
참고

사전 프로비저닝된 노드를 사용하지 않는 경우 노드 정의 파일에서 NIC 매핑을 구성해야 합니다. net_config_data_lookup 속성 구성에 대한 자세한 내용은 베어 메탈 노드 프로비저닝 특성을 참조하십시오.

각 노드의 물리적 인터페이스에 별칭을 할당하여 nic1 또는 nic2 와 같은 특정 별칭에 매핑되는 물리적 NIC를 미리 확인하고 MAC 주소를 지정된 별칭에 매핑할 수 있습니다. MAC 주소 또는 DMI 키워드를 사용하여 특정 노드를 매핑하거나 DMI 키워드를 사용하여 노드 그룹을 매핑할 수 있습니다. 다음 예제에서는 물리적 인터페이스에 대한 별칭을 사용하여 세 개의 노드와 두 개의 노드 그룹을 구성합니다. 결과 구성은 os-net-config 에 의해 적용됩니다. 각 노드에서 /etc/os-net-config/mapping.yaml 파일의 interface_mapping 섹션에서 적용된 구성을 확인할 수 있습니다.

예 1: os-net-config-mappings.yaml에서 NetConfigDataLookup 매개변수 구성

NetConfigDataLookup:
  node1: 
1

    nic1: "00:c8:7c:e6:f0:2e"
  node2:
    nic1: "00:18:7d:99:0c:b6"
  node3: 
2

    dmiString: "system-uuid" 
3

    id: 'A8C85861-1B16-4803-8689-AFC62984F8F6'
    nic1: em3
  # Dell PowerEdge
  nodegroup1: 
4

    dmiString: "system-product-name"
    id: "PowerEdge R630"
    nic1: em3
    nic2: em1
    nic3: em2
  # Cisco UCS B200-M4"
  nodegroup2:
    dmiString: "system-product-name"
    id: "UCSB-B200-M4"
    nic1: enp7s0
    nic2: enp6s0
Copy to Clipboard Toggle word wrap

1
node1 을 지정된 MAC 주소에 매핑하고 nic1 을 이 노드의 MAC 주소 별칭으로 할당합니다.
2
시스템 UUID "A8C85861-1B16-4803-8689-AFC62984F8F6"를 사용하여 node3 을 노드에 매핑하고 이 노드에서 em3 인터페이스의 별칭으로 nic1 을 할당합니다.
3
dmiString 매개변수는 유효한 string 키워드로 설정해야 합니다. 유효한 문자열 키워드 목록은 DMIDECODE(8) 도움말 페이지를 참조하십시오.
4
nodegroup1 의 모든 노드를 "PowerEdge R630"이라는 제품 이름으로 노드에 매핑하고 nic1,nic2nic3 을 이러한 노드에서 이름이 지정된 인터페이스의 별칭으로 할당합니다.
참고

일반적으로 os-net-config 는 이미 UP 상태로 연결된 인터페이스만 등록합니다. 그러나 사용자 지정 매핑 파일과 함께 인터페이스를 하드 코딩하는 경우 DOWN 상태에 있는 경우에도 인터페이스가 등록됩니다.

예 2: overcloud-baremetal-deploy.yaml 에서 net_config_data_lookup 속성 구성 - 특정 노드

- name: Controller
  count: 3
  defaults:
    network_config:
      net_config_data_lookup:
        node1:
          nic1: "00:c8:7c:e6:f0:2e"
        node2:
          nic1: "00:18:7d:99:0c:b6"
        node3:
          dmiString: "system-uuid"
          id: 'A8C85861-1B16-4803-8689-AFC62984F8F6'
          nic1: em3
        # Dell PowerEdge
        nodegroup1:
          dmiString: "system-product-name"
          id: "PowerEdge R630"
          nic1: em3
          nic2: em1
          nic3: em2
        # Cisco UCS B200-M4"
        nodegroup2:
          dmiString: "system-product-name"
          id: "UCSB-B200-M4"
          nic1: enp7s0
          nic2: enp6s0
Copy to Clipboard Toggle word wrap

예 3: overcloud-baremetal-deploy.yaml 에서 net_config_data_lookup 속성 구성 - 역할의 모든 노드

- name: Controller
  count: 3
  defaults:
    network_config:
      template: templates/net_config_bridge.j2
      default_route_network:
      - external
  instances:
  - hostname: overcloud-controller-0
    network_config:
      net_config_data_lookup:
        nic1: 'XX:XX:XX:XX:XX:XX'
        nic2: 'YY:YY:YY:YY:YY:YY'
        nic3: 'ens1f0'
Copy to Clipboard Toggle word wrap

8.2.2. 구성 가능 네트워크

다른 네트워크에서 특정 네트워크 트래픽을 호스팅하려는 경우 사용자 지정 구성 가능 네트워크를 생성할 수 있습니다. director는 네트워크 분리가 활성화된 기본 네트워크 토폴로지를 제공합니다. 이 구성은 /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation.yaml 에서 찾을 수 있습니다.

오버클라우드는 기본적으로 다음 사전 정의된 네트워크 세그먼트 세트를 사용합니다.

  • 내부 API
  • 스토리지
  • 스토리지 관리
  • 테넌트
  • 외부

구성 가능 네트워크를 사용하여 다양한 서비스의 네트워크를 추가할 수 있습니다. 예를 들어 NFS 트래픽 전용 네트워크가 있는 경우 여러 역할에 제공할 수 있습니다.

director는 배포 및 업데이트 단계에서 사용자 지정 네트워크 생성을 지원합니다. 베어 메탈 노드, 시스템 관리 또는 다양한 역할에 대해 별도의 네트워크를 생성하는 데 이러한 추가 네트워크를 사용할 수 있습니다. 또한 트래픽이 네트워크 간에 라우팅되는 분할 배포를 위해 여러 네트워크 세트를 생성할 수도 있습니다.

8.2.2.1. 구성 가능 네트워크 추가

구성 가능 네트워크를 사용하여 다양한 서비스의 네트워크를 추가합니다. 예를 들어 스토리지 백업 트래픽 전용 네트워크가 있는 경우 네트워크를 여러 역할에 제공할 수 있습니다.

프로세스

  1. 사용 가능한 샘플 네트워크 구성 파일을 나열합니다.

    $ ll /usr/share/openstack-tripleo-heat-templates/network-data-samples/
    -rw-r--r--. 1 root root 1554 May 11 23:04 default-network-isolation-ipv6.yaml
    -rw-r--r--. 1 root root 1181 May 11 23:04 default-network-isolation.yaml
    -rw-r--r--. 1 root root 1126 May 11 23:04 ganesha-ipv6.yaml
    -rw-r--r--. 1 root root 1100 May 11 23:04 ganesha.yaml
    -rw-r--r--. 1 root root 3556 May 11 23:04 legacy-routed-networks-ipv6.yaml
    -rw-r--r--. 1 root root 2929 May 11 23:04 legacy-routed-networks.yaml
    -rw-r--r--. 1 root root  383 May 11 23:04 management-ipv6.yaml
    -rw-r--r--. 1 root root  290 May 11 23:04 management.yaml
    -rw-r--r--. 1 root root  136 May 11 23:04 no-networks.yaml
    -rw-r--r--. 1 root root 2725 May 11 23:04 routed-networks-ipv6.yaml
    -rw-r--r--. 1 root root 2033 May 11 23:04 routed-networks.yaml
    -rw-r--r--. 1 root root  943 May 11 23:04 vip-data-default-network-isolation.yaml
    -rw-r--r--. 1 root root  848 May 11 23:04 vip-data-fixed-ip.yaml
    -rw-r--r--. 1 root root 1050 May 11 23:04 vip-data-routed-networks.yaml
    Copy to Clipboard Toggle word wrap
  2. /usr/share/openstack-tripleo-heat-templates/network-data-samples 에서 환경 파일 디렉터리에 필요한 샘플 네트워크 구성 파일을 복사합니다.

    $ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation.yaml /home/stack/templates/network_data.yaml
    Copy to Clipboard Toggle word wrap
  3. network_data.yaml 구성 파일을 편집하고 새 네트워크에 대한 섹션을 추가합니다.

    - name: StorageBackup
      vip: false
      name_lower: storage_backup
      subnets:
        storage_backup_subnet:
          ip_subnet: 172.16.6.0/24
          allocation_pools: [{'start': '172.16.6.4', 'end': '172.16.6.250'}]
          gateway_ip: 172.16.6.1
    Copy to Clipboard Toggle word wrap

    환경에 대한 기타 네트워크 속성을 구성합니다. 네트워크 특성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 네트워크 정의 파일 구성 옵션을 참조하십시오.

  4. Red Hat Ceph Storage를 배포하고 NFS를 사용하는 경우 격리된 스토리지NFS 네트워크를 포함해야 합니다. 다음 예제가 이러한 파일에 있습니다.

    • /usr/share/openstack-tripleo-heat-templates/network-data-samples/ganesha.yaml
    • /usr/share/openstack-tripleo-heat-templates/network-data-samples/ganesha-ipv6.yaml

      VLAN ID 및 서브넷 범위를 포함하여 이러한 네트워크 설정을 사용자 지정합니다. IPv4 또는 IPv6가 필요하지 않은 경우 해당 서브넷을 생략할 수 있습니다.

      예제:

      - name: StorageNFS
        enabled: true
        vip: true
        name_lower: storage_nfs
        subnets:
          storage_nfs_subnet:
            vlan: 70
            ip_subnet: 172.17.0.0/20
            allocation_pools: [{'start': '172.17.0.4', 'end': '172.17.0.250'}]
          storage_nfs_ipv6_subnet:
            ipv6_subnet: fd00:fd00:fd00:7000::/64
            ipv6_allocation_pools:
              - start: fd00:fd00:fd00:7000::4
              - end: fd00:fd00:fd00:7000::fffe
      Copy to Clipboard Toggle word wrap
    • 이 네트워크는 Compute 서비스(nova) VM과 같은 소비자를 위해 공유되는 오버클라우드 배포 및 Networking 서비스(neutron) 공급자 네트워크에서 공유합니다.
    • 오버클라우드 Networking service StorageNFS 공급자 네트워크의 서브넷 정의에 대해 할당 풀에 사용하기 위해 이 예제에 지정된 할당 풀 외부에 지정할 수 있는 범위를 그대로 둡니다.
  5. 가상 IP가 포함된 추가 구성 가능 네트워크를 추가하고 일부 API 서비스를 이 네트워크에 매핑하려면 CloudName{network.name} 정의를 사용하여 API 끝점의 DNS 이름을 설정합니다.

    CloudName{{network.name}}
    Copy to Clipboard Toggle word wrap

    예제:

    parameter_defaults:
      ...
      CloudNameOcProvisioning: baremetal-vip.example.com
    Copy to Clipboard Toggle word wrap
  6. /usr/share/openstack-tripleo-heat-templates/network-data-samples 에서 환경 파일 디렉터리에 필요한 샘플 네트워크 VIP 정의 템플릿을 복사합니다. 다음 예제에서는 vip-data-default-network-isolation.yamlvip_data.yaml 이라는 로컬 환경 파일에 복사합니다.

    $ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/vip-data-default-network-isolation.yaml  /home/stack/templates/vip_data.yaml
    Copy to Clipboard Toggle word wrap
  7. vip_data.yaml 구성 파일을 편집합니다. 가상 IP 데이터는 가상 IP 주소 정의 목록으로, 각각 IP 주소가 할당된 네트워크의 이름을 포함합니다.

    - network: storage_mgmt
      dns_name: overcloud
    - network: internal_api
      dns_name: overcloud
    - network: storage
      dns_name: overcloud
    - network: external
      dns_name: overcloud
      ip_address: <vip_address>
    - network: ctlplane
      dns_name: overcloud
    - network: storage_nfs
      dns_name: overcloud
      ip_address: <vip_address>
    Copy to Clipboard Toggle word wrap
    • & lt;vip_address& gt;를 필수 가상 IP 주소로 바꿉니다.

    VIP 정의 파일에서 네트워크 VIP 속성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 Network VIP 특성을 참조하십시오.

  8. 샘플 네트워크 구성 템플릿을 복사합니다. Jinja2 템플릿은 NIC 구성 템플릿을 정의하는 데 사용됩니다. 예제 중 하나가 요구 사항과 일치하는 경우 /usr/share/ansible/roles/tripleo_network_config/templates/ 디렉터리에 제공된 예제를 찾습니다. 예제가 요구 사항과 일치하지 않으면 샘플 구성 파일을 복사하여 필요에 따라 수정합니다.

    $ cp /usr/share/ansible/roles/tripleo_network_config/templates/single_nic_vlans/single_nic_vlans.j2 /home/stack/templates/
    Copy to Clipboard Toggle word wrap
  9. single_nic_vlans.j2 구성 파일을 편집합니다.

    ---
    {% set mtu_list = [ctlplane_mtu] %}
    {% for network in role_networks %}
    {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }}
    {%- endfor %}
    {% set min_viable_mtu = mtu_list | max %}
    network_config:
    - type: ovs_bridge
      name: {{ neutron_physical_bridge_name }}
      mtu: {{ min_viable_mtu }}
      use_dhcp: false
      dns_servers: {{ ctlplane_dns_nameservers }}
      domain: {{ dns_search_domains }}
      addresses:
      - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }}
      routes: {{ ctlplane_host_routes }}
      members:
      - type: interface
        name: nic1
        mtu: {{ min_viable_mtu }}
        # force the MAC address of the bridge to this interface
        primary: true
    {% for network in role_networks %}
      - type: vlan
        mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
        vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }}
        addresses:
        - ip_netmask:
            {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
        routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
    {% endfor %}
    Copy to Clipboard Toggle word wrap
  10. network_config 템플릿을 overcloud-baremetal-deploy.yaml 구성 파일에 설정합니다.

    - name: CephStorage
      count: 3
      defaults:
        networks:
        - network: storage
        - network: storage_mgmt
        - network: storage_backup
        network_config:
          template: /home/stack/templates/single_nic_vlans.j2
    Copy to Clipboard Toggle word wrap

    Shared File Systems 서비스(manila)와 CephFS-NFS 백엔드를 사용하기 위한 StorageNFS 네트워크를 프로비저닝하는 경우 StorageNFS 네트워크와 VIP가 컨트롤러 노드에 연결되어 있기 때문에 network_config 섹션 대신 Controller 또는 ControllerStorageNfs 섹션을 편집합니다.

    - name: ControllerStorageNfs
      count: 3
      hostname_format: controller-%index%
      instances:
      - hostname: controller-0
        name: controller-0
      - hostname: controller-1
        name: controller-1
      - hostname: controller-2
        name: controller-2
      defaults:
        profile: control
        network_config:
          template: /home/stack/templates/single_nic_vlans.j2
        networks:
        - network: ctlplane
          vif: true
        - network: external
        - network: internal_api
        - network: storage
        - network: storage_mgmt
        - network: tenant
        - network: storage_nfs
    Copy to Clipboard Toggle word wrap
  11. 오버클라우드 네트워크를 프로비저닝합니다. 이 작업은 오버클라우드를 배포할 때 환경 파일을 사용할 출력 파일을 생성합니다.

    (undercloud)$ openstack overcloud network provision \
    --output <deployment_file> /home/stack/templates/<networks_definition_file>.yaml
    Copy to Clipboard Toggle word wrap
    • < networks_definition_file >을 네트워크 정의 파일의 이름(예: network_data.yaml 또는 StorageNFS 네트워크 파일 이름(예: network_data_ganesha.yaml )으로 바꿉니다.
    • < deployment_file >을 배포 명령에 포함할 heat 환경 파일의 이름으로 교체합니다(예: /home/stack/templates/overcloud-networks-deployed.yaml ).
  12. 네트워크 VIP를 프로비저닝하고 vip-deployed-environment.yaml 파일을 생성합니다. 오버클라우드를 배포할 때 이 파일을 사용합니다.

    (overcloud)$ openstack overcloud network vip provision  --stack <stack> --output <deployment_file> /home/stack/templates/vip_data.yaml
    Copy to Clipboard Toggle word wrap
    • & lt;stack >을 네트워크 VIP가 프로비저닝되는 스택 이름으로 바꿉니다. 지정하지 않으면 기본값은 overcloud입니다.
    • < deployment_file >을 배포 명령에 포함할 heat 환경 파일의 이름으로 교체합니다(예: /home/stack/templates/overcloud-vip-deployed.yaml ).

8.2.2.2. 역할에 구성 가능 네트워크 포함

사용자 환경에 정의된 오버클라우드 역할에 구성 가능 네트워크를 할당할 수 있습니다. 예를 들어 Ceph Storage 노드가 있는 사용자 지정 StorageBackup 네트워크를 포함하거나 Shared File Systems 서비스(manila)에서 CephFS- NFS를 사용하기 위한 사용자 지정 스토리지 NFS 네트워크를 포함할 수 있습니다. director에 기본적으로 포함된 ControllerStorageNfs 역할을 사용한 경우 StorageNFS 네트워크가 이미 추가됩니다.

절차

  1. 사용자 지정 roles_data.yaml 파일이 없는 경우 기본값을 홈 디렉터리에 복사합니다.

    $ cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml /home/stack/templates/roles_data.yaml
    Copy to Clipboard Toggle word wrap
  2. 사용자 지정 roles_data.yaml 파일을 편집합니다.
  3. 네트워크를 추가할 역할의 네트워크 목록에 네트워크 이름을 포함합니다.

    • 이 예제에서는 StorageBackup 네트워크를 Ceph Storage 역할에 추가합니다.

      - name: CephStorage
        description: |
          Ceph OSD Storage node role
        networks:
          Storage
            subnet: storage_subnet
          StorageMgmt
            subnet: storage_mgmt_subnet
          StorageBackup
            subnet: storage_backup_subnet
      Copy to Clipboard Toggle word wrap
    • 이 예에서는 StorageNFS 네트워크를 컨트롤러 노드에 추가합니다.

      - name: Controller
        description: |
          Controller role that has all the controller services loaded, handles
          Database, Messaging and Network functions, and additionally runs a ganesha
          service as a CephFS to NFS gateway.  The gateway serves NFS exports via a
          VIP on a new isolated StorageNFS network.
        # ganesha service should always be deployed in HA configuration.
        CountDefault: 3
        tags:
          - primary
          - controller
        networks:
          External:
            subnet: external_subnet
          InternalApi:
            subnet: internal_api_subnet
          Storage:
            subnet: storage_subnet
          StorageMgmt:
            subnet: storage_mgmt_subnet
          Tenant:
            subnet: tenant_subnet
          StorageNFS:
            subnet: storage_nfs_subnet
      Copy to Clipboard Toggle word wrap
  4. 사용자 지정 네트워크를 각 역할에 추가한 후 파일을 저장합니다.

openstack overcloud deploy 명령을 실행할 때 -r 옵션을 사용하여 사용자 지정 roles_data.yaml 파일을 포함합니다. r 옵션이 없으면 배포 명령은 기본 역할 집합을 해당 할당된 네트워크와 함께 사용합니다.

8.2.2.3. 구성 가능 네트워크에 OpenStack 서비스 할당

각 OpenStack 서비스는 리소스 레지스트리의 기본 네트워크 유형에 할당됩니다. 이러한 서비스는 네트워크 유형의 할당된 네트워크 내의 IP 주소에 바인딩됩니다. OpenStack 서비스는 이러한 네트워크로 나뉘어져 있지만 실제 물리적 네트워크의 수는 네트워크 환경 파일에 정의된 대로 다를 수 있습니다. 환경 파일에서 새 네트워크 맵을 정의하여 OpenStack 서비스를 다른 네트워크 유형에 다시 할당할 수 있습니다(예: /home/stack/templates/service-reassignments.yaml ). ServiceNetMap 매개변수는 각 서비스에 사용할 네트워크 유형을 결정합니다.

예를 들어 강조 표시된 섹션을 수정하여 스토리지 관리 네트워크 서비스를 스토리지 백업 네트워크에 다시 할당할 수 있습니다.

parameter_defaults:
  ServiceNetMap:
    SwiftStorageNetwork: storage_backup
    CephClusterNetwork: storage_backup
Copy to Clipboard Toggle word wrap

이러한 매개 변수를 storage_backup 으로 변경하면 이러한 서비스가 스토리지 관리 네트워크 대신 스토리지 백업 네트워크에 배치됩니다. 즉, 스토리지 관리 네트워크가 아닌 스토리지 백업 네트워크에 대해서만 parameter_defaults 세트를 정의해야 합니다.

director는 사용자 지정 ServiceNetMap 매개변수 정의를 ServiceNetMapDefaults 에서 가져오는 사전 정의된 기본값 목록에 병합하고 기본값을 재정의합니다. director는 사용자 지정을 포함하여 다양한 서비스에 대한 네트워크 할당을 구성하는 데 사용되는 ServiceNetMap 에 전체 목록을 반환합니다. 예를 들어 GaneshaNetwork 는 CephFS-NFS의 NFS 게이트웨이의 기본 서비스 네트워크입니다. 이 네트워크의 기본값은 storage_nfs 로 대체되는 동안 외부 또는 ctlplane 네트워크로 대체됩니다. 기본 분리된 StorageNFS 네트워크 대신 다른 네트워크를 사용하는 경우 ServiceNetMap 매개변수 정의를 사용하여 기본 네트워크를 업데이트해야 합니다.

예제:

parameter_defaults:
  ServiceNetMap:
    GaneshaNetwork: <manila_nfs_network>
Copy to Clipboard Toggle word wrap
  • & lt;manila_nfs_network& gt;를 사용자 지정 네트워크의 이름으로 바꿉니다.

서비스 매핑은 Pacemaker를 사용하는 노드의 network_data.yaml 파일에서 vip: true 를 사용하는 네트워크에 적용됩니다. 오버클라우드 로드 밸런서는 VIP에서 특정 서비스 엔드포인트로 트래픽을 리디렉션합니다.

참고

/usr/share/openstack-tripleo-heat-templates/network/service_net_map.j2.yaml 파일에서 ServiceNetMapDefaults 매개변수에서 전체 기본 서비스 목록을 찾을 수 있습니다.

8.2.2.4. 사용자 정의 구성 가능 네트워크 활성화

기본 NIC 템플릿 중 하나를 사용하여 사용자 지정 구성 가능 네트워크를 활성화합니다. 이 예제에서는 VLAN 템플릿과 함께 Single NIC를 사용합니다(custom_single_nic_vlans).

프로세스

  1. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  2. 오버클라우드 네트워크를 프로비저닝합니다.

    $ openstack overcloud network provision \
      --output overcloud-networks-deployed.yaml \
      custom_network_data.yaml
    Copy to Clipboard Toggle word wrap
  3. 네트워크 VIP를 프로비저닝합니다.

    $ openstack overcloud network vip provision \
        --stack overcloud \
        --output overcloud-networks-vips-deployed.yaml \
         custom_vip_data.yaml
    Copy to Clipboard Toggle word wrap
  4. 오버클라우드 노드를 프로비저닝합니다.

    $ openstack overcloud node provision \
        --stack overcloud \
        --output overcloud-baremetal-deployed.yaml \
        overcloud-baremetal-deploy.yaml
    Copy to Clipboard Toggle word wrap
  5. 필요한 순서로 구성 파일과 템플릿을 지정하여 openstack overcloud deploy 명령을 구성합니다. 예를 들면 다음과 같습니다.

    $ openstack overcloud deploy --templates \
      --networks-file network_data_v2.yaml \
      -e overcloud-networks-deployed.yaml \
      -e overcloud-networks-vips-deployed.yaml \
      -e overcloud-baremetal-deployed.yaml
      -e custom-net-single-nic-with-vlans.yaml
    Copy to Clipboard Toggle word wrap

이 예제 명령은 오버클라우드의 노드에 추가 사용자 지정 네트워크를 포함하여 구성 가능 네트워크를 배포합니다.

8.2.2.5. 기본 네트워크 이름 변경

network_data.yaml 파일을 사용하여 기본 네트워크의 사용자가 볼 수 있는 이름을 수정할 수 있습니다.

  • InternalApi
  • 외부
  • 스토리지
  • StorageMgmt
  • 테넌트

이러한 이름을 변경하려면 name 필드를 수정하지 마십시오. 대신 name_lower 필드를 네트워크의 새 이름으로 변경하고 ServiceNetMap을 새 이름으로 업데이트합니다.

절차

  1. network_data.yaml 파일에서 이름을 변경하려는 각 네트워크의 name_lower 매개변수에 새 이름을 입력합니다.

    - name: InternalApi
      name_lower: MyCustomInternalApi
    Copy to Clipboard Toggle word wrap
  2. service_net_map_replace 매개변수에 name_lower 매개변수의 기본값을 포함합니다.

    - name: InternalApi
      name_lower: MyCustomInternalApi
      service_net_map_replace: internal_api
    Copy to Clipboard Toggle word wrap

8.2.3. 추가 오버클라우드 네트워크 설정

이 장에서는 8.2.1절. “사용자 정의 네트워크 인터페이스 템플릿 정의” 에 설명된 개념과 절차를 설명하고 오버클라우드 네트워크의 일부를 구성하는 데 도움이 되는 몇 가지 추가 정보를 제공합니다.

8.2.3.1. 경로 및 기본 경로 구성

두 가지 방법 중 하나로 호스트의 기본 경로를 설정할 수 있습니다. 인터페이스에서 DHCP를 사용하고 DHCP 서버가 게이트웨이 주소를 제공하는 경우 시스템은 해당 게이트웨이의 기본 경로를 사용합니다. 그렇지 않으면 고정 IP를 사용하여 인터페이스에 기본 경로를 설정할 수 있습니다.

Linux 커널은 여러 기본 게이트웨이를 지원하지만 가장 낮은 메트릭이 있는 게이트웨이만 사용합니다. DHCP 인터페이스가 여러 개인 경우 예기치 않은 기본 게이트웨이가 발생할 수 있습니다. 이 경우 기본 경로를 사용하는 인터페이스 이외의 인터페이스에 defroute: false 를 설정하는 것이 좋습니다.

예를 들어 DHCP 인터페이스(nic3)를 기본 경로가 될 수 있습니다. 다음 YAML 스니펫을 사용하여 다른 DHCP 인터페이스(nic2)에서 기본 경로를 비활성화합니다.

# No default route on this DHCP interface
- type: interface
  name: nic2
  use_dhcp: true
  defroute: false
# Instead use this DHCP interface as the default route
- type: interface
  name: nic3
  use_dhcp: true
Copy to Clipboard Toggle word wrap
참고

defroute 매개변수는 DHCP를 통해 얻은 경로에만 적용됩니다.

정적 IP를 사용하여 인터페이스에 정적 경로를 설정하려면 서브넷의 경로를 지정합니다. 예를 들어 내부 API 네트워크의 172.17.0.1에서 게이트웨이를 통해 10.1.2.0/24 서브넷의 경로를 설정할 수 있습니다.

    - type: vlan
      device: bond1
      vlan_id: 9
      addresses:
      - ip_netmask: 172.17.0.100/16
      routes:
      - ip_netmask: 10.1.2.0/24
        next_hop: 172.17.0.1
Copy to Clipboard Toggle word wrap

8.2.3.2. 정책 기반 라우팅 구성

컨트롤러 노드의 다른 네트워크에서 무제한 액세스를 구성하려면 정책 기반 라우팅을 구성합니다. 정책 기반 라우팅에서는 여러 인터페이스가 있는 호스트에서 소스 주소에 따라 특정 인터페이스를 통해 트래픽을 보낼 수 있는 라우팅 테이블을 사용합니다. 대상이 동일한 경우에도 다른 소스에서 다른 네트워크로 들어오는 패킷을 라우팅할 수 있습니다.

예를 들어 기본 경로가 외부 네트워크에 있는 경우에도 패킷의 소스 주소에 따라 내부 API 네트워크로 트래픽을 보내도록 경로를 구성할 수 있습니다. 각 인터페이스에 대한 특정 경로 규칙을 정의할 수도 있습니다.

Red Hat OpenStack Platform은 os-net-config 툴을 사용하여 오버클라우드 노드의 네트워크 속성을 구성합니다. os-net-config 툴은 컨트롤러 노드에서 다음 네트워크 라우팅을 관리합니다.

  • /etc/iproute2/rt_tables 파일의 라우팅 테이블
  • /etc/sysconfig/network-scripts/rule-{ifname} 파일의 IPv4 규칙
  • /etc/sysconfig/network-scripts/rule6-{ifname} 파일의 IPv6 규칙
  • /etc/sysconfig/network-scripts/route-{ifname}의 라우팅 테이블 특정 경로

사전 요구 사항

프로세스

  1. /home/stack/templates/custom-nics 디렉터리에서 사용자 정의 NIC 템플릿에 인터페이스 항목을 생성하고, 인터페이스 경로를 정의하며, 배포와 관련된 규칙을 정의합니다.

      network_config:
      - type: interface
        name: em1
        use_dhcp: false
        addresses:
          - ip_netmask: {{ external_ip }}/{{ external_cidr}}
        routes:
          - default: true
            next_hop: {{ external_gateway_ip }}
          - ip_netmask: {{ external_ip }}/{{ external_cidr}}
            next_hop: {{ external_gateway_ip }}
            table: 2
            route_options: metric 100
        rules:
          - rule: "iif em1 table 200"
            comment: "Route incoming traffic to em1 with table 200"
          - rule: "from 192.0.2.0/24 table 200"
            comment: "Route all traffic from 192.0.2.0/24 with table 200"
          - rule: "add blackhole from 172.19.40.0/24 table 200"
          - rule: "add unreachable iif em1 from 192.168.1.0/24"
    Copy to Clipboard Toggle word wrap
  2. 배포와 관련된 기타 환경 파일과 함께 배포 명령에 사용자 지정 NIC 구성 및 네트워크 환경 파일을 포함합니다.

    $ openstack overcloud deploy --templates \
    -e /home/stack/templates/<custom-nic-template>
    -e <OTHER_ENVIRONMENT_FILES>
    Copy to Clipboard Toggle word wrap

검증

  • 컨트롤러 노드에서 다음 명령을 입력하여 라우팅 구성이 올바르게 작동하는지 확인합니다.

    $ cat /etc/iproute2/rt_tables
    $ ip route
    $ ip rule
    Copy to Clipboard Toggle word wrap

8.2.3.3. 점보 프레임 구성

최대 전송 단위(MTU) 설정은 단일 이더넷 프레임으로 전송되는 최대 데이터 양을 결정합니다. 각 프레임이 헤더 형태로 데이터를 추가하므로 더 큰 값을 사용하면 오버헤드가 줄어듭니다. 기본값은 1500이며 더 높은 값을 사용하려면 점보 프레임을 지원하기 위해 스위치 포트를 구성해야 합니다. 대부분의 스위치는 9000개 이상의 MTU를 지원하지만 많은 스위치는 기본적으로 1500에 대해 구성됩니다.

VLAN의 MTU는 실제 인터페이스의 MTU를 초과할 수 없습니다. 본딩 또는 인터페이스에 MTU 값을 포함해야 합니다.

스토리지, 스토리지 관리, 내부 API 및 테넌트 네트워크는 모두 점보 프레임의 이점을 누릴 수 있습니다.

jinja2 템플릿 또는 network_data.yaml 파일에서 mtu 값을 변경할 수 있습니다. network_data.yaml 파일에서 값을 설정하면 배포 중에 렌더링됩니다.

주의

라우터는 일반적으로 계층 3 경계 간에 점보 프레임을 전달할 수 없습니다. 연결 문제를 방지하려면 프로비저닝 인터페이스, 외부 인터페이스 및 유동 IP 인터페이스의 기본 MTU를 변경하지 마십시오.

---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in role_networks %}
{{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
- type: ovs_bridge
  name: bridge_name
  mtu: {{ min_viable_mtu }}
  use_dhcp: false
  dns_servers: {{ ctlplane_dns_nameservers }}
  domain: {{ dns_search_domains }}
  addresses:
  - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }}
  routes: {{ [ctlplane_host_routes] | flatten | unique }}
  members:
  - type: interface
    name: nic1
    mtu: {{ min_viable_mtu }}
    primary: true
  - type: vlan
    mtu: 9000  
1

    vlan_id: {{ storage_vlan_id }}
    addresses:
    - ip_netmask: {{ storage_ip }}/{{ storage_cidr }}
    routes: {{ [storage_host_routes] | flatten | unique }}
  - type: vlan
    mtu: {{ storage_mgmt_mtu }} 
2

    vlan_id: {{ storage_mgmt_vlan_id }}
    addresses:
    - ip_netmask: {{ storage_mgmt_ip }}/{{ storage_mgmt_cidr }}
    routes: {{ [storage_mgmt_host_routes] | flatten | unique }}
  - type: vlan
    mtu: {{ internal_api_mtu }}
    vlan_id: {{ internal_api_vlan_id }}
    addresses:
    - ip_netmask: {{ internal_api_ip }}/{{ internal_api_cidr }}
    routes: {{ [internal_api_host_routes] | flatten | unique }}
  - type: vlan
    mtu: {{ tenant_mtu }}
    vlan_id: {{ tenant_vlan_id }}
    addresses:
    - ip_netmask: {{ tenant_ip }}/{{ tenant_cidr }}
    routes: {{ [tenant_host_routes] | flatten | unique }}
  - type: vlan
    mtu: {{ external_mtu }}
    vlan_id: {{ external_vlan_id }}
    addresses:
    - ip_netmask: {{ external_ip }}/{{ external_cidr }}
    routes: {{ [external_host_routes, [{'default': True, 'next_hop': external_gateway_ip}]] | flatten | unique }}
Copy to Clipboard Toggle word wrap
1
jinja2 템플릿에서 직접 업데이트된 MTU 값입니다.
2
MTU 값은 배포 중에 network_data.yaml 파일에서 가져옵니다.

8.2.3.4. 트렁크된 인터페이스에서 기본 VLAN 구성

트렁크된 인터페이스 또는 본딩에 기본 VLAN에 네트워크가 있는 경우 IP 주소가 브리지에 직접 할당되고 VLAN 인터페이스가 없습니다.

다음 예제에서는 외부 네트워크가 기본 VLAN에 있는 본딩된 인터페이스를 구성합니다.

network_config:
- type: ovs_bridge
  name: br-ex
  addresses:
  - ip_netmask: {{ external_ip }}/{{ external_cidr }}
  routes: {{ external_host_routes }}
  members:
  - type: ovs_bond
    name: bond1
    ovs_options: {{ bond_interface_ovs_options }}
    members:
    - type: interface
      name: nic3
      primary: true
    - type: interface
      name: nic4
Copy to Clipboard Toggle word wrap
참고

address 또는 route 문을 브리지로 이동할 때 브리지에서 해당 VLAN 인터페이스를 제거합니다. 적용 가능한 모든 역할을 변경합니다. 외부 네트워크는 컨트롤러에만 있으므로 컨트롤러 템플릿만 변경해야 합니다. 스토리지 네트워크는 모든 역할에 연결되므로 스토리지 네트워크가 기본 VLAN에 있는 경우 모든 역할에 수정이 필요합니다.

8.2.3.5. netfilter가 추적하는 최대 연결 수를 늘리기

RHOSP(Red Hat OpenStack Platform) 네트워킹 서비스(neutron)는 netfilter 연결 추적을 사용하여 상태 저장 방화벽을 빌드하고 가상 네트워크에서 NAT(네트워크 주소 변환)를 제공합니다. 커널 공간이 최대 연결 제한에 도달하고 nf_conntrack: table full, dropping packet과 같은 오류가 발생할 수 있는 몇 가지 상황이 있습니다. 연결 추적(conntrack)의 제한을 늘리고 이러한 유형의 오류를 방지할 수 있습니다. RHOSP 배포에서 하나 이상의 역할 또는 모든 노드에 대해 conntrack 제한을 늘릴 수 있습니다.

사전 요구 사항

  • RHOSP 언더클라우드를 성공적으로 설치합니다.

절차

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. 언더클라우드 인증 정보 파일을 가져옵니다.

    $ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  3. 사용자 지정 YAML 환경 파일을 생성합니다.

    예제

    $ vi /home/stack/templates/custom-environment.yaml
    Copy to Clipboard Toggle word wrap

  4. 환경 파일에는 키워드 parameter_defaultsExtraSysctlSettings 가 포함되어야 합니다. netfilter가 변수 net.nf_conntrack_max 에서 추적할 수 있는 최대 연결 수에 대한 새 값을 입력합니다.

    예제

    이 예에서는 RHOSP 배포의 모든 호스트에 conntrack 제한을 설정할 수 있습니다.

    parameter_defaults:
      ExtraSysctlSettings:
        net.nf_conntrack_max:
          value: 500000
    Copy to Clipboard Toggle word wrap

    &lt ;role>Parameter 매개변수를 사용하여 특정 역할에 대한 conntrack 제한을 설정합니다.

    parameter_defaults:
      <role>Parameters:
        ExtraSysctlSettings:
          net.nf_conntrack_max:
            value: <simultaneous_connections>
    Copy to Clipboard Toggle word wrap
    • & lt;role >을 역할 이름으로 바꿉니다.

      예를 들어 ControllerParameters 를 사용하여 Controller 역할의 conntrack 제한을 설정하거나 ComputeParameters 를 사용하여 Compute 역할의 conntrack 제한을 설정합니다.

    • & lt;simultaneous_connections >를 허용하려는 동시 연결 수로 바꿉니다.

      예제

      이 예에서는 RHOSP 배포에서 Controller 역할에 대해서만 conntrack 제한을 설정할 수 있습니다.

      parameter_defaults:
        ControllerParameters:
          ExtraSysctlSettings:
            net.nf_conntrack_max:
              value: 500000
      Copy to Clipboard Toggle word wrap
      참고

      net.nf_conntrack_max 의 기본값은 500000 연결입니다. 최대값은 4294967295 입니다.

  5. 배포 명령을 실행하고 코어 heat 템플릿, 환경 파일 및 이 새 사용자 지정 환경 파일을 포함합니다.

    중요

    후속 환경 파일에 정의된 매개변수와 리소스가 우선하므로 환경 파일의 순서가 중요합니다.

    예제

    $ openstack overcloud deploy --templates \
    -e /home/stack/templates/custom-environment.yaml
    Copy to Clipboard Toggle word wrap

8.2.4. 네트워크 인터페이스 본딩

사용자 지정 네트워크 구성에서 다양한 본딩 옵션을 사용할 수 있습니다.

8.2.4.1. 오버클라우드 노드에 대한 네트워크 인터페이스 본딩

여러 물리적 NIC를 함께 번들하여 본딩이라는 단일 논리 채널을 구성할 수 있습니다. 고가용성 시스템에 중복성을 제공하거나 처리량을 늘리도록 본딩을 구성할 수 있습니다.

Red Hat OpenStack Platform은 OVS(Open vSwitch) 커널 본딩, OVS-DPDK 본딩 및 Linux 커널 본딩을 지원합니다.

Expand
표 8.7. 지원되는 인터페이스 본딩 유형
본딩 유형유형 값허용되는 브릿지 유형허용된 멤버

OVS 커널 본딩

ovs_bond

ovs_bridge

인터페이스

ovs-DPDK 본딩

ovs_dpdk_bond

ovs_user_bridge

ovs_dpdk_port

Linux 커널 본딩

linux_bond

ovs_bridge 또는 linux_bridge

인터페이스

중요

ovs_bridgeovs_user_bridge 를 동일한 노드에 결합하지 마십시오.

8.2.4.2. OVS(Open vSwitch) 본딩 생성

네트워크 인터페이스 템플릿에서 OVS 본딩을 생성합니다. 예를 들어 OVS 사용자 공간 브리지의 일부로 본딩을 생성할 수 있습니다.

- type: ovs_user_bridge
  name: br-dpdk0
  members:
  - type: ovs_dpdk_bond
    name: dpdkbond0
    rx_queue: {{ num_dpdk_interface_rx_queues }}
    members:
    - type: ovs_dpdk_port
      name: dpdk0
      members:
      - type: interface
        name: nic4
    - type: ovs_dpdk_port
      name: dpdk1
      members:
      - type: interface
        name: nic5
Copy to Clipboard Toggle word wrap

이 예에서는 두 개의 DPDK 포트에서 본딩을 생성합니다.

ovs_options 매개변수에는 본딩 옵션이 포함되어 있습니다. BondInterfaceOvsOptions 매개변수를 사용하여 네트워크 환경 파일에서 본딩 옵션을 구성할 수 있습니다.

parameter_defaults:
  BondInterfaceOvsOptions: "bond_mode=active-backup"
Copy to Clipboard Toggle word wrap

8.2.4.3. OVS(Open vSwitch) 본딩 옵션

NIC 템플릿 파일에서 ovs_options heat 매개변수를 사용하여 다양한 OVS(Open vSwitch) 본딩 옵션을 설정할 수 있습니다. active-backup, balance-tlb, balance-alb 및 balance-slb 모드에는 특정 스위치 구성이 필요하지 않습니다.

bond_mode=balance-slb
소스 로드 밸런싱(slb)은 소스 MAC 주소 및 출력 VLAN을 기반으로 흐름의 균형을 유지하며 트래픽 패턴이 변경될 때 주기적으로 재조정됩니다. balance-slb 본딩 옵션을 사용하여 본딩을 구성하면 원격 스위치에 구성이 필요하지 않습니다. Networking 서비스(neutron)는 각 소스 MAC 및 VLAN 쌍을 링크에 할당하고 해당 링크를 통해 해당 MAC 및 VLAN에서 모든 패킷을 전송합니다. 소스 MAC 주소 및 VLAN 번호를 기반으로 하는 간단한 해시 알고리즘과 트래픽 패턴이 변경됨에 따라 주기적으로 재조정됩니다. balance-slb 모드는 모드 2, balance-slb 와 달리 Linux 본딩 드라이버에서 사용하는 모드 2 본딩과 유사하지만 swtich의 특정 구성이 필요하지 않습니다. balance-slb 모드를 사용하여 스위치가 LACP를 사용하도록 구성되지 않은 경우에도 부하 분산을 제공할 수 있습니다.
bond_mode=active-backup
active-backup 본딩 모드를 사용하여 본딩을 구성하면 네트워킹 서비스는 하나의 NIC를 대기 상태로 유지합니다. 대기 NIC는 활성 연결이 실패하면 네트워크 작업을 재개합니다. 물리적 스위치에는 하나의 MAC 주소만 제공됩니다. 이 모드는 스위치 구성이 필요하지 않으며 링크를 별도의 스위치에 연결할 때 작동합니다. 이 모드에서는 로드 밸런싱을 제공하지 않습니다.
lacp=[active | passive | off]
LCP(Link Aggregation Control Protocol) 동작을 제어합니다. 일부 스위치만 LACP를 지원합니다. 스위치에서 LACP를 지원하지 않는 경우 bond_mode=balance-slb 또는 bond_mode=active-backup 을 사용합니다.
other-config:lacp-fallback-ab=true
LACP가 실패하는 경우 active-backup을 본딩 모드로 설정합니다.
other_config:lacp-time=[fast | slow]
LACP 하트비트를 1초(빠름) 또는 30초(낮음)로 설정합니다. 기본값은 느립니다.
other_config:bond-detect-mode=[miimon | carrier]
miimon heartbeats(miimon) 또는 모니터 캐리어(carrier)를 사용하도록 링크 탐지를 설정합니다. 기본값은 carrier입니다.
other_config:bond-miimon-interval=100
miimon을 사용하는 경우 하트비트 간격(밀리초)을 설정합니다.
bond_updelay=1000
Fapping을 방지하려면 링크를 활성화해야 하는 간격(밀리초)을 설정합니다.
other_config:bond-rebalance-interval=10000
본딩 멤버 간에 흐름이 재조정되는 간격(밀리초)을 설정합니다. 본딩 멤버 간 흐름 재조정을 비활성화하려면 이 값을 0으로 설정합니다.

8.2.4.5. Linux 본딩 생성

네트워크 인터페이스 템플릿에서 Linux 본딩을 생성합니다. 예를 들어 다음 두 개의 인터페이스를 결합하는 Linux 본딩을 생성할 수 있습니다.

- type: linux_bond
  name: bond_api
  mtu: {{ min_viable_mtu_ctlplane }}
  use_dhcp: false
  bonding_options: {{ bond_interface_ovs_options }}
  dns_servers: {{ ctlplane_dns_nameservers }}
  domain: {{ dns_search_domains }}
  members:
  - type: interface
    name: nic2
    mtu: {{ min_viable_mtu_ctlplane }}
    primary: true
  - type: interface
    name: nic3
    mtu: {{ min_viable_mtu_ctlplane }}
Copy to Clipboard Toggle word wrap

bonding_options 매개 변수는 Linux 본딩에 대한 특정 본딩 옵션을 설정합니다.

mode
예에서는 802.3ad 또는 LACP 모드인 본딩 모드를 설정합니다. Linux 본딩 모드에 대한 자세한 내용은 Red Hat Enterprise Linux 9 네트워킹 구성 및 관리 가이드의 "결합 모드에 따른 업스트림 스위치 구성"을 참조하십시오.
lacp_rate
LACP 패킷이 1초마다 전송되는지 또는 30초마다 전송되는지 여부를 정의합니다.
updelay
인터페이스를 트래픽에 사용하기 전에 인터페이스를 활성화해야 하는 최소 시간을 정의합니다. 이 최소 구성은 포트 발생 중단을 완화하는 데 도움이 됩니다.
miimon
드라이버의MIIMON 기능을 사용하여 포트 상태를 모니터링하는 데 사용되는 간격(밀리초)입니다.

다음 추가 예제를 가이드로 사용하여 자체 Linux 본딩을 구성합니다.

  • 하나의 VLAN을 사용하여 Linux 본딩을 active-backup 모드로 설정합니다.

    ....
    
    - type: linux_bond
      name: bond_api
      mtu: {{ min_viable_mtu_ctlplane }}
      use_dhcp: false
      bonding_options: "mode=active-backup"
      dns_servers: {{ ctlplane_dns_nameservers }}
      domain: {{ dns_search_domains }}
      members:
      - type: interface
        name: nic2
        mtu: {{ min_viable_mtu_ctlplane }}
        primary: true
      - type: interface
        name: nic3
        mtu: {{ min_viable_mtu_ctlplane }}
      - type: vlan
        mtu: {{ internal_api_mtu }}
        vlan_id: {{ internal_api_vlan_id }}
        addresses:
        - ip_netmask:
            {{ internal_api_ip }}/{{ internal_api_cidr }}
          routes:
            {{ internal_api_host_routes }}
    Copy to Clipboard Toggle word wrap
  • OVS 브리지의 Linux 본딩. bond를 하나의 VLAN과 함께 802.3ad LACP 모드로 설정합니다.

    - type: linux_bond
      name: bond_tenant
      mtu: {{ min_viable_mtu_ctlplane }}
      bonding_options: "mode=802.3ad updelay=1000 miimon=100"
      use_dhcp: false
      dns_servers: {{ ctlplane_dns_nameserver }}
      domain: {{ dns_search_domains }}
      members:
        - type: interface
          name: p1p1
          mtu: {{ min_viable_mtu_ctlplane }}
        - type: interface
          name: p1p2
          mtu: {{ min_viable_mtu_ctlplane }}
        - type: vlan
          mtu: {{ tenant_mtu }}
          vlan_id: {{ tenant_vlan_id }}
          addresses:
            - ip_netmask:
               {{ tenant_ip }}/{{ tenant_cidr }}
          routes:
            {{ tenant_host_routes }}
    Copy to Clipboard Toggle word wrap
    중요

    min_viable_mtu_ctlplane 을 설정해야 합니다. /usr/share/ansible/roles/tripleo_network_config/templates/2_linux_bonds_vlans.j2 를 templates 디렉터리에 복사하고 필요에 따라 수정합니다. 자세한 내용은 Composable 네트워크 를 참조하고 네트워크 구성 템플릿과 관련된 단계를 참조하십시오.

8.2.5. 네트워크 구성 파일의 형식 업데이트

네트워크 구성 yaml 파일의 형식이 RHOSP(Red Hat OpenStack Platform) 17.0에서 변경되었습니다. 네트워크 구성 파일 network_data.yaml 의 구조가 변경되었으며 NIC 템플릿 파일 형식이 yaml 파일 형식에서 Jinja2 ansible 형식인 j2 로 변경되었습니다.

현재 배포의 기존 네트워크 구성 파일을 다음 변환 툴을 사용하여 RHOSP 17+ 형식으로 변환할 수 있습니다.

  • convert_v1_net_data.py
  • convert_heat_nic_config_to_ansible_j2.py

기존 NIC 템플릿 파일을 수동으로 변환할 수도 있습니다.

변환해야 하는 파일은 다음과 같습니다.

  • network_data.yaml
  • 컨트롤러 NIC 템플릿
  • 컴퓨팅 NIC 템플릿
  • 기타 사용자 지정 네트워크 파일

8.2.5.1. 네트워크 구성 파일의 형식 업데이트

네트워크 구성 yaml 파일의 형식이 RHOSP(Red Hat OpenStack Platform) 17.0에서 변경되었습니다. convert_v1_net_data.py 변환 도구를 사용하여 현재 배포의 기존 네트워크 구성 파일을 RHOSP 17+ 형식으로 변환할 수 있습니다.

프로세스

  1. 변환 도구를 다운로드합니다.

    • /usr/share/openstack-tripleo-heat-templates/tools/convert_v1_net_data.py
  2. RHOSP 16+ 네트워크 구성 파일을 RHOSP 17+ 형식으로 변환합니다.

    $ python3 convert_v1_net_data.py <network_config>.yaml
    Copy to Clipboard Toggle word wrap
    • & lt;network_config >를 변환하려는 기존 구성 파일의 이름으로 바꿉니다(예: network_data.yaml ).

8.2.5.2. NIC 템플릿을 Jinja2 Ansible 형식으로 자동 변환

NIC 템플릿 파일 형식은 RHOSP(Red Hat OpenStack Platform) 17.0에서 yaml 파일 형식에서 Jinja2 Ansible 형식인 j2 로 변경되었습니다.

convert_heat_nic_config_to_ansible_j2.py 변환 툴을 사용하여 현재 배포의 기존 NIC 템플릿 파일을 Jinja2 형식으로 변환할 수 있습니다.

기존 NIC 템플릿 파일을 수동으로 변환할 수도 있습니다. 자세한 내용은 NIC 템플릿을 Jinja2 Ansible 형식으로 수동 변환 에서 참조하십시오.

변환해야 하는 파일은 다음과 같습니다.

  • 컨트롤러 NIC 템플릿
  • 컴퓨팅 NIC 템플릿
  • 기타 사용자 지정 네트워크 파일

프로세스

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. stackrc 파일을 소싱합니다.

    [stack@director ~]$ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  3. 변환 툴을 언더클라우드의 현재 디렉터리에 복사합니다.

    $ cp /usr/share/openstack-tripleo-heat-templates/tools/convert_heat_nic_config_to_ansible_j2.py .
    Copy to Clipboard Toggle word wrap
  4. 컴퓨팅 및 컨트롤러 NIC 템플릿 파일 및 기타 사용자 지정 네트워크 파일을 Jinja2 Ansible 형식으로 변환합니다.

    $ python3 convert_heat_nic_config_to_ansible_j2.py \
     [--stack <overcloud> | --standalone] --networks_file <network_config.yaml> \
     <network_template>.yaml
    Copy to Clipboard Toggle word wrap
    • <overcloud>를 오버클라우드 스택의 이름 또는 UUID로 바꿉니다. --stack 을 지정하지 않으면 스택의 기본값은 overcloud 입니다.

      참고

      언더클라우드 노드에서 오케스트레이션 서비스(heat)를 실행해야 하므로 RHOSP 16 배포에서만 --stack 옵션을 사용할 수 있습니다. RHOSP 17부터 RHOSP 배포는 컨테이너에서 오케스트레이션 서비스를 실행하는 임시 heat를 사용합니다. 오케스트레이션 서비스를 사용할 수 없거나 스택이 없는 경우 --stack 대신 --standalone 옵션을 사용합니다.

    • & lt;network_config.yaml >을 네트워크 배포를 설명하는 구성 파일의 이름으로 바꿉니다(예: network_data.yaml ).
    • & lt;network_template >을 변환하려는 네트워크 구성 파일의 이름으로 바꿉니다.

    사용자 지정 네트워크 구성 파일을 모두 변환할 때까지 이 명령을 반복합니다. convert_heat_nic_config_to_ansible_j2.py 스크립트는 변환을 위해 전달하는 각 yaml 파일에 대해 .j2 파일을 생성합니다.

  5. 생성된 각 .j2 파일을 검사하여 구성이 올바르고 환경에 대해 완료되었는지 확인하고 구성을 변환할 수 없는 위치를 강조 표시하는 툴에서 생성한 모든 주석을 수동으로 해결합니다. NIC 구성을 Jinja2 형식으로 수동으로 변환하는 방법에 대한 자세한 내용은 Heat 매개변수를 Ansible 변수 매핑에 참조하십시오.
  6. 생성된 .j2 파일을 가리키도록 network-environment.yaml 파일에서 *NetworkConfigTemplate 매개변수를 구성합니다.

    parameter_defaults:
      ControllerNetworkConfigTemplate: '/home/stack/templates/custom-nics/controller.j2'
      ComputeNetworkConfigTemplate: '/home/stack/templates/custom-nics/compute.j2'
    Copy to Clipboard Toggle word wrap
  7. 이전 네트워크 구성 파일의 network-environment.yaml 파일에서 resource_registry 매핑을 삭제합니다.

    resource_registry:
      OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml
      OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
    Copy to Clipboard Toggle word wrap

8.2.5.3. NIC 템플릿을 Jinja2 Ansible 형식으로 수동 변환

NIC 템플릿 파일 형식은 RHOSP(Red Hat OpenStack Platform) 17.0에서 yaml 파일 형식에서 Jinja2 Ansible 형식인 j2 로 변경되었습니다.

기존 NIC 템플릿 파일을 수동으로 변환할 수 있습니다.

또한 convert_heat_nic_config_to_ansible_j2.py 변환 툴을 사용하여 현재 배포의 기존 NIC 템플릿 파일을 Jinja2 형식으로 변환할 수도 있습니다. 자세한 내용은 NIC 템플릿 자동 변환을 Jinja2 ansible 형식으로 참조하십시오.

변환해야 하는 파일은 다음과 같습니다.

  • 컨트롤러 NIC 템플릿
  • 컴퓨팅 NIC 템플릿
  • 기타 사용자 지정 네트워크 파일

프로세스

  1. Jinja2 템플릿을 생성합니다. 언더클라우드 노드의 /usr/share/ansible/roles/tripleo_network_config/templates/ 디렉터리에서 예제 템플릿을 복사하여 새 템플릿을 생성할 수 있습니다.
  2. heat 내장 함수를 Jinja2 필터로 교체합니다. 예를 들어 다음 필터를 사용하여 min_viable_mtu 를 계산합니다.

    {% set mtu_list = [ctlplane_mtu] %}
    {% for network in role_networks %}
    {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }}
    {%- endfor %}
    {% set min_viable_mtu = mtu_list | max %}
    Copy to Clipboard Toggle word wrap
  3. Ansible 변수를 사용하여 배포에 대한 네트워크 속성을 구성합니다. 각 개별 네트워크를 수동으로 구성하거나 role_networks 를 반복하여 각 네트워크를 프로그래밍 방식으로 구성할 수 있습니다.

    • 각 네트워크를 수동으로 구성하려면 각 get_param 함수를 동등한 Ansible 변수로 교체합니다. 예를 들어 현재 배포에서 get_param: InternalApiNetworkVlanID 를 사용하여 vlan_id 를 구성하는 경우 템플릿에 다음 구성을 추가합니다.

      vlan_id: {{ internal_api_vlan_id }}
      Copy to Clipboard Toggle word wrap
      Expand
      표 8.9. heat 매개변수에서 Ansible 변수로의 네트워크 속성 매핑 예
      yaml 파일 형식Jinja2 ansible 형식, j2
      - type: vlan
        device: nic2
        vlan_id:
          get_param: InternalApiNetworkVlanID
        addresses:
        - ip_netmask:
            get_param: InternalApiIpSubnet
      Copy to Clipboard Toggle word wrap
      - type: vlan
        device: nic2
        vlan_id: {{ internal_api_vlan_id }}
        addresses:
        - ip_netmask: {{ internal_api_ip }}/{{ internal_api_cidr }}
      Copy to Clipboard Toggle word wrap
    • 각 네트워크를 프로그래밍 방식으로 구성하려면 role_networks 를 사용하여 역할 이름으로 사용 가능한 네트워크를 검색하는 템플릿에 Jinja2 for-loop 구조를 추가합니다.

      예제

      {% for network in role_networks %}
        - type: vlan
          mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
          vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }}
          addresses:
          - ip_netmask: {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
          routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
      {%- endfor %}
      Copy to Clipboard Toggle word wrap

    heat 매개변수에서 해당하는 Ansible 변수로의 전체 매핑 목록은 Heat 매개변수에서 Ansible 변수 매핑에 대한 을 참조하십시오.

  4. 생성된 .j2 파일을 가리키도록 network-environment.yaml 파일에서 *NetworkConfigTemplate 매개변수를 구성합니다.

    parameter_defaults:
      ControllerNetworkConfigTemplate: '/home/stack/templates/custom-nics/controller.j2'
      ComputeNetworkConfigTemplate: '/home/stack/templates/custom-nics/compute.j2'
    Copy to Clipboard Toggle word wrap
  5. 이전 네트워크 구성 파일의 network-environment.yaml 파일에서 resource_registry 매핑을 삭제합니다.

    resource_registry:
      OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml
      OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
    Copy to Clipboard Toggle word wrap

8.2.5.4. Ansible 변수 매핑에 대한 heat 매개변수

NIC 템플릿 파일 형식이 yaml 파일 형식에서 RHOSP(Red Hat OpenStack Platform) 17.x에서 Jinja2 ansible 형식인 j2 로 변경되었습니다.

기존 NIC 템플릿 파일을 Jinja2 ansible 형식으로 수동으로 변환하려면 heat 매개변수를 Ansible 변수에 매핑하여 배포에 사전 프로비저닝된 노드의 네트워크 속성을 구성할 수 있습니다. --network-config 선택적 인수를 지정하지 않고 openstack overcloud node provision 을 실행하는 경우 heat 매개변수를 Ansible 변수에 매핑할 수도 있습니다.

예를 들어 현재 배포에서 get_param: InternalApiNetworkVlanID 를 사용하여 vlan_id 를 구성하는 경우 새 Jinja2 템플릿에서 다음 구성으로 교체합니다.

vlan_id: {{ internal_api_vlan_id }}
Copy to Clipboard Toggle word wrap
참고

--network-config 선택적 인수를 사용하여 openstack overcloud node provision 을 실행하여 노드를 프로비저닝하는 경우 overcloud-baremetal-deploy.yaml 의 매개변수를 사용하여 배포의 네트워크 속성을 구성해야 합니다. 자세한 내용은 정의 파일 매핑을 프로비저닝하기 위한 Heat 매개변수를 참조하십시오.

다음 표에는 heat 매개변수의 사용 가능한 매핑이 나와 동등한 Ansible vars 로 나열되어 있습니다.

Expand
표 8.10. heat 매개변수에서 Ansible 변수에 매핑
heat 매개변수Ansible vars

BondInterfaceOvsOptions

{{ bond_interface_ovs_options }}

ControlPlaneIp

{{ ctlplane_ip }}

ControlPlaneDefaultRoute

{{ ctlplane_gateway_ip }}

ControlPlaneMtu

{{ ctlplane_mtu }}

ControlPlaneStaticRoutes

{{ ctlplane_host_routes }}

ControlPlaneSubnetCidr

{{ ctlplane_subnet_cidr }}

DnsSearchDomains

{{ dns_search_domains }}

DnsServers

{{ ctlplane_dns_nameservers }}

참고

이 Ansible 변수는 DEFAULT/undercloud_nameservers%SUBNET_SECTION%/dns_nameservers 의 경우 undercloud.conf 에 구성된 IP 주소로 채워집니다. %SUBNET_SECTION%/dns_nameservers 의 구성은 DEFAULT/undercloud_nameservers 의 구성을 재정의하므로 언더클라우드 및 오버클라우드에 다른 DNS 서버를 사용하고 다른 프로비저닝 서브넷의 노드에 다른 DNS 서버를 사용할 수 있습니다.

NumDpdkInterfaceRxQueues

{{ num_dpdk_interface_rx_queues }}

표에 나열되지 않은 heat 매개변수 구성

표에 나열되지 않은 heat 매개변수를 구성하려면 매개 변수를 {{role.name}}ExtraGroupVars 로 구성해야 합니다. 매개변수를 {{role.name}}ExtraGroupVars 매개변수로 구성한 후 새 템플릿에서 사용할 수 있습니다. 예를 들어 StorageSupernet 매개변수를 구성하려면 네트워크 구성 파일에 다음 구성을 추가합니다.

parameter_defaults:
  ControllerExtraGroupVars:
    storage_supernet: 172.16.0.0/16
Copy to Clipboard Toggle word wrap

그런 다음 {{ storage_supernet }} 을 Jinja2 템플릿에 추가할 수 있습니다.

주의

--network-config 옵션을 노드 프로비저닝과 함께 사용하면 이 프로세스가 작동하지 않습니다. 사용자 지정 vars가 필요한 사용자는 --network-config 옵션을 사용해서는 안 됩니다. 대신 Heat 스택을 생성한 후 노드 네트워크 구성을 config-download ansible 실행에 적용합니다.

Ansible 변수 구문을 변환하여 각 네트워크를 프로그래밍 방식으로 구성

Jinja2 for-loop 구조를 사용하여 role_networks 를 통해 반복함으로써 역할 이름으로 사용 가능한 네트워크를 검색하는 경우 각 속성 앞에 추가할 각 네트워크 역할의 소문자 이름을 검색해야 합니다. 다음 구조를 사용하여 위의 표에서 필요한 구문으로 Ansible 변수를 변환합니다.

{{ lookup('vars', networks_lower[network] ~ '_<property>') }}

  • & lt;property >를 설정 중인 속성(예: ip,vlan_id 또는 mtu )으로 바꿉니다.

예를 들어 각 NetworkVlanID 의 값을 동적으로 채우려면 {{ <network_name>_vlan_id }} 를 다음 구성으로 교체합니다.

{{ lookup(‘vars’, networks_lower[network] ~ ‘_vlan_id’) }}`
Copy to Clipboard Toggle word wrap

8.2.5.5. 정의 파일 매핑을 프로비저닝하기 위한 heat 매개변수

--network-config 선택적 인수를 사용하여 openstack overcloud node provision 명령을 실행하여 노드를 프로비저닝하는 경우 overcloud-baremetal-deploy.yaml 의 매개변수를 사용하여 배포에 대한 네트워크 속성을 구성해야 합니다.

배포에서 사전 프로비저닝된 노드를 사용하는 경우 heat 매개변수를 Ansible 변수에 매핑하여 네트워크 속성을 구성할 수 있습니다. --network-config 선택적 인수를 지정하지 않고 openstack overcloud node provision 을 실행하는 경우 heat 매개변수를 Ansible 변수에 매핑할 수도 있습니다. Ansible 변수를 사용하여 네트워크 속성을 구성하는 방법에 대한 자세한 내용은 Ansible 변수 매핑에 대한 Heat 매개변수를 참조하십시오.

다음 표에는 heat 매개변수에서 overcloud-baremetal-deploy.yaml 노드 정의 파일에 해당하는 network_config 속성으로의 사용 가능한 매핑이 나열되어 있습니다.

Expand
표 8.11. heat 매개변수에서 노드 정의 파일 overcloud-baremetal-deploy.yaml에 매핑
heat 매개변수network_config 속성

BondInterfaceOvsOptions

bond_interface_ovs_options

DnsSearchDomains

dns_search_domains

NetConfigDataLookup

net_config_data_lookup

NeutronPhysicalBridge

physical_bridge_name

NeutronPublicInterface

public_interface_name

NumDpdkInterfaceRxQueues

num_dpdk_interface_rx_queues

{{role.name}}NetworkConfigUpdate

network_config_update

다음 표에는 heat 매개변수의 사용 가능한 매핑이 네트워크 정의 파일 network_data.yaml 과 동등한 속성으로 나열되어 있습니다.

Expand
표 8.12. heat 매개변수에서 네트워크 정의 파일 network_data.yaml에 매핑
heat 매개변수IPv4 network_data.yaml 속성IPv6 network_data.yaml 속성

<network_name>IpSubnet

- name: <network_name>
  subnets:
    subnet01:
      ip_subnet: 172.16.1.0/24
Copy to Clipboard Toggle word wrap
- name: <network_name>
  subnets:
    subnet01:
      ipv6_subnet: 2001:db8:a::/64
Copy to Clipboard Toggle word wrap

<network_name>NetworkVlanID

- name: <network_name>
  subnets:
    subnet01:
      ...
      vlan: <vlan_id>
Copy to Clipboard Toggle word wrap
- name: <network_name>
  subnets:
    subnet01:
      ...
      vlan: <vlan_id>
Copy to Clipboard Toggle word wrap

<network_name>Mtu

- name: <network_name>
  mtu:
Copy to Clipboard Toggle word wrap
- name: <network_name>
  mtu:
Copy to Clipboard Toggle word wrap

<network_name>InterfaceDefaultRoute

- name: <network_name>
  subnets:
    subnet01:
      ip_subnet: 172.16.16.0/24
      gateway_ip: 172.16.16.1
Copy to Clipboard Toggle word wrap
- name: <network_name>
  subnets:
    subnet01:
      ipv6_subnet: 2001:db8:a::/64
      gateway_ipv6: 2001:db8:a::1
Copy to Clipboard Toggle word wrap

<network_name>InterfaceRoutes

- name: <network_name>
  subnets:
    subnet01:
      ...
      routes:
        - destination: 172.18.0.0/24
          nexthop: 172.18.1.254
Copy to Clipboard Toggle word wrap
- name: <network_name>
  subnets:
    subnet01:
      ...
      routes_ipv6:
        - destination: 2001:db8:b::/64
          nexthop: 2001:db8:a::1
Copy to Clipboard Toggle word wrap

8.2.5.6. 네트워크 데이터 스키마 변경

네트워크 데이터 스키마가 RHOSP(Red Hat OpenStack Platform) 17에서 업데이트되었습니다. RHOSP 16 및 이전 버전에서 사용되는 네트워크 데이터 스키마와 RHOSP 17 이상에서 사용되는 네트워크 데이터 스키마의 주요 차이점은 다음과 같습니다.

  • 기본 서브넷이 서브넷 맵으로 이동되었습니다. 이렇게 하면 라우팅되지 않은 배포(예: 스파인-리프트 네트워킹)에 대한 구성이 정렬됩니다.
  • enabled 옵션은 더 이상 비활성화된 네트워크를 무시하는 데 사용되지 않습니다. 대신 구성 파일에서 비활성화된 네트워크를 제거해야 합니다.
  • 이를 사용한 heat 리소스가 제거되었으므로 compat_name 옵션은 더 이상 필요하지 않습니다.
  • 다음 매개변수는 네트워크 수준에서 더 이상 유효하지 않습니다: ip_subnet,gateway_ip,allocation_pools,routes,ipv6_subnet,gateway_ipv6,ipv6_allocation_pools, routes_ipv6. 이러한 매개변수는 서브넷 수준에서 계속 사용됩니다.
  • metalsmith 에서 ironic 포트를 생성하는 데 사용되는 새 매개변수 physical_network 가 도입되었습니다.
  • 새 매개변수 network_typesegmentation_id 는 네트워크 유형을 vlan 로 설정하는 데 사용되는 {{network.name}}NetValueSpecs 를 대체합니다.
  • RHOSP 17에서는 다음 매개변수가 더 이상 사용되지 않습니다.

    • {{network.name}}NetCidr
    • {{network.name}}SubnetName
    • {{network.name}}Network
    • {{network.name}}AllocationPools
    • {{network.name}}Routes
    • {{network.name}}SubnetCidr_{{subnet}}
    • {{network.name}}AllocationPools_{{subnet}}
    • {{network.name}}Routes_{{subnet}}
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat