Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
7장. 네트워크 격리
director는 분리된 Overcloud 네트워크를 구성하는 방법을 제공합니다. 즉, Overcloud 환경은 네트워크 트래픽 유형을 다른 네트워크로 분리하여 네트워크 트래픽을 특정 네트워크 인터페이스 또는 본딩에 할당합니다. 격리된 네트워크를 구성한 후 director는 분리된 네트워크를 사용하도록 OpenStack 서비스를 구성합니다. 격리된 네트워크가 구성되지 않은 경우 모든 서비스가 프로비저닝 네트워크에서 실행됩니다.
이 예에서는 모든 서비스에 별도의 네트워크를 사용합니다.
- 네트워크 1 - 프로비저닝
- 네트워크 2 - 내부 API
- 네트워크 3 - 테넌트 네트워크
- 네트워크 4 - 스토리지
- 네트워크 5 - 스토리지 관리
- 네트워크 6 - 관리
- 네트워크 7 - 외부 및 유동 IP ( Overcloud 생성 후 매핑)
이 예제에서 각 Overcloud 노드는 본딩에서 두 개의 네트워크 인터페이스를 사용하여 태그된 VLAN의 네트워크를 제공합니다. 이 본딩에 다음 네트워크 할당이 적용됩니다.
표 7.1. 네트워크 서브넷 및 VLAN 할당
| 네트워크 유형 | subnet | VLAN |
| 내부 API | 172.16.0.0/24 | 201 |
| 테넌트 | 172.17.0.0/24 | 202 |
| 스토리지 | 172.18.0.0/24 | 203 |
| 스토리지 관리 | 172.19.0.0/24 | 204 |
| 관리 | 172.20.0.0/24 | 205 |
| 외부 / 유동 IP | 10.1.1.0/24 | 100 |
7.1. 사용자 정의 인터페이스 템플릿 생성
Overcloud 네트워크 구성에는 네트워크 인터페이스 템플릿 세트가 필요합니다. 이러한 템플릿을 사용자 지정하여 역할에 따라 노드 인터페이스를 구성합니다. 이러한 템플릿은 YAML 형식의 표준 Heat 템플릿입니다( 2.1절. “Heat 템플릿”참조). director에는 시작할 예제 템플릿 세트가 포함되어 있습니다.
-
/usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans- 역할에 따라 VLAN 설정이 포함된 단일 NIC용 템플릿이 포함된 디렉토리. -
/usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans- 역할별로 본딩된 NIC 구성을 위한 템플릿이 포함된 디렉토리. -
/usr/share/openstack-tripleo-heat-templates/network/config/multiple-nics- 역할당 하나의 NIC를 사용하여 여러 NIC 구성용 템플릿이 포함된 디렉터리입니다. -
/usr/share/openstack-tripleo-heat-templates/network/config/single-nic-linux-bridge-vlans- 역할별로 VLAN 설정이 포함된 단일 NIC용 템플릿이 포함된 디렉토리 및 Open vSwitch 브리지 대신 Linux 브리지를 사용합니다.
이러한 예제에는 기본 역할에 대한 템플릿만 포함되어 있습니다. 사용자 지정 역할에 대한 네트워크 인터페이스 구성을 정의하려면 이러한 템플릿을 기반으로 사용합니다.
이 예에서는 기본 본딩 NIC 예제 구성을 기준으로 사용합니다. /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans 에 있는 버전을 복사합니다.
$ cp -r /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans ~/templates/nic-configs
이렇게 하면 각 역할에 연결된 네트워크 인터페이스 구성을 정의하는 heat 템플릿 로컬 세트가 생성됩니다. 각 템플릿에는 표준 매개변수,리소스, 출력 섹션이 포함되어 있습니다. 이 예제에서는 resources 섹션만 편집합니다. 각 resources 섹션은 다음으로 시작합니다.
resources:
OsNetConfigImpl:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
os_net_config:
network_config:
이렇게 하면 os-apply-config 명령 및 os-net-config 하위 명령에 대한 요청이 생성되고 노드의 네트워크 속성을 구성합니다. network_config 섹션에는 type에 따라 정렬된 사용자 지정 인터페이스 구성이 포함되어 있으며 여기에는 다음이 포함됩니다.
- 인터페이스
단일 네트워크 인터페이스를 정의합니다. 구성은 실제 인터페이스 이름("eth0", "eth1", "enp0s25") 또는 숫자 지정된 인터페이스("nic1", "nic2", "nic3")를 사용하여 각 인터페이스를 정의합니다.
- type: interface name: nic2- vlan
VLAN을 정의합니다.
parameters섹션에서 전달된 VLAN ID 및 서브넷을 사용합니다.- type: vlan vlan_id: {get_param: ExternalNetworkVlanID} addresses: - ip_netmask: {get_param: ExternalIpSubnet}- ovs_bond
두 개 이상의
인터페이스를결합하는 Open vSwitch에서 본딩을 정의합니다. 이는 중복을 지원하고 대역폭을 늘리는 데 도움이 됩니다.- type: ovs_bond name: bond1 members: - type: interface name: nic2 - type: interface name: nic3- ovs_bridge
Open vSwitch에서 브리지를 정의합니다.
ovs_bond및vlan개체를 서로 연결합니다.- type: ovs_bridge name: {get_input: bridge_name} members: - type: ovs_bond name: bond1 members: - type: interface name: nic2 primary: true - type: interface name: nic3 - type: vlan device: bond1 vlan_id: {get_param: ExternalNetworkVlanID} addresses: - ip_netmask: {get_param: ExternalIpSubnet}- linux_bond
두 개 이상의
인터페이스를결합하는 Linux 본딩을 정의합니다. 이는 중복을 지원하고 대역폭을 늘리는 데 도움이 됩니다. kernel 기반 본딩 옵션을 bond_options매개변수에 포함해야 합니다. Linux 본딩 옵션에 대한 자세한 내용은 4.5.1을 참조하십시오. Red Hat Enterprise Linux 7 네트워킹 가이드의 본딩 모듈.- type: linux_bond name: bond1 members: - type: interface name: nic2 - type: interface name: nic3 bonding_options: "mode=802.3ad"- linux_bridge
여러
인터페이스인linux_bond및vlan개체를 연결하는 Linux 브리지를 정의합니다.- type: linux_bridge name: bridge1 addresses: - ip_netmask: list_join: - '/' - - {get_param: ControlPlaneIp} - {get_param: ControlPlaneSubnetCidr} members: - type: interface name: nic1 primary: true - type: vlan vlan_id: {get_param: ExternalNetworkVlanID} device: bridge1 addresses: - ip_netmask: {get_param: ExternalIpSubnet} routes: - ip_netmask: 0.0.0.0/0 default: true next_hop: {get_param: ExternalInterfaceDefaultRoute}
이러한 각 항목에 대한 전체 매개변수 목록은 부록 C. 네트워크 인터페이스 매개변수 를 참조하십시오.
이 예제에서는 기본 본딩 인터페이스 구성을 사용합니다. 예를 들어 /home/stack/templates/nic-configs/controller.yaml 템플릿은 다음 network_config 를 사용합니다.
resources:
OsNetConfigImpl:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
os_net_config:
network_config:
- type: interface
name: nic1
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- '/'
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
- ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
- type: ovs_bridge
name: {get_input: bridge_name}
dns_servers: {get_param: DnsServers}
members:
- type: ovs_bond
name: bond1
ovs_options: {get_param: BondInterfaceOvsOptions}
members:
- type: interface
name: nic2
primary: true
- type: interface
name: nic3
- type: vlan
device: bond1
vlan_id: {get_param: ExternalNetworkVlanID}
addresses:
- ip_netmask: {get_param: ExternalIpSubnet}
routes:
- default: true
next_hop: {get_param: ExternalInterfaceDefaultRoute}
- type: vlan
device: bond1
vlan_id: {get_param: InternalApiNetworkVlanID}
addresses:
- ip_netmask: {get_param: InternalApiIpSubnet}
- type: vlan
device: bond1
vlan_id: {get_param: StorageNetworkVlanID}
addresses:
- ip_netmask: {get_param: StorageIpSubnet}
- type: vlan
device: bond1
vlan_id: {get_param: StorageMgmtNetworkVlanID}
addresses:
- ip_netmask: {get_param: StorageMgmtIpSubnet}
- type: vlan
device: bond1
vlan_id: {get_param: TenantNetworkVlanID}
addresses:
- ip_netmask: {get_param: TenantIpSubnet}
- type: vlan
device: bond1
vlan_id: {get_param: ManagementNetworkVlanID}
addresses:
- ip_netmask: {get_param: ManagementIpSubnet}Management network 섹션은 네트워크 인터페이스 Heat 템플릿에 주석 처리됩니다. 이 섹션의 주석을 제거하여 관리 네트워크를 활성화합니다.
이 템플릿은 브리지(일반적으로 br-ex라는 외부 브리지)를 정의하고 두 개의 번호가 지정된 인터페이스인 nic2 및 nic3 에서 bond1 이라는 본딩된 인터페이스를 만듭니다. 브리지에는 bond1 을 상위 장치로 사용하는 태그된 여러 VLAN 장치도 포함되어 있습니다. 템플릿에는 director(nic1)에 다시 연결되는 인터페이스도 포함됩니다.
네트워크 인터페이스 템플릿의 예는 부록 B. 네트워크 인터페이스 템플릿 예 을 참조하십시오.
이러한 매개변수의 대부분은 get_param 함수를 사용합니다. 네트워크를 위해 특별히 만든 환경 파일에서 이러한 항목을 정의합니다.
사용되지 않는 인터페이스는 원치 않는 기본 경로 및 네트워크 루프를 유발할 수 있습니다. 예를 들어 템플릿에는 OpenStack 서비스에 IP 할당을 사용하지 않지만 여전히 DHCP 및/또는 기본 경로를 사용하는 네트워크 인터페이스(nic4)가 포함될 수 있습니다. 네트워크 충돌을 방지하려면 ovs_bridge 장치에서 사용되지 않는 인터페이스를 제거하고 DHCP 및 기본 경로 설정을 비활성화합니다.
- type: interface name: nic4 use_dhcp: false defroute: false