Testar pontos de extremidade privados implantando o Teste de Carga do Azure em uma rede virtual do Azure

Neste artigo, saiba como testar pontos de extremidade de aplicativos privados com o Teste de Carga do Azure. Você cria um recurso de Teste de Carga do Azure e permite que ele gere carga de dentro de sua rede virtual (injeção de rede virtual).

Esta funcionalidade possibilita os seguintes cenários de utilização:

  • Gere carga para um ponto de extremidade implantado em uma rede virtual do Azure.
  • Gere carga para um ponto de extremidade público com restrições de acesso, como a restrição de endereços IP do cliente.
  • Gere carga para um serviço local, não acessível publicamente, que esteja conectado ao Azure por meio da Rota Expressa.

Saiba mais sobre os cenários para implantar o Teste de Carga do Azure em sua rede virtual.

O diagrama a seguir fornece uma visão geral técnica:

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

Quando você inicia o teste de carga, o serviço de Teste de Carga do Azure injeta os seguintes recursos do Azure na rede virtual que contém o ponto de extremidade do aplicativo:

  • As máquinas virtuais do mecanismo de teste. Essas VMs invocam o ponto de extremidade do aplicativo durante o teste de carga.
  • Um endereço IP público.
  • Um grupo de segurança de rede (NSG).
  • Um balanceador de carga do Azure.

Esses recursos são efêmeros e existem apenas enquanto o teste de carga está em execução. Se você tiver restrições na implantação de um endereço IP público, balanceador de carga do Azure ou grupo de segurança de rede em sua sub-rede, poderá desabilitar a implantação desses recursos. Para obter mais informações, consulte Configurar o teste de carga.

Se você restringir o acesso à sua rede virtual, precisará configurar sua rede virtual para habilitar a comunicação entre esses Testes de Carga do Azure e as VMs injetadas.

Pré-requisitos

  • Sua conta do Azure tem a função de Colaborador de Rede , ou um pai dessa função, na rede virtual. Consulte Verificar o acesso de um usuário aos recursos do Azure para verificar suas permissões.
  • A sub-rede que você usa para o Teste de Carga do Azure deve ter endereços IP não atribuídos suficientes para acomodar o número de mecanismos de teste de carga para seu teste. Saiba mais sobre como configurar seu teste para carga de alta escala.
  • A sub-rede não deve ser delegada a nenhum outro serviço do Azure. Por exemplo, ele não deve ser delegado às Instâncias de Contêiner do Azure (ACI). Saiba mais sobre a delegação de sub-redes.
  • CLI do Azure versão 2.2.0 ou posterior (se você estiver usando CI/CD). Execute az --version para localizar a versão instalada no seu computador. Se você precisar instalar ou atualizar a CLI do Azure, consulte Como instalar a CLI do Azure.

Configurar uma rede virtual

Para testar pontos de extremidade privados, conecte o Teste de Carga do Azure a uma rede virtual do Azure. A rede virtual deve ter pelo menos uma sub-rede e permitir o tráfego de saída para o serviço de Teste de Carga do Azure.

Se ainda não tiver uma rede virtual, siga estes passos para criar uma rede virtual do Azure no portal do Azure.

Importante

A rede virtual deve estar na mesma assinatura e na mesma região que o recurso de teste de carga.

Criar uma sub-rede

Quando você implanta o Teste de Carga do Azure em sua rede virtual, é recomendável usar sub-redes separadas para o Teste de Carga do Azure e para o ponto de extremidade do aplicativo. Essa abordagem permite configurar políticas de acesso ao tráfego de rede especificamente para cada finalidade. Saiba mais sobre como adicionar uma sub-rede a uma rede virtual.

(Opcional) Configurar regras de tráfego

O Teste de Carga do Azure exige que as VMs injetadas em sua rede virtual tenham acesso de saída ao serviço de Teste de Carga do Azure. Por padrão, quando você cria uma rede virtual, o acesso de saída já é permitido.

Se você planeja restringir ainda mais o acesso à sua rede virtual com um grupo de segurança de rede, ou se já tiver um grupo de segurança de rede, precisará configurar uma regra de segurança de saída para permitir o tráfego das VMs do mecanismo de teste para o serviço de Teste de Carga do Azure.

