7.8. SR-IOV 오버클라우드 배포
SR-IOV 환경에서 RHOSP(Red Hat OpenStack Platform) 오버클라우드를 구성하는 마지막 단계는 openstack overcloud deploy
명령을 실행하는 것입니다. 명령에 대한 입력에는 사용자가 구성한 모든 다양한 오버클라우드 템플릿 및 환경 파일이 포함됩니다.
사전 요구 사항
-
언더클라우드 호스트 및
stack
사용자의 인증 정보에 액세스합니다. -
이 섹션의 이전 절차에 나열된 모든 단계를 수행하고
overcloud deploy
명령에 입력으로 사용할 다양한 heat 템플릿 및 환경 파일을 모두 어셈블했습니다.
절차
-
언더클라우드 호스트에
stack
사용자로 로그인합니다. stackrc
언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc
openstack overcloud deploy
명령을 입력합니다.openstack overcloud deploy
명령에 대한 입력을 특정 순서로 나열하는 것이 중요합니다. 일반 규칙은 먼저 기본 heat 템플릿 파일 뒤에 사용자 지정 환경 파일 및 사용자 지정 구성이 포함된 사용자 지정 템플릿을 지정합니다(예: 기본 속성 재정의).다음 순서로
openstack overcloud deploy
명령에 입력을 추가합니다.오버클라우드의 SR-IOV 네트워크의 사양이 포함된 사용자 지정 네트워크 정의 파일(예:
network-data.yaml
)자세한 내용은 director 가이드를 사용하여 Red Hat OpenStack Platform 설치 및 관리의 네트워크 정의 파일 구성 옵션을 참조하십시오.
RHOSP director에서 OVS 하드웨어 오프로드 환경을 배포하는 데 사용하는
Controller
및ComputeOvsHwOffload
역할이 포함된 역할 파일입니다.예:
roles_data_compute_sriov.yaml
자세한 내용은 7.1절. “SR-IOV의 역할 및 이미지 파일 생성”의 내용을 참조하십시오.
오버클라우드 네트워크를 프로비저닝한 출력 파일입니다.
예:
overcloud-networks-deployed.yaml
자세한 내용은 director 가이드를 사용하여 Red Hat OpenStack Platform 설치 및 관리에서 오버클라우드 네트워크 정의 구성 및 프로비저닝 을 참조하십시오.
오버클라우드 VIP 프로비저닝의 출력 파일입니다.
예:
overcloud-vip-deployed.yaml
자세한 내용은 director 가이드를 사용하여 Red Hat OpenStack Platform 설치 및 관리에서 오버클라우드의 네트워크 VIP 구성 및 프로비저닝 을 참조하십시오.
베어 메탈 노드 프로비저닝의 출력 파일입니다.
예:
overcloud-baremetal-deployed.yaml
자세한 내용은 director 가이드를 사용하여 Red Hat OpenStack Platform 설치 및 관리에서 오버클라우드의 베어 메탈 노드 프로비저닝 을 참조하십시오.
director에서 컨테이너 이미지를 가져올 위치와 저장 방법을 결정하는 데 사용하는 이미지 파일입니다.
예:
overcloud_images.yaml
자세한 내용은 7.1절. “SR-IOV의 역할 및 이미지 파일 생성”의 내용을 참조하십시오.
환경에서 사용하는 Networking 서비스(neutron) 메커니즘 드라이버 및 라우터 체계용 환경 파일입니다.
ML2/OVN
-
DCVR(Distributed virtual routing):
neutron-ovn-dvr-ha.yaml
-
중앙 집중식 가상 라우팅:
neutron-ovn-ha.yaml
-
DCVR(Distributed virtual routing):
ML2/OVS
-
DCVR(Distributed virtual routing):
neutron-ovs-dvr.yaml
-
중앙 집중식 가상 라우팅:
neutron-ovs.yaml
-
DCVR(Distributed virtual routing):
메커니즘 드라이버에 따라 SR-IOV의 환경 파일입니다.
ML2/OVN
-
neutron-ovn-sriov.yaml
-
ML2/OVS
neutron-sriov.yaml
참고OVS-DPDK 환경도 있고 동일한 노드에서 OVS-DPDK 및 SR-IOV 인스턴스를 찾으려면 배포 스크립트에 다음 환경 파일을 포함합니다.
ML2/OVN
neutron-ovn-dpdk.yaml
ML2/OVS
neutron-ovs-dpdk.yaml
다음과 같은 구성이 포함된 하나 이상의 사용자 지정 환경 파일입니다.
- SR-IOV 노드의 PCI 패스스루 장치입니다.
- SR-IOV 노드의 역할별 매개변수
SR-IOV 환경의 기본 구성 값을 덮어씁니다.
예:
sriov-overrides.yaml
자세한 내용은 다음을 참조하십시오.
- 7.2절. “SR-IOV의 PCI 패스스루 장치 구성”.
7.3절. “역할별 매개변수 및 구성 덮어쓰기 추가”.
예제
샘플
openstack overcloud deploy
명령에서 발췌한 내용은 DVR을 사용하는 SR-IOV, ML2/OVN 환경에 대한 명령 입력 순서를 올바르게 정렬하는 방법을 보여줍니다.$ openstack overcloud deploy \ --log-file overcloud_deployment.log \ --templates /usr/share/openstack-tripleo-heat-templates/ \ --stack overcloud \ -n /home/stack/templates/network_data.yaml \ -r /home/stack/templates/roles_data_compute_sriov.yaml \ -e /home/stack/templates/overcloud-networks-deployed.yaml \ -e /home/stack/templates/overcloud-vip-deployed.yaml \ -e /home/stack/templates/overcloud-baremetal-deployed.yaml \ -e /home/stack/templates/overcloud-images.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/\ neutron-ovn-dvr-ha.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/services/\ neutron-ovn-sriov.yaml \ -e /home/stack/templates/sriov-overrides.yaml
openstack overcloud deploy
명령을 실행합니다.오버클라우드 생성이 완료되면 RHOSP director에서 오버클라우드 액세스에 도움이 되는 세부 정보를 제공합니다.
검증
- director 가이드를 사용하여 Red Hat OpenStack Platform 설치 및 관리에서 오버클라우드 배포 검증 단계를 수행합니다.
NIC가 올바르게 분할되었는지 확인하려면 다음을 수행하십시오.
오버클라우드 컴퓨팅 노드에
tripleo-admin
으로 로그인하고 VF 수를 확인합니다.예제
이 예에서
p4p1
및p4p2
모두에 대한 VF 수는10
입니다.$ sudo cat /sys/class/net/p4p1/device/sriov_numvfs 10 $ sudo cat /sys/class/net/p4p2/device/sriov_numvfs 10
OVS 연결을 표시합니다.
$ sudo ovs-vsctl show
샘플 출력
출력은 다음과 유사합니다.
b6567fa8-c9ec-4247-9a08-cbf34f04c85f Manager "ptcp:6640:127.0.0.1" is_connected: true Bridge br-sriov2 Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port phy-br-sriov2 Interface phy-br-sriov2 type: patch options: {peer=int-br-sriov2} Port br-sriov2 Interface br-sriov2 type: internal Bridge br-sriov1 Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port phy-br-sriov1 Interface phy-br-sriov1 type: patch options: {peer=int-br-sriov1} Port br-sriov1 Interface br-sriov1 type: internal Bridge br-ex Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port br-ex Interface br-ex type: internal Port phy-br-ex Interface phy-br-ex type: patch options: {peer=int-br-ex} Bridge br-tenant Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port br-tenant tag: 305 Interface br-tenant type: internal Port phy-br-tenant Interface phy-br-tenant type: patch options: {peer=int-br-tenant} Port dpdkbond0 Interface dpdk0 type: dpdk options: {dpdk-devargs="0000:18:0e.0"} Interface dpdk1 type: dpdk options: {dpdk-devargs="0000:18:0a.0"} Bridge br-tun Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port vxlan-98140025 Interface vxlan-98140025 type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.37"} Port br-tun Interface br-tun type: internal Port patch-int Interface patch-int type: patch options: {peer=patch-tun} Port vxlan-98140015 Interface vxlan-98140015 type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.21"} Port vxlan-9814009f Interface vxlan-9814009f type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.159"} Port vxlan-981400cc Interface vxlan-981400cc type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.204"} Bridge br-int Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port int-br-tenant Interface int-br-tenant type: patch options: {peer=phy-br-tenant} Port int-br-ex Interface int-br-ex type: patch options: {peer=phy-br-ex} Port int-br-sriov1 Interface int-br-sriov1 type: patch options: {peer=phy-br-sriov1} Port patch-tun Interface patch-tun type: patch options: {peer=patch-int} Port br-int Interface br-int type: internal Port int-br-sriov2 Interface int-br-sriov2 type: patch options: {peer=phy-br-sriov2} Port vhu4142a221-93 tag: 1 Interface vhu4142a221-93 type: dpdkvhostuserclient options: {vhost-server-path="/var/lib/vhost_sockets/vhu4142a221-93"} ovs_version: "2.13.2"
SR-IOV 컴퓨팅 노드에
tripleo-admin
으로 로그인하고 Linux 본딩을 확인합니다.$ cat /proc/net/bonding/<bond_name>
샘플 출력
출력은 다음과 유사합니다.
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eno3v1 MII Status: up MII Polling Interval (ms): 0 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 Slave Interface: eno3v1 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 4e:77:94:bd:38:d2 Slave queue ID: 0 Slave Interface: eno4v1 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 4a:74:52:a7:aa:7c Slave queue ID: 0
OVS 본딩을 나열합니다.
$ sudo ovs-appctl bond/show
샘플 출력
출력은 다음과 유사합니다.
---- dpdkbond0 ---- bond_mode: balance-slb bond may use recirculation: no, Recirc-ID : -1 bond-hash-basis: 0 updelay: 0 ms downdelay: 0 ms next rebalance: 9491 ms lacp_status: off lacp_fallback_ab: false active slave mac: ce:ee:c7:58:8e:b2(dpdk1) slave dpdk0: enabled may_enable: true slave dpdk1: enabled active slave may_enable: true
-
NovaPCIPassthrough
를 사용하여 인스턴스에 VF를 전달하는 경우 SR-IOV 인스턴스를 배포하여 테스트합니다.
추가 리소스
- director 가이드를 사용하여 Red Hat OpenStack Platform 설치 및 관리에서 오버클라우드 생성
- 명령줄 인터페이스 참조에 overcloud deploy
- 7.10절. “SR-IOV 또는 OVS TC-flower 하드웨어 오프로드 환경에서 인스턴스 생성”