Share via


Azure Virtual Network에 Azure Load Testing을 배포하여 프라이빗 엔드포인트 테스트

이 문서에서는 Azure Load Testing을 사용하여 프라이빗 애플리케이션 엔드포인트를 테스트하는 방법을 알아봅니다. Azure Load Testing 리소스를 만들고 가상 네트워크(가상 네트워크 주입) 내에서 부하를 만들도록 설정합니다.

이 기능을 사용하면 다음과 같은 사용 시나리오가 가능합니다.

  • Azure Virtual Network에 배포된 엔드포인트에 대한 부하를 생성합니다.
  • 클라이언트 IP 주소 제한과 같은 액세스 제한이 있는 공용 엔드포인트에 부하를 생성합니다.
  • 공개적으로 액세스할 수 없고 ExpressRoute를 통해 Azure에 연결된 온-프레미스 서비스에 부하를 생성합니다.

가상 네트워크에서 Azure Load Testing 배포 시나리오에 대해 자세히 알아봅니다.

다음 다이어그램은 기술 개요를 제공합니다.

Diagram that shows the Azure Load Testing virtual network injection technical overview.

부하 테스트를 시작하면 Azure Load Testing 서비스는 애플리케이션 엔드포인트를 포함하는 가상 네트워크에 다음 Azure 리소스를 삽입합니다.

  • 테스트 엔진 가상 머신. 이러한 VM은 부하 테스트 중에 애플리케이션 엔드포인트를 호출합니다.
  • 공용 IP 주소.
  • 네트워크 보안 그룹(NSG).
  • Azure Load Balancer.

이러한 리소스는 일시적이며 부하 테스트 실행 중에만 존재합니다. 서브넷에서 공용 IP 주소, Azure 부하 분산 장치 또는 네트워크 보안 그룹의 배포에 제한이 있는 경우 이러한 리소스의 배포를 사용하지 않도록 설정할 수 있습니다. 자세한 내용은 부하 테스트 구성을 참조하세요.

가상 네트워크에 대한 액세스를 제한하는 경우 이러한 Azure Load Testing과 삽입된 VM 간의 통신을 사용하도록 가상 네트워크를 구성해야 합니다.

필수 조건

  • Azure 계정에는 가상 네트워크에서 네트워크 기여자 역할 또는 이 역할의 부모 역할이 필요합니다. 권한을 확인하려면 Azure 리소스에 대한 사용자 액세스 확인을 참조하세요.
  • Azure Load Testing에 사용하는 서브넷에는 테스트에 대한 부하 테스트 엔진 수를 수용할 수 있도록 할당되지 않은 IP 주소가 충분해야 합니다. 대규모 부하에 대한 테스트 구성에 대해 자세히 알아봅니다.
  • 서브넷은 다른 Azure 서비스에 위임하면 안 됩니다. 예를 들어, ACI(Azure Container Instances)에 위임하면 안 됩니다. 서브넷 위임에 대해 자세히 알아봅니다.
  • Azure CLI 버전 2.2.0 이상(CI/CD를 사용하는 경우). 컴퓨터에 설치된 버전을 찾으려면 az --version을 실행합니다. Azure CLI를 설치하거나 업그레이드해야 하는 경우 Azure CLI 설치 방법을 참조하세요.

가상 네트워크 구성.

프라이빗 엔드포인트를 테스트하려면 Azure Load Testing을 Azure 가상 네트워크에 연결합니다. 가상 네트워크에는 하나 이상의 서브넷이 있어야 하며 Azure Load Testing 서비스에 대한 아웃바운드 트래픽을 허용해야 합니다.

가상 네트워크가 아직 없는 경우 다음 단계에 따라 Azure Portal에서 Azure 가상 네트워크를 만듭니다.

Important

가상 네트워크는 부하 테스트 리소스와 동일한 구독 및 동일한 지역에 있어야 합니다.

서브넷 만들기

가상 네트워크에 Azure Load Testing을 배포할 때 Azure Load Testing과 애플리케이션 엔드포인트에 별도의 서브넷을 사용하는 것이 좋습니다. 이 방식을 사용하면 각 목적에 맞게 네트워크 트래픽 액세스 정책을 구체적으로 구성할 수 있습니다. 가상 네트워크에 서브넷을 추가하는 방법에 대해 자세히 알아봅니다.

(선택 사항) 트래픽 규칙 구성