Para configurar o acesso de saída para o Teste de Carga do Azure:

  1. Inicie sessão no portal do Azure.

  2. Aceda ao seu grupo de segurança de rede.

    Se você ainda não tiver um NSG, siga estas etapas para criar um grupo de segurança de rede.

    Crie o NSG na mesma região da sua rede virtual e, em seguida, associe-o à sua sub-rede.

  3. Selecione Regras de segurança de saída na navegação à esquerda.

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

  4. Selecione + Adicionar para adicionar uma nova regra de segurança de saída. Insira as seguintes informações para criar uma nova regra.

    Campo valor
    Source Qualquer
    Intervalos de portas de origem *
    Destino Qualquer
    Intervalos de portas de destino *
    Nome azure-load-testing-outbound
    Descrição Usado para várias operações envolvidas na orquestração de testes de carga.
  5. Selecione Adicionar para adicionar a regra de segurança de saída ao grupo de segurança de rede.

Configurar o script de teste de carga

As VMs do mecanismo de teste, que executam o script JMeter, são injetadas na rede virtual que contém o ponto de extremidade do aplicativo. Agora você pode consultar diretamente o ponto de extremidade no arquivo JMX usando o endereço IP privado ou usar a resolução de nomes em sua rede.

Por exemplo, para um ponto de extremidade com endereço IP 10.179.0.7, em uma rede virtual com intervalo de sub-rede 10.179.0.0/18, o arquivo JMX pode ter estas informações:

<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>

Configurar o teste de carga

Para incluir pontos de extremidade hospedados de forma privada em seu teste de carga, você precisa definir as configurações de rede virtual para o teste de carga. Você pode definir as configurações de rede virtual no portal do Azure ou especificá-las no arquivo de configuração de teste YAML para pipelines de CI/CD.

Importante

Ao implantar o Teste de Carga do Azure em uma rede virtual, você incorrerá em cobranças adicionais. O Teste de Carga do Azure implanta um Balanceador de Carga do Azure e um endereço IP público em sua assinatura e pode haver um custo para o tráfego gerado. Para obter mais informações, consulte as informações de preços da Rede Virtual.

Configurar a rede virtual no portal do Azure

Você pode especificar as definições de configuração de rede virtual no assistente de criação/atualização de teste de carga.

  1. Entre no portal do Azure usando as credenciais para sua assinatura do Azure.

  2. Vá para o recurso de Teste de Carga do Azure e selecione Testes no painel esquerdo.

  3. Abra o assistente de criação/atualização de teste de carga de duas maneiras:

    • Selecione + Criar > upload de um script JMeter, se quiser criar um novo teste.

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

    • Selecione um teste existente na lista e, em seguida, selecione Editar.

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

  4. No separador Carregar, selecione Modo de tráfego privado e, em seguida, selecione a sua rede virtual e sub-rede.

    Se você tiver várias sub-redes em sua rede virtual, certifique-se de selecionar a sub-rede que hospedará as VMs do mecanismo de teste injetadas.

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

    Importante

    Verifique se você tem permissões suficientes para gerenciar redes virtuais. Você precisa da função de Colaborador de Rede .

  5. (Opcional) Marque Desabilitar implantação de IP público se não quiser implantar um endereço IP público, balanceador de carga e grupo de segurança de rede em sua sub-rede.

    Ao selecionar essa opção, verifique se há um mecanismo alternativo como o Gateway NAT do Azure, o Firewall do Azure ou um dispositivo virtual de rede (NVA) para habilitar o roteamento de tráfego de saída da sub-rede.

  6. Revise ou preencha as informações do teste de carga. Siga estas etapas para criar ou gerenciar um teste.

  7. Selecione Rever + criar e, em seguida, Criar (ou Aplicar, ao atualizar um teste existente).

    Quando o teste de carga é iniciado, o Teste de Carga do Azure injeta as VMs do mecanismo de teste em sua rede virtual e sub-rede. O script de teste agora pode acessar o ponto de extremidade do aplicativo hospedado de forma privada em sua rede virtual.

Configurar a rede virtual para pipelines de CI/CD

Para configurar o teste de carga com suas configurações de rede virtual, atualize o arquivo de configuração de teste YAML.

  1. Abra um terminal e use a CLI do Azure para entrar em sua assinatura do Azure:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. Recupere o ID da sub-rede e copie o valor resultante:

    az network vnet subnet show -g <your-resource-group> --vnet-name <your-vnet-name> --name <your-subnet-name> --query id
    
  3. Abra seu arquivo de configuração de teste YAML em seu editor favorito.

  4. Adicione a subnetId propriedade ao arquivo de configuração e forneça o ID da sub-rede copiado anteriormente:

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

    Opcionalmente, você pode definir a publicIPDisabled propriedade como True. Para obter mais informações sobre a configuração do YAML, consulte Referência do YAML de configuração de teste.

    Importante

    Verifique se você tem permissões suficientes para gerenciar redes virtuais. Você precisa da função de Colaborador de Rede .

  5. Salve o arquivo de configuração do YAML e confirme suas alterações no repositório do código-fonte.

  6. Depois que o fluxo de trabalho de CI/CD for acionado, o teste de carga será iniciado e agora poderá acessar o ponto de extremidade do aplicativo hospedado de forma privada em sua rede virtual.

