9.2. QoS 정책을 위한 네트워킹 서비스 구성

RHOSP(Red Hat OpenStack Platform) 네트워킹 서비스(neutron)의 서비스 품질은 qos 서비스 플러그인을 통해 제공됩니다. ML2/OVS 및 ML2/OVN 메커니즘 드라이버를 사용하면 기본적으로 qos 가 로드됩니다. 그러나 ML2/SR-IOV에는 적용되지 않습니다.

ML2/OVS 및 ML2/SR-IOV 메커니즘 드라이버와 함께 qos 서비스 플러그인을 사용하는 경우 해당 에이전트에 qos 확장 프로그램을 로드해야 합니다.

다음 목록에는 QoS용 네트워킹 서비스를 구성하기 위해 수행해야 하는 작업이 요약되어 있습니다. 작업 세부 정보는 이 목록에 따릅니다.

  • 모든 유형의 QoS 정책에 대해:

    • qos 서비스 플러그인을 추가합니다.
    • 에이전트(OVS 및 SR-IOV만 해당)의 qos 확장을 추가합니다.
  • 최소 대역폭 정책을 사용하여 VM 인스턴스를 예약하기 위한 추가 작업만 수행합니다.

    • Compute 서비스(nova)에서 사용하는 이름과 다른 하이퍼바이저 이름을 지정합니다.
    • 각 컴퓨팅 노드에서 관련 에이전트에 대한 리소스 공급자 수신 및 송신 대역폭을 구성합니다.
    • (선택 사항) vnic_types 를 지원하지 않는 것으로 표시합니다.
  • 터널링에서만 ML/OVS를 사용하는 시스템에서 DSCP 마킹 정책에 대한 추가 작업:

    • dscp_inherittrue 로 설정합니다.

사전 요구 사항

  • RHOSP 언더클라우드에 액세스할 수 있는 stack 사용자여야 합니다.