Azure Load Testing을 사용하려면 가상 네트워크에 삽입된 VM에 대해 Azure Load Testing 서비스에 대한 아웃바운드 액세스를 허용해야 합니다. 기본적으로 가상 네트워크를 만들 때 아웃바운드 액세스가 이미 허용됩니다.

네트워크 보안 그룹을 사용하여 가상 네트워크에 대한 액세스를 추가로 제한하거나 네트워크 보안 그룹이 이미 있는 경우 테스트 엔진 VM에서 Azure Load Testing 서비스로의 트래픽을 허용하도록 아웃바운드 보안 규칙을 구성해야 합니다.

Azure Load Testing에 대한 아웃바운드 액세스를 구성하려면 다음을 수행합니다.

  1. Azure Portal에 로그인합니다.

  2. 네트워크 보안 그룹으로 이동합니다.

    아직 NSG가 없는 경우 다음 단계에 따라 네트워크 보안 그룹을 만듭니다.

    가상 네트워크와 동일한 지역에 NSG를 만든 다음 서브넷과 연결합니다.

  3. 왼쪽 탐색 메뉴에서 아웃바운드 보안 규칙을 선택합니다.

    Screenshot that shows the network security group overview page in the Azure portal, highlighting Outbound security rules.

  4. 새 아웃바운드 보안 규칙을 추가하려면 + 추가를 선택합니다. 새 규칙을 만들려면 다음 정보를 입력하세요.

    필드
    Source 모두
    원본 포트 범위 *
    대상 모두
    대상 포트 범위 *
    이름 azure-load-testing-outbound
    설명 부하 테스트 조정과 관련된 다양한 작업에 사용됩니다.
  5. 추가를 선택하여 네트워크 보안 그룹에 아웃바운드 보안 규칙을 추가합니다.

부하 테스트 스크립트 구성

JMeter 스크립트를 실행하는 테스트 엔진 VM은 애플리케이션 엔드포인트가 포함된 가상 네트워크에 삽입됩니다. 이제 개인 IP 주소를 사용하거나 네트워크에서 이름 확인을 사용하여 JMX 파일의 엔드포인트를 직접 참조할 수 있습니다.

예를 들어, IP 주소가 10.179.0.7인 엔드포인트의 경우 서브넷 범위가 10.179.0.0/18인 가상 네트워크에서 JMX 파일은 다음 정보를 가질 수 있습니다.

<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Internal service homepage" enabled="true">
  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Service homepage" enabled="true">
    <collectionProp name="Arguments.arguments"/>
  </elementProp>
  <stringProp name="HTTPSampler.domain">10.179.0.7</stringProp>
  <stringProp name="HTTPSampler.port">8081</stringProp>
  <stringProp name="HTTPSampler.protocol"></stringProp>
  <stringProp name="HTTPSampler.contentEncoding"></stringProp>
  <stringProp name="HTTPSampler.path"></stringProp>
  <stringProp name="HTTPSampler.method">GET</stringProp>
</HTTPSamplerProxy>

부하 테스트 구성

부하 테스트에 프라이빗으로 호스트된 엔드포인트를 포함하려면 부하 테스트에 대한 가상 네트워크 설정을 구성해야 합니다. Azure Portal에서 가상 네트워크 설정을 구성하거나 CI/CD 파이프라인용 YAML 테스트 구성 파일에서 지정할 수 있습니다.

Important

가상 네트워크에 Azure Load Testing을 배포하면 추가 요금이 발생합니다. Azure Load Testing은 구독에 Azure Load Balancer공용 IP 주소를 배포하며 생성된 트래픽에 대한 비용이 있을 수 있습니다. 자세한 내용은 Virtual Network 가격 책정 정보를 참조하세요.

Azure Portal에서 가상 네트워크 구성

