Azure Virtual Network에 Azure Load Testing을 배포하여 프라이빗 엔드포인트 테스트
이 문서에서는 Azure Load Testing을 사용하여 프라이빗 애플리케이션 엔드포인트를 테스트하는 방법을 알아봅니다. Azure Load Testing 리소스를 만들고 가상 네트워크(가상 네트워크 주입) 내에서 부하를 만들도록 설정합니다.
이 기능을 사용하면 다음과 같은 사용 시나리오가 가능합니다.
- Azure Virtual Network에 배포된 엔드포인트에 대한 부하를 생성합니다.
- 클라이언트 IP 주소 제한과 같은 액세스 제한이 있는 공용 엔드포인트에 부하를 생성합니다.
- 공개적으로 액세스할 수 없고 ExpressRoute를 통해 Azure에 연결된 온-프레미스 서비스에 부하를 생성합니다.
가상 네트워크에서 Azure Load Testing 배포 시나리오에 대해 자세히 알아봅니다.
다음 다이어그램은 기술 개요를 제공합니다.
부하 테스트를 시작하면 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)에 위임하면 안 됩니다. 서브넷 위임에 대해 자세히 알아봅니다.
- 서브넷에 IPv6을 사용하도록 설정하면 안 됩니다. Azure Load Testing은 IPv6 지원 서브넷을 지원하지 않습니다. Azure Virtual Network용 IPv6에 대해 자세히 알아보기
- 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에 대한 아웃바운드 액세스를 구성하려면 다음을 수행합니다.
Azure Portal에 로그인합니다.
네트워크 보안 그룹으로 이동합니다.
아직 NSG가 없는 경우 다음 단계에 따라 네트워크 보안 그룹을 만듭니다.
가상 네트워크와 동일한 지역에 NSG를 만든 다음 서브넷과 연결합니다.
왼쪽 탐색 메뉴에서 아웃바운드 보안 규칙을 선택합니다.
새 아웃바운드 보안 규칙을 추가하려면 + 추가를 선택합니다. 새 규칙을 만들려면 다음 정보를 입력하세요.
필드 값 Source 모두 원본 포트 범위 * 대상 모두 대상 포트 범위 * 이름 azure-load-testing-outbound 설명 부하 테스트 조정과 관련된 다양한 작업에 사용됩니다. 추가를 선택하여 네트워크 보안 그룹에 아웃바운드 보안 규칙을 추가합니다.
부하 테스트 스크립트 구성
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에서 가상 네트워크 구성
부하 테스트 만들기/업데이트 마법사에서 가상 네트워크 구성 설정을 지정할 수 있습니다.
Azure 구독에 대한 자격 증명을 사용하여 Azure Portal에 로그인합니다.
Azure Load Testing 리소스로 이동하고 왼쪽 창에서 Tests를 선택합니다.
다음 두 가지 방법 중 하나로 부하 테스트 만들기/업데이트 마법사를 엽니다.
새 테스트를 만들려면 + 만들기 > JMeter 스크립트 업로드를 선택합니다.
목록에서 기존 테스트를 선택한 다음 편집을 선택합니다.
부하 탭에서 프라이빗 트래픽 모드를 선택한 다음 가상 네트워크와 서브넷을 선택합니다.
가상 네트워크에 여러 서브넷이 있는 경우 삽입된 테스트 엔진 VM을 호스팅할 서브넷을 선택해야 합니다.
Important
가상 네트워크를 관리할 수 있는 충분한 권한이 있는지 확인합니다. 네트워크 기여자 역할이 필요합니다.
(선택 사항) 서브넷에 공용 IP 주소, 부하 분산 장치 및 네트워크 보안 그룹을 배포하지 않으려면 공용 IP 배포 사용 안 함을 선택합니다.
이 옵션을 선택하면 Azure NAT Gateway, Azure Firewall 또는 NVA(네트워크 가상 어플라이언스)와 같은 대체 메커니즘이 있는지 확인하여 서브넷에서의 아웃바운드 트래픽 라우팅을 사용하도록 설정합니다.
부하 테스트 정보를 검토하거나 입력합니다. 다음 단계에 따라 테스트를 만들거나 관리합니다.
검토 + 만들기를 선택한 다음 만들기(또는 기존 테스트를 업데이트하는 경우 적용)를 선택합니다.
부하 테스트가 시작되면 Azure Load Testing은 가상 네트워크 및 서브넷에 테스트 엔진 VM을 삽입합니다. 이제 테스트 스크립트는 가상 네트워크에서 프라이빗으로 호스트되는 애플리케이션 엔드포인트에 액세스할 수 있습니다.
CI/CD 파이프라인에 대한 가상 네트워크 구성
가상 네트워크 설정으로 부하 테스트를 구성하려면 YAML 테스트 구성 파일을 업데이트합니다.
터미널을 열고 Azure CLI를 사용하여 Azure 구독에 로그인합니다.
az login az account set --subscription <your-Azure-Subscription-ID>
서브넷 ID를 검색하고 결과 값을 복사합니다.
az network vnet subnet show -g <your-resource-group> --vnet-name <your-vnet-name> --name <your-subnet-name> --query id
선호하는 편집기에서 YAML 테스트 구성 파일을 엽니다.
구성 파일에
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
가상 네트워크를 관리할 수 있는 충분한 권한이 있는지 확인합니다. 네트워크 기여자 역할이 필요합니다.
YAML 구성 파일을 저장하고 변경 내용을 소스 코드 리포지토리에 커밋합니다.
CI/CD 워크플로가 트리거되면 부하 테스트가 시작되고 이제 가상 네트워크에서 프라이빗으로 호스트되는 애플리케이션 엔드포인트에 액세스할 수 있습니다.
문제 해결
프라이빗 엔드포인트에 대한 부하 테스트를 만들고 실행하는 문제를 해결하려면 프라이빗 엔드포인트 테스트 문제를 해결하는 방법을 참조 하세요.
다음 단계
- 가상 네트워크에서 Azure Load Testing을 배포하기 위한 시나리오에 대해 자세히 알아봅니다.
- 프라이빗 엔드포인트 테스트 문제를 해결하는 방법을 알아봅니다.