Resolução de Problemas

A criação ou atualização do teste de carga falha com Subscription not registered with Microsoft.Batch (ALTVNET001)

Quando você configura um teste de carga em uma rede virtual, a assinatura deve ser registrada no Microsoft.Batch.

  1. Tente criar ou atualizar o teste de carga novamente após alguns minutos.

  2. Se o erro persistir, siga estas etapas para registrar sua assinatura com o Microsoft.Batch provedor de recursos manualmente.

A criação ou atualização do teste de carga falha com Subnet is not in the Succeeded state (ALTVNET002)

A sub-rede que você está usando para o teste de carga não está no Succeeded estado e não está pronta para implantar seu teste de carga nela.

  1. Verifique o estado da sub-rede.

    Execute o seguinte comando da CLI do Azure para verificar o estado. O resultado deve ser Succeeded.

    az network vnet subnet show -g MyResourceGroup -n MySubnet --vnet-name MyVNet
    
  2. Resolva quaisquer problemas com a sub-rede. Se você acabou de criar a sub-rede, verifique o estado novamente após alguns minutos.

  3. Como alternativa, selecione outra sub-rede para o teste de carga.

Criar ou atualizar o teste de carga falha com Subnet is delegated to other service (ALTVNET003)

A sub-rede que você usa para implantar o teste de carga não pode ser delegada a outro serviço do Azure. Remova a delegação existente ou selecione outra sub-rede que não esteja delegada a um serviço.

Saiba mais sobre como adicionar ou remover uma delegação de sub-rede.

A atualização ou o início do teste de carga falham com User doesn't have subnet/join/action permission on the virtual network (ALTVNET004)

Para atualizar ou iniciar um teste de carga, você deve ter permissões suficientes para implantar o Teste de Carga do Azure na rede virtual. Você precisa da função de Colaborador de Rede , ou um pai dessa função, na rede virtual.

  1. Consulte Verificar o acesso de um usuário aos recursos do Azure para verificar suas permissões.

  2. Siga estes passos para atribuir a função de Colaborador de Rede à sua conta.

A criação ou atualização do teste de carga falha com IPv6 enabled subnet not supported (ALTVNET005)

O Teste de Carga do Azure não suporta sub-redes habilitadas para IPv6. Selecione outra sub-rede para a qual o IPv6 não esteja habilitado.

A criação ou atualização do teste de carga falha com NSG attached to subnet is not in Succeeded state (ALTVNET006)

O NSG (grupo de segurança de rede) anexado à sub-rede não está no Succeeded estado.

  1. Verifique o estado do NSG.

    Execute o seguinte comando da CLI do Azure para verificar o estado. O resultado deve ser Succeeded.

    az network nsg show -g MyResourceGroup -n MyNsg
    
  2. Resolva quaisquer problemas com o NSG. Se você acabou de criar o NSG ou a sub-rede, verifique o estado novamente após alguns minutos.

  3. Como alternativa, selecione outro NSG.

A criação ou atualização do teste de carga falha com Route Table attached to subnet is not in Succeeded state (ALTVNET007)

A tabela de rotas anexada à sub-rede não está no Succeeded estado.

  1. Verifique o estado da tabela de rotas.

    Execute o seguinte comando da CLI do Azure para verificar o estado. O resultado deve ser Succeeded.

    az network route-table show -g MyResourceGroup -n MyRouteTable
    
  2. Resolva quaisquer problemas com a tabela de rotas. Se você acabou de criar a tabela de rotas ou sub-rede, verifique o estado novamente após alguns minutos.

  3. Como alternativa, selecione outra tabela de rotas.

A criação ou atualização do teste de carga falha com Inbound not allowed from AzureLoadTestingInstanceManagement service tag (ALTVNET008)

O acesso de entrada da AzureLoadTestingInstanceManagement etiqueta de serviço à rede virtual não é permitido.

Siga estas etapas para habilitar o acesso ao tráfego para a AzureLoadTestingInstanceManagement etiqueta de serviço.