부하 테스트 만들기/업데이트 마법사에서 가상 네트워크 구성 설정을 지정할 수 있습니다.

  1. Azure 구독에 대한 자격 증명을 사용하여 Azure Portal에 로그인합니다.

  2. Azure Load Testing 리소스로 이동하고 왼쪽 창에서 Tests를 선택합니다.

  3. 다음 두 가지 방법 중 하나로 부하 테스트 만들기/업데이트 마법사를 엽니다.

    • 새 테스트를 만들려면 + 만들기 > JMeter 스크립트 업로드를 선택합니다.

      Screenshot that shows the Tests page, highlighting the button for creating a new test.

    • 목록에서 기존 테스트를 선택한 다음 편집을 선택합니다.

      Screenshot that shows the Tests page, highlighting the button for editing a test.

  4. 부하 탭에서 프라이빗 트래픽 모드를 선택한 다음 가상 네트워크와 서브넷을 선택합니다.

    가상 네트워크에 여러 서브넷이 있는 경우 삽입된 테스트 엔진 VM을 호스팅할 서브넷을 선택해야 합니다.

    Screenshot that shows the Load tab for creating or updating a load test.

    Important

    가상 네트워크를 관리할 수 있는 충분한 권한이 있는지 확인합니다. 네트워크 기여자 역할이 필요합니다.

  5. (선택 사항) 서브넷에 공용 IP 주소, 부하 분산 장치 및 네트워크 보안 그룹을 배포하지 않으려면 공용 IP 배포 사용 안 함을 선택합니다.

    이 옵션을 선택하면 Azure NAT Gateway, Azure Firewall 또는 NVA(네트워크 가상 어플라이언스)와 같은 대체 메커니즘이 있는지 확인하여 서브넷에서의 아웃바운드 트래픽 라우팅을 사용하도록 설정합니다.

  6. 부하 테스트 정보를 검토하거나 입력합니다. 다음 단계에 따라 테스트를 만들거나 관리합니다.

  7. 검토 + 만들기를 선택한 다음 만들기(또는 기존 테스트를 업데이트하는 경우 적용)를 선택합니다.

    부하 테스트가 시작되면 Azure Load Testing은 가상 네트워크 및 서브넷에 테스트 엔진 VM을 삽입합니다. 이제 테스트 스크립트는 가상 네트워크에서 프라이빗으로 호스트되는 애플리케이션 엔드포인트에 액세스할 수 있습니다.

CI/CD 파이프라인에 대한 가상 네트워크 구성

가상 네트워크 설정으로 부하 테스트를 구성하려면 YAML 테스트 구성 파일을 업데이트합니다.

  1. 터미널을 열고 Azure CLI를 사용하여 Azure 구독에 로그인합니다.

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. 서브넷 ID를 검색하고 결과 값을 복사합니다.

    az network vnet subnet show -g <your-resource-group> --vnet-name <your-vnet-name> --name <your-subnet-name> --query id
    
  3. 선호하는 편집기에서 YAML 테스트 구성 파일을 엽니다.

  4. 구성 파일에 subnetId 속성을 추가하고 이전에 복사한 서브넷 ID를 제공합니다.

    version: v0.1
    testName: SampleTest
    testPlan: SampleTest.jmx
    description: 'Load test the website home page'
    engineInstances: 1
    subnetId: <your-subnet-id>
    publicIPDisabled: False
    

    필요에 따라 publicIPDisabled 속성을 True로 설정할 수 있습니다. YAML 구성에 대한 자세한 내용은 테스트 구성 YAML 참조를 참조하세요.

    Important

    가상 네트워크를 관리할 수 있는 충분한 권한이 있는지 확인합니다. 네트워크 기여자 역할이 필요합니다.

  5. YAML 구성 파일을 저장하고 변경 내용을 소스 코드 리포지토리에 커밋합니다.

  6. CI/CD 워크플로가 트리거되면 부하 테스트가 시작되고 이제 가상 네트워크에서 프라이빗으로 호스트되는 애플리케이션 엔드포인트에 액세스할 수 있습니다.

문제 해결

부하 테스트 만들기 또는 업데이트가 Subscription not registered with Microsoft.Batch (ALTVNET001) 오류와 함께 실패함

가상 네트워크에서 부하 테스트를 구성할 때 Microsoft.Batch에 구독을 등록해야 합니다.

  1. 몇 분 후에 부하 테스트를 다시 만들거나 업데이트해 보세요.

  2. 오류가 지속되면 다음 단계에 따라 Microsoft.Batch 리소스 공급자에 수동으로 구독을 등록합니다.

부하 테스트 만들기 또는 업데이트가 Subnet is not in the Succeeded state (ALTVNET002) 오류와 함께 실패함

부하 테스트에 사용 중인 서브넷이 Succeeded 상태가 아니며 부하 테스트를 배포할 준비가 되지 않았습니다.

  1. 서브넷의 상태를 확인합니다.

    다음 Azure CLI 명령을 실행하여 상태를 확인합니다. 결과는 Succeeded여야 합니다.

    az network vnet subnet show -g MyResourceGroup -n MySubnet --vnet-name MyVNet
    
  2. 서브넷과 관련된 모든 문제를 해결합니다. 방금 서브넷을 만든 경우 몇 분 후에 상태를 다시 확인합니다.

  3. 또는 부하 테스트를 위해 다른 서브넷을 선택합니다.