절차

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

    $ source ~/stackrc
  3. qos 서비스 플러그인이 아직 로드되지 않았는지 확인합니다.

    $ openstack network qos policy list

    qos 서비스 플러그인이 로드되지 않은 경우 ResourceNotFound 오류가 발생합니다. 오류가 표시되지 않으면 플러그인이 로드되고 이 항목의 단계를 수행할 필요가 없습니다.

  4. YAML 사용자 지정 환경 파일을 생성합니다.

    예제

    $ vi /home/stack/templates/my-neutron-environment.yaml

  5. 환경 파일에는 parameter_defaults 키워드가 포함되어야 합니다. 아래 새 행에서 parameter_defaultsNeutronServicePlugins 매개변수에 qos 를 추가합니다.

    parameter_defaults:
       NeutronServicePlugins: "qos"
  6. ML2/OVS 및 ML2/SR-IOV 메커니즘 드라이버를 사용하는 경우 NeutronAgentExtensions 또는 NeutronSriovAgentExtensions 변수를 각각 사용하여 에이전트에 qos 확장을 로드해야 합니다.

    • ML2/OVS

      parameter_defaults:
        NeutronServicePlugins: "qos"
        NeutronAgentExtensions: "qos"
    • ML2/SR-IOV

      parameter_defaults:
        NeutronServicePlugins: "qos"
        NeutronSriovAgentExtensions: "qos"
  7. 최소 대역폭 QoS 정책을 사용하여 VM 인스턴스를 예약하려면 다음을 수행해야 합니다.

    1. 플러그인 목록에 배치를 추가하고 목록에 qos:도 포함되어 있는지 확인하십시오.

      parameter_defaults:
         NeutronServicePlugins: "qos,placement"
    2. 하이퍼바이저 이름이 Compute 서비스(nova)에서 사용하는 표준 하이퍼바이저 이름과 일치하는 경우 7.iii 단계로 건너뜁니다.

      하이퍼바이저 이름이 Compute 서비스에서 사용하는 표준 하이퍼바이저 이름과 일치하지 않는 경우 resource_provider_default_hypervisor 를 사용하여 대체 하이퍼바이저 이름을 지정합니다.

      • ML2/OVS

        parameter_defaults:
          NeutronServicePlugins: "qos,placement"
          ExtraConfig:
            Neutron::agents::ml2::ovs::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}
      • ML2/SR-IOV

        parameter_defaults:
          NeutronServicePlugins: "qos,placement"
          ExtraConfig:
            Neutron::agents::ml2::sriov::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}
        중요

        대체 하이퍼바이저 이름을 설정하는 또 다른 방법은 resource_provider_hypervisor 를 사용하는 것입니다.

        • ML2/OVS

          parameter_defaults:
            ExtraConfig:
               Neutron::agents::ml2::ovs::resource_provider_hypervisors:"ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"
        • ML2/SR-IOV

          parameter_defaults:
            ExtraConfig:
               Neutron::agents::ml2::sriov::resource_provider_hypervisors:
               "ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"
    3. 최소 대역폭을 제공해야 하는 각 컴퓨팅 노드에서 관련 에이전트에 대한 리소스 공급자 수신 및 송신 대역폭을 구성합니다.

      다음 형식을 사용하여 송신, 수신 또는 둘 다를 구성할 수 있습니다.

      • kbps에서 송신 대역폭만 구성합니다.

        NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:,<bridge1>:<egress_kbps>:,...,<bridgeN>:<egress_kbps>:
      • kbps에서 수신 대역폭만 구성합니다.

        NeutronOvsResourceProviderBandwidths: <bridge0>::<ingress_kbps>,<bridge1>::<ingress_kbps>,...,<bridgeN>::<ingress_kbps>
      • kbps에서 송신 및 수신 대역폭을 둘 다 구성합니다.

        NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:<ingress_kbps>,<bridge1>:<egress_kbps>:<ingress_kbps>,...,<bridgeN>:<egress_kbps>:<ingress_kbps>

        예 - OVS 에이전트

        OVS 에이전트에 대한 리소스 공급자 수신 및 송신 대역폭을 구성하려면 네트워크 환경 파일에 다음 구성을 추가합니다.

        parameter_defaults:
          ...
          NeutronBridgeMappings: physnet0:br-physnet0
          NeutronOvsResourceProviderBandwidths: br-physnet0:10000000:10000000

        예 - SRIOV 에이전트

        SRIOV 에이전트에 대한 리소스 공급자 수신 및 송신 대역폭을 구성하려면 네트워크 환경 파일에 다음 구성을 추가합니다.

        parameter_defaults:
          ...
          NeutronML2PhysicalNetworkMtus: physnet0:1500,physnet1:1500
          NeutronSriovResourceProviderBandwidths: ens5:40000000:40000000,ens6:40000000:40000000
    4. 선택 사항: 배치 서비스에서 여러 ML2 메커니즘 드라이버가 이를 지원하고 여러 에이전트가 추적되는 경우 vnic_types 를 지원하지 않는 것으로 표시하려면 다음 설정도 환경 파일에 추가합니다.

      예 - OVS 에이전트

      parameter_defaults:
        ...
        NeutronOvsVnicTypeBlacklist: direct

      예 - SRIOV 에이전트

      parameter_defaults:
        ...
        NeutronSriovVnicTypeBlacklist: direct

  8. DSCP 표시 정책을 생성하고 터널링 프로토콜(VXLAN 또는 GRE)을 사용하여 ML2/OVS를 사용하려는 경우 NeutronAgentExtensions 에서 다음 행을 추가합니다.

    parameter_defaults:
      ...
      ControllerExtraConfig:
        neutron::config::server_config:
            agent/dscp_inherit:
                value: true

    dscp_inherittrue 인 경우 Networking 서비스는 내부 헤더의 DSCP 값을 외부 헤더에 복사합니다.

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

    중요

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

    예제

    $ openstack overcloud deploy --templates \
    -e <other_environment_files> \
    -e /home/stack/templates/my-neutron-environment.yaml

검증

  • qos 서비스 플러그인이 로드되었는지 확인합니다.

    $ openstack network qos policy list

    qos 서비스 플러그인이 로드되면 ResourceNotFound 오류가 발생하지 않습니다.