A criação ou atualização do teste de carga falha com Inbound not allowed from BatchNodeManagement service tag (ALTVNET009)

O acesso de entrada da BatchNodeManagement etiqueta de serviço à rede virtual não é permitido.

Siga estas etapas para habilitar o acesso de entrada para a BatchNodeManagement etiqueta de serviço.

A criação ou atualização do teste de carga falha com Route Table has next hop set for address prefix 0.0.0.0/0

Sua tabela de rotas de sub-rede tem o próximo tipo de conjunto de saltos definido como Dispositivo virtual para a rota 0.0.0.0/0. Essa configuração causaria roteamento assimétrico para pacotes de rede durante o provisionamento das máquinas virtuais na sub-rede.

Execute uma das duas ações para resolver esse erro:

  • Use uma sub-rede diferente, que não tenha rotas personalizadas.
  • Modifique a tabela de rotas da sub-rede e defina o próximo tipo de salto para a rota 0.0.0.0/0 como Internet.

Saiba mais sobre o roteamento de tráfego de rede virtual.

A criação ou atualização do teste de carga falha com Subnet is in a different subscription than resource (ALTVNET011)

A rede virtual não está na mesma assinatura e região que seu recurso de teste de carga do Azure. Mova ou recrie a rede virtual do Azure ou o recurso de teste de carga do Azure para a mesma assinatura e região.

O provisionamento falha com An azure policy is restricting engine deployment to your subscription (ALTVNET012)

Uma política do Azure está restringindo a implantação do mecanismo de teste de carga à sua assinatura. Verifique as restrições da sua política e tente novamente. Se você tiver restrições de política sobre a implantação do endereço IP público, do balanceador de carga do Azure ou do grupo de segurança de rede, poderá desabilitar a implantação desses recursos. Consulte Configurar o teste de carga.

O provisionamento falha com Engines could not be deployed due to an error in subnet configuration (ALTVNET013)

As instâncias do mecanismo de teste de carga não puderam ser implantadas devido a um erro na configuração da sub-rede. Verifique a configuração da sub-rede. Se o problema persistir, crie um ticket com suporte junto com o ID de execução do teste.

  1. Verifique o estado da sub-rede.

    Execute o seguinte comando da CLI do Azure para verificar o estado. O resultado deve ser Succeeded.

    az network vnet subnet show -g MyResourceGroup -n MySubnet --vnet-name MyVNet
    
  2. Resolva quaisquer problemas com a sub-rede. Se você acabou de criar a sub-rede, verifique o estado novamente após alguns minutos.

  3. Se o problema persistir, abra uma solicitação de suporte ao cliente on-line.

    Forneça o ID de execução do teste de carga dentro da solicitação de suporte.

O início do teste de carga falha com Subnet has {0} free IPs, {1} more free IP(s) required to run {2} engine instance load test (ALTVNET014)

A sub-rede que você usa para o Teste de Carga do Azure deve ter endereços IP não atribuídos suficientes para acomodar o número de mecanismos de teste de carga para seu teste.

Siga estas etapas para atualizar as configurações de sub-rede e aumentar o intervalo de endereços IP.

O início do teste de carga falha com Management Lock is enabled on Resource Group of VNET (ALTVNET015)

Se houver um bloqueio no grupo de recursos que contém a rede virtual, o serviço não poderá injetar as máquinas virtuais do mecanismo de teste em sua rede virtual. Remova o bloqueio de gerenciamento antes de executar o teste de carga. Saiba como configurar bloqueios no portal do Azure.

O início do teste de carga falha com Insufficient public IP address quota in VNET subscription (ALTVNET016)

Quando você inicia o teste de carga, o Teste de Carga do Azure injeta os seguintes recursos do Azure na rede virtual que contém o ponto de extremidade do aplicativo:

  • As máquinas virtuais do mecanismo de teste. Essas VMs invocam o ponto de extremidade do aplicativo durante o teste de carga.
  • Um endereço IP público.
  • Um grupo de segurança de rede (NSG).
  • Um balanceador de carga do Azure.

Certifique-se de que tem uma quota para pelo menos um endereço IP público disponível na sua subscrição para utilizar no teste de carga.

O início do teste de carga falha com Subnet with name "AzureFirewallSubnet" cannot be used for load testing (ALTVNET017)

A sub-rede AzureFirewallSubnet é reservada e você não pode usá-la para o Teste de Carga do Azure. Selecione outra sub-rede para o teste de carga.

Próximos passos