부하 테스트 만들기 또는 업데이트가 Subnet is delegated to other service (ALTVNET003) 오류와 함께 실패함

부하 테스트 배포에 사용하는 서브넷은 다른 Azure 서비스에 위임할 수 없습니다. 기존 위임을 제거하거나 서비스에 위임되지 않은 다른 서브넷을 선택합니다.

서브넷 위임 추가 또는 제거에 대해 자세히 알아봅니다.

User doesn't have subnet/join/action permission on the virtual network (ALTVNET004)를 나타내며 부하 테스트를 업데이트 또는 시작하지 못함

부하 테스트를 업데이트하거나 시작하려면 가상 네트워크에 Azure Load Testing을 배포할 수 있는 충분한 권한이 있어야 합니다. 가상 네트워크에서 네트워크 기여자 역할 또는 이 역할의 부모 역할이 필요합니다.

  1. 권한을 확인하려면 Azure 리소스에 대한 사용자 액세스 확인을 참조하세요.

  2. 계정에 네트워크 기여자 역할을 할당하려면 다음 단계를 따릅니다.

부하 테스트 만들기 또는 업데이트가 IPv6 enabled subnet not supported (ALTVNET005) 오류와 함께 실패함

Azure Load Testing은 IPv6 지원 서브넷을 지원하지 않습니다. IPv6이 사용하도록 설정되지 않은 다른 서브넷을 선택합니다.

부하 테스트 만들기 또는 업데이트가 NSG attached to subnet is not in Succeeded state (ALTVNET006) 오류와 함께 실패함

서브넷에 연결된 NSG(네트워크 보안 그룹)가 Succeeded 상태가 아닙니다.

  1. NSG의 상태를 확인합니다.

    다음 Azure CLI 명령을 실행하여 상태를 확인합니다. 결과는 Succeeded여야 합니다.

    az network nsg show -g MyResourceGroup -n MyNsg
    
  2. NSG의 모든 문제를 해결합니다. 방금 NSG 또는 서브넷을 만든 경우 몇 분 후에 상태를 다시 확인합니다.

  3. 또는 다른 NSG를 선택합니다.

부하 테스트 만들기 또는 업데이트가 Route Table attached to subnet is not in Succeeded state (ALTVNET007) 오류와 함께 실패함

서브넷에 연결된 경로 테이블이 Succeeded 상태가 아닙니다.

  1. 경로 테이블의 상태를 확인합니다.

    다음 Azure CLI 명령을 실행하여 상태를 확인합니다. 결과는 Succeeded여야 합니다.

    az network route-table show -g MyResourceGroup -n MyRouteTable
    
  2. 경로 테이블의 모든 문제를 해결합니다. 경로 테이블 또는 서브넷을 방금 만든 경우 몇 분 후에 상태를 다시 확인합니다.

  3. 또는 다른 경로 테이블을 선택합니다.

부하 테스트 만들기 또는 업데이트가 Inbound not allowed from AzureLoadTestingInstanceManagement service tag (ALTVNET008) 오류와 함께 실패함

AzureLoadTestingInstanceManagement 서비스 태그에서 가상 네트워크로의 인바운드 액세스는 허용되지 않습니다.

AzureLoadTestingInstanceManagement 서비스 태그에 대한 트래픽 액세스를 사용하도록 설정하려면 다음 단계를 따릅니다.

부하 테스트 만들기 또는 업데이트가 Inbound not allowed from BatchNodeManagement service tag (ALTVNET009) 오류와 함께 실패함

BatchNodeManagement 서비스 태그에서 가상 네트워크로의 인바운드 액세스는 허용되지 않습니다.

BatchNodeManagement 서비스 태그에 대한 인바운드 액세스를 사용하도록 설정하려면 다음 단계를 따릅니다.

부하 테스트 만들기 또는 업데이트가 Route Table has next hop set for address prefix 0.0.0.0/0 오류와 함께 실패함

서브넷 경로 테이블에는 경로 0.0.0.0/0에 대해 가상 어플라이언스로 설정된 다음 홉 집합 형식이 있습니다. 이 구성은 서브넷에서 가상 머신을 프로비전하는 동안 네트워크 패킷에 대한 비대칭 라우팅을 유발합니다.

이 오류를 해결하려면 다음 두 가지 작업 중 하나를 수행합니다.

  • 사용자 지정 경로가 없는 다른 서브넷을 사용합니다.
  • 서브넷 경로 테이블을 수정하고 경로 0.0.0.0/0의 다음 홉 형식을 인터넷으로 설정합니다.

가상 네트워크 트래픽 라우팅에 대해 자세히 알아봅니다.

부하 테스트 만들기 또는 업데이트가 Subnet is in a different subscription than resource (ALTVNET011) 오류와 함께 실패함

가상 네트워크가 Azure Load Testing 리소스와 동일한 구독 및 지역에 있지 않습니다. Azure Virtual Network 또는 Azure Load Testing 리소스를 동일한 구독 및 지역으로 이동하거나 다시 만듭니다.

프로비전 실패(An azure policy is restricting engine deployment to your subscription (ALTVNET012))

Azure 정책은 부하 테스트 엔진 배포를 구독으로 제한하고 있습니다. 정책 제한을 확인하고 다시 시도합니다. 공용 IP 주소, Azure 부하 분산 장치 또는 네트워크 보안 그룹의 배포에 대한 정책 제한이 있는 경우 이러한 리소스의 배포를 사용하지 않도록 설정할 수 있습니다. 부하 테스트 구성을 참조하세요.

프로비전 실패(Engines could not be deployed due to an error in subnet configuration (ALTVNET013))

서브넷 구성 오류로 인해 부하 테스트 엔진 인스턴스를 배포할 수 없습니다. 서브넷 구성을 확인합니다. 문제가 지속되면 테스트의 실행 ID와 함께 지원팀에 티켓을 제출합니다.

  1. 서브넷의 상태를 확인합니다.

    다음 Azure CLI 명령을 실행하여 상태를 확인합니다. 결과는 Succeeded여야 합니다.

    az network vnet subnet show -g MyResourceGroup -n MySubnet --vnet-name MyVNet
    
  2. 서브넷과 관련된 모든 문제를 해결합니다. 방금 서브넷을 만든 경우 몇 분 후에 상태를 다시 확인합니다.

  3. 문제가 지속되면 온라인 고객 지원 요청을 시작합니다.

    지원 요청 내에서 부하 테스트 실행 ID를 제공합니다.

부하 테스트 시작이 Subnet has {0} free IPs, {1} more free IP(s) required to run {2} engine instance load test (ALTVNET014) 오류와 함께 실패함

Azure Load Testing에 사용하는 서브넷에는 테스트에 대한 부하 테스트 엔진 수를 수용할 수 있도록 할당되지 않은 IP 주소가 충분해야 합니다.

서브넷 설정을 업데이트하고 IP 주소 범위를 늘리려면 다음 단계를 따릅니다.

부하 테스트 시작이 Management Lock is enabled on Resource Group of VNET (ALTVNET015) 오류와 함께 실패함

가상 네트워크가 포함된 리소스 그룹에 잠금이 있는 경우 서비스는 가상 네트워크에 테스트 엔진 가상 머신을 삽입할 수 없습니다. 부하 테스트를 실행하기 전에 관리 잠금을 제거합니다. Azure Portal에서 잠금을 구성하는 방법을 알아봅니다.

부하 테스트 시작이 Insufficient public IP address quota in VNET subscription (ALTVNET016) 오류와 함께 실패함

부하 테스트를 시작하면 Azure Load Testing은 애플리케이션 엔드포인트를 포함하는 가상 네트워크에 다음 Azure 리소스를 삽입합니다.

  • 테스트 엔진 가상 머신. 이러한 VM은 부하 테스트 중에 애플리케이션 엔드포인트를 호출합니다.
  • 공용 IP 주소.
  • 네트워크 보안 그룹(NSG).
  • Azure Load Balancer.

부하 테스트에서 사용할 수 있도록 구독에서 하나 이상의 공용 IP 주소에 대한 할당량을 사용할 수 있는지 확인합니다.

부하 테스트 시작이 Subnet with name "AzureFirewallSubnet" cannot be used for load testing (ALTVNET017) 오류와 함께 실패함

서브넷 AzureFirewallSubnet은 예약되어 있으며 Azure Load Testing에 사용할 수 없습니다. 부하 테스트에 대해 다른 서브넷을 선택합니다.

다음 단계