Testare gli endpoint privati distribuendo Test di carico di Azure in una rete virtuale di Azure

Questo articolo illustra come testare gli endpoint dell'applicazione privata con Test di carico di Azure. Creare una risorsa test di carico di Azure e abilitarla per generare il carico dall'interno della rete virtuale (inserimento della rete virtuale).

Questa funzionalità consente gli scenari di utilizzo seguenti:

  • Generare il carico in un endpoint distribuito in una rete virtuale di Azure.
  • Generare il carico in un endpoint pubblico con restrizioni di accesso, ad esempio la limitazione degli indirizzi IP client.
  • Generare il carico in un servizio locale, non accessibile pubblicamente, connesso ad Azure tramite ExpressRoute.

Altre informazioni sugli scenari per la distribuzione di Test di carico di Azure nella rete virtuale.

Il diagramma seguente offre una panoramica tecnica:

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

Quando si avvia il test di carico, il servizio Test di carico di Azure inserisce le risorse di Azure seguenti nella rete virtuale che contiene l'endpoint dell'applicazione:

  • Macchine virtuali del motore di test. Queste macchine virtuali richiamano l'endpoint dell'applicazione durante il test di carico.
  • Un indirizzo IP pubblico.
  • Un gruppo di sicurezza di rete (NSG).
  • Un servizio di bilanciamento del carico di Azure.

Queste risorse sono temporanee ed esistono solo durante l'esecuzione del test di carico. Se sono presenti restrizioni per la distribuzione di un indirizzo IP pubblico, un servizio di bilanciamento del carico di Azure o un gruppo di sicurezza di rete nella subnet, è possibile disabilitare la distribuzione di queste risorse. Per altre informazioni, vedere Configurare il test di carico.

Se si limita l'accesso alla rete virtuale, è necessario configurare la rete virtuale per abilitare la comunicazione tra questi test di carico di Azure e le macchine virtuali inserite.

Prerequisiti

  • L'account Azure ha il ruolo Collaboratore rete o padre di questo ruolo nella rete virtuale. Vedere Controllare l'accesso per un utente alle risorse di Azure per verificare le autorizzazioni.
  • La subnet usata per Test di carico di Azure deve avere un numero sufficiente di indirizzi IP non assegnati per supportare il numero di motori di test di carico per il test. Altre informazioni sulla configurazione del test per il carico su larga scala.
  • La subnet non deve essere delegata ad altri servizi di Azure. Ad esempio, non deve essere delegato a Istanze di Azure Container (ACI). Altre informazioni sulla delega della subnet.
  • Interfaccia della riga di comando di Azure versione 2.2.0 o successiva (se si usa CI/CD). Eseguire az --version per trovare la versione installata nel computer. Se è necessario installare o aggiornare l'interfaccia della riga di comando di Azure, vedere Come installare l'interfaccia della riga di comando di Azure.

Configurare la rete virtuale

Per testare gli endpoint privati, è necessario connettere Test di carico di Azure a una rete virtuale di Azure. La rete virtuale deve avere almeno una subnet e consentire il traffico in uscita al servizio Test carico di Azure.

Se non si ha ancora una rete virtuale, seguire questa procedura per creare una rete virtuale di Azure nel portale di Azure.

Importante

La rete virtuale deve trovarsi nella stessa sottoscrizione e nella stessa area della risorsa di test di carico.

Creare una subnet

Quando si distribuisce Test di carico di Azure nella rete virtuale, è consigliabile usare subnet separate per test di carico di Azure e per l'endpoint dell'applicazione. Questo approccio consente di configurare i criteri di accesso al traffico di rete in modo specifico per ogni scopo. Altre informazioni su come aggiungere una subnet a una rete virtuale.

(Facoltativo) Configurare le regole del traffico

Test di carico di Azure richiede che le macchine virtuali inserite nella rete virtuale siano autorizzate all'accesso in uscita al servizio Test carico di Azure. Per impostazione predefinita, quando si crea una rete virtuale, l'accesso in uscita è già consentito.

Se si prevede di limitare ulteriormente l'accesso alla rete virtuale con un gruppo di sicurezza di rete o se si dispone già di un gruppo di sicurezza di rete, è necessario configurare una regola di sicurezza in uscita per consentire il traffico dalle macchine virtuali del motore di test al servizio Test di carico di Azure.

Per configurare l'accesso in uscita per Test carico di Azure:

  1. Accedere al portale di Azure.

  2. Passare al gruppo di sicurezza di rete.

    Se non si ha ancora un gruppo di sicurezza di rete, seguire questa procedura per creare un gruppo di sicurezza di rete.

    Creare il gruppo di sicurezza di rete nella stessa area della rete virtuale e quindi associarlo alla subnet.

  3. Selezionare Regole di sicurezza in uscita nel riquadro di spostamento sinistro.

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

  4. Selezionare + Aggiungi per aggiungere una nuova regola di sicurezza in uscita. Immettere le informazioni seguenti per creare una nuova regola.

    Campo Valore
    Origine Any
    Intervalli porte di origine *
    Destinazione Any
    Intervalli porte di destinazione *
    Nome azure-load-testing-outbound
    Descrizione Usato per varie operazioni coinvolte nell'orchestrazione di un test di carico.
  5. Selezionare Aggiungi per aggiungere la regola di sicurezza in uscita al gruppo di sicurezza di rete.

Configurare lo script di test di carico

Le macchine virtuali del motore di test, che eseguono lo script JMeter, vengono inserite nella rete virtuale che contiene l'endpoint dell'applicazione. È ora possibile fare riferimento direttamente all'endpoint nel file JMX usando l'indirizzo IP privato o usare la risoluzione dei nomi nella rete.

Ad esempio, per un endpoint con indirizzo IP 10.179.0.7, in una rete virtuale con intervallo di subnet 10.179.0.0/18, il file JMX potrebbe avere queste informazioni:

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

Configurare il test di carico

Per includere endpoint ospitati privatamente nel test di carico, è necessario configurare le impostazioni della rete virtuale per il test di carico. È possibile configurare le impostazioni della rete virtuale nella portale di Azure o specificarle nel file di configurazione del test YAML per le pipeline CI/CD.

Importante

Quando si distribuisce Test di carico di Azure in una rete virtuale, verranno addebitati costi aggiuntivi. Test di carico di Azure distribuisce un servizio di bilanciamento del carico di Azure e un indirizzo IP pubblico nella sottoscrizione e potrebbe esserci un costo per il traffico generato. Per altre informazioni, vedere le informazioni sui prezzi di Rete virtuale.

Configurare la rete virtuale nel portale di Azure

È possibile specificare le impostazioni di configurazione della rete virtuale nella creazione/aggiornamento guidato del test di carico.

  1. Accedere al portale di Azure usando le credenziali della sottoscrizione di Azure.

  2. Passare alla risorsa Test di carico di Azure e selezionare Test nel riquadro sinistro.

  3. Aprire la creazione/aggiornamento guidato test di carico in uno dei due modi seguenti:

    • Selezionare + Crea > carica uno script JMeter, se si vuole creare un nuovo test.

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

    • Selezionare un test esistente nell'elenco e quindi selezionare Modifica.

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

  4. Nella scheda Carica selezionare Modalità traffico privato e quindi selezionare la rete virtuale e la subnet.

    Se nella rete virtuale sono presenti più subnet, assicurarsi di selezionare la subnet che ospiterà le macchine virtuali del motore di test inserite.

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

    Importante

    Assicurarsi di disporre di autorizzazioni sufficienti per la gestione delle reti virtuali. È necessario il ruolo Collaboratore rete.

  5. (Facoltativo) Selezionare Disabilita distribuzione ip pubblico se non si vuole distribuire un indirizzo IP pubblico, un servizio di bilanciamento del carico e un gruppo di sicurezza di rete nella subnet.

    Quando si seleziona questa opzione, assicurarsi che sia presente un meccanismo alternativo, ad esempio gateway NAT di Azure, Firewall di Azure o un'appliance virtuale di rete per abilitare il routing del traffico in uscita dalla subnet.

  6. Esaminare o compilare le informazioni sul test di carico. Seguire questa procedura per creare o gestire un test.

  7. Selezionare Rivedi e crea e quindi Crea (o Applica, durante l'aggiornamento di un test esistente).

    All'avvio del test di carico, Test di carico di Azure inserisce le macchine virtuali del motore di test nella rete virtuale e nella subnet. Lo script di test può ora accedere all'endpoint dell'applicazione ospitata privatamente nella rete virtuale.

Configurare la rete virtuale per le pipeline CI/CD

Per configurare il test di carico con le impostazioni della rete virtuale, aggiornare il file di configurazione del test YAML.

  1. Aprire un terminale e usare l'interfaccia della riga di comando di Azure per accedere alla sottoscrizione di Azure:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. Recuperare l'ID subnet e copiare il valore risultante:

    az network vnet subnet show -g <your-resource-group> --vnet-name <your-vnet-name> --name <your-subnet-name> --query id
    
  3. Aprire il file di configurazione del test YAML nell'editor preferito.

  4. Aggiungere la subnetId proprietà al file di configurazione e specificare l'ID subnet copiato in precedenza:

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

    Facoltativamente, è possibile impostare la publicIPDisabled proprietà su True. Per altre informazioni sulla configurazione YAML, vedere Informazioni di riferimento su YAML per la configurazione di test.

    Importante

    Assicurarsi di disporre di autorizzazioni sufficienti per la gestione delle reti virtuali. È necessario il ruolo Collaboratore rete.

  5. Salvare il file di configurazione YAML ed eseguire il commit delle modifiche nel repository del codice sorgente.

  6. Dopo l'avvio dei trigger del flusso di lavoro CI/CD, il test di carico può ora accedere all'endpoint dell'applicazione ospitata privatamente nella rete virtuale.

Risoluzione dei problemi

La creazione o l'aggiornamento del test di carico non riesce con Subscription not registered with Microsoft.Batch (ALTVNET001)

Quando si configura un test di carico in una rete virtuale, la sottoscrizione deve essere registrata con Microsoft.Batch.

  1. Provare a creare o aggiornare di nuovo il test di carico dopo alcuni minuti.

  2. Se l'errore persiste, seguire questa procedura per registrare manualmente la sottoscrizione con il Microsoft.Batch provider di risorse.

La creazione o l'aggiornamento del test di carico non riesce con Subnet is not in the Succeeded state (ALTVNET002)

La subnet usata per il test di carico non è nello Succeeded stato e non è pronta per distribuire il test di carico.

  1. Verificare lo stato della subnet.

    Eseguire il comando seguente dell'interfaccia della riga di comando di Azure per verificare lo stato. Il risultato deve essere Succeeded.

    az network vnet subnet show -g MyResourceGroup -n MySubnet --vnet-name MyVNet
    
  2. Risolvere eventuali problemi relativi alla subnet. Se la subnet è stata appena creata, verificare di nuovo lo stato dopo alcuni minuti.

  3. In alternativa, selezionare un'altra subnet per il test di carico.

La creazione o l'aggiornamento del test di carico non riesce con Subnet is delegated to other service (ALTVNET003)

La subnet usata per la distribuzione del test di carico non può essere delegata a un altro servizio di Azure. Rimuovere la delega esistente o selezionare un'altra subnet non delegata a un servizio.

Altre informazioni sull'aggiunta o la rimozione di una delega di subnet.

L'aggiornamento o l'avvio del test di carico non riesce con User doesn't have subnet/join/action permission on the virtual network (ALTVNET004)

Per aggiornare o avviare un test di carico, è necessario disporre di autorizzazioni sufficienti per distribuire Test di carico di Azure nella rete virtuale. È necessario il ruolo Collaboratore rete o padre di questo ruolo nella rete virtuale.

  1. Vedere Controllare l'accesso per un utente alle risorse di Azure per verificare le autorizzazioni.

  2. Seguire questa procedura per assegnare il ruolo Collaboratore rete all'account.

La creazione o l'aggiornamento del test di carico non riesce con IPv6 enabled subnet not supported (ALTVNET005)

Test di carico di Azure non supporta le subnet abilitate per IPv6. Selezionare un'altra subnet per cui IPv6 non è abilitato.

La creazione o l'aggiornamento del test di carico non riesce con NSG attached to subnet is not in Succeeded state (ALTVNET006)

Il gruppo di sicurezza di rete (NSG) collegato alla subnet non è nello Succeeded stato .

  1. Verificare lo stato del gruppo di sicurezza di rete.

    Eseguire il comando seguente dell'interfaccia della riga di comando di Azure per verificare lo stato. Il risultato deve essere Succeeded.

    az network nsg show -g MyResourceGroup -n MyNsg
    
  2. Risolvere eventuali problemi con il gruppo di sicurezza di rete. Se è stato appena creato il gruppo di sicurezza di rete o la subnet, verificare di nuovo lo stato dopo alcuni minuti.

  3. In alternativa, selezionare un altro gruppo di sicurezza di rete.

La creazione o l'aggiornamento del test di carico non riesce con Route Table attached to subnet is not in Succeeded state (ALTVNET007)

La tabella di route collegata alla subnet non è nello Succeeded stato .

  1. Verificare lo stato della tabella di route.

    Eseguire il comando seguente dell'interfaccia della riga di comando di Azure per verificare lo stato. Il risultato deve essere Succeeded.

    az network route-table show -g MyResourceGroup -n MyRouteTable
    
  2. Risolvere eventuali problemi relativi alla tabella di route. Se è stata appena creata la tabella di route o la subnet, verificare di nuovo lo stato dopo alcuni minuti.

  3. In alternativa, selezionare un'altra tabella di route.

La creazione o l'aggiornamento del test di carico non riesce con Inbound not allowed from AzureLoadTestingInstanceManagement service tag (ALTVNET008)

L'accesso in ingresso dal tag del AzureLoadTestingInstanceManagement servizio alla rete virtuale non è consentito.

Seguire questa procedura per abilitare l'accesso al traffico per il tag del AzureLoadTestingInstanceManagement servizio.

La creazione o l'aggiornamento del test di carico non riesce con Inbound not allowed from BatchNodeManagement service tag (ALTVNET009)

L'accesso in ingresso dal tag del BatchNodeManagement servizio alla rete virtuale non è consentito.

Seguire questa procedura per abilitare l'accesso in ingresso per il tag del BatchNodeManagement servizio.

La creazione o l'aggiornamento del test di carico non riesce con Route Table has next hop set for address prefix 0.0.0.0/0

La tabella di route subnet include il tipo di hop successivo impostato su Appliance virtuale per la route 0.0.0.0/0. Questa configurazione causerebbe il routing asimmetrico per i pacchetti di rete durante il provisioning delle macchine virtuali nella subnet.

Eseguire una delle due azioni per risolvere l'errore:

  • Usare una subnet diversa, che non dispone di route personalizzate.
  • Modificare la tabella di route della subnet e impostare il tipo di hop successivo per la route 0.0.0.0/0 su Internet.

Altre informazioni sul routing del traffico di rete virtuale.

La creazione o l'aggiornamento del test di carico non riesce con Subnet is in a different subscription than resource (ALTVNET011)

La rete virtuale non si trova nella stessa sottoscrizione e nella stessa area della risorsa di test di carico di Azure. Spostare o ricreare la rete virtuale di Azure o la risorsa di test di carico di Azure nella stessa sottoscrizione e nella stessa area.

Il provisioning non riesce con An azure policy is restricting engine deployment to your subscription (ALTVNET012)

Un criterio di Azure limita la distribuzione del motore di test di carico alla sottoscrizione. Controllare le restrizioni dei criteri e riprovare. Se sono presenti restrizioni relative ai criteri per la distribuzione dell'indirizzo IP pubblico, del servizio di bilanciamento del carico di Azure o del gruppo di sicurezza di rete, è possibile disabilitare la distribuzione di queste risorse. Vedere Configurare il test di carico.

Il provisioning non riesce con Engines could not be deployed due to an error in subnet configuration (ALTVNET013)

Non è stato possibile distribuire le istanze del motore di test di carico a causa di un errore nella configurazione della subnet. Verificare la configurazione della subnet. Se il problema persiste, generare un ticket con supporto insieme all'ID di esecuzione del test.

  1. Verificare lo stato della subnet.

    Eseguire il comando seguente dell'interfaccia della riga di comando di Azure per verificare lo stato. Il risultato deve essere Succeeded.

    az network vnet subnet show -g MyResourceGroup -n MySubnet --vnet-name MyVNet
    
  2. Risolvere eventuali problemi relativi alla subnet. Se la subnet è stata appena creata, verificare di nuovo lo stato dopo alcuni minuti.

  3. Se il problema persiste, aprire una richiesta di assistenza clienti online.

    Specificare l'ID esecuzione del test di carico all'interno della richiesta di supporto.

L'avvio del test di carico ha esito negativo con Subnet has {0} free IPs, {1} more free IP(s) required to run {2} engine instance load test (ALTVNET014)

La subnet usata per Test di carico di Azure deve avere un numero sufficiente di indirizzi IP non assegnati per supportare il numero di motori di test di carico per il test.

Seguire questa procedura per aggiornare le impostazioni della subnet e aumentare l'intervallo di indirizzi IP.

L'avvio del test di carico ha esito negativo con Management Lock is enabled on Resource Group of VNET (ALTVNET015)

Se è presente un blocco sul gruppo di risorse che contiene la rete virtuale, il servizio non può inserire le macchine virtuali del motore di test nella rete virtuale. Rimuovere il blocco di gestione prima di eseguire il test di carico. Informazioni su come configurare i blocchi nella portale di Azure.

L'avvio del test di carico ha esito negativo con Insufficient public IP address quota in VNET subscription (ALTVNET016)

Quando si avvia il test di carico, Test carico di Azure inserisce le risorse di Azure seguenti nella rete virtuale che contiene l'endpoint dell'applicazione:

  • Macchine virtuali del motore di test. Queste macchine virtuali richiamano l'endpoint dell'applicazione durante il test di carico.
  • Un indirizzo IP pubblico.
  • Un gruppo di sicurezza di rete (NSG).
  • Un servizio di bilanciamento del carico di Azure.

Assicurarsi di avere una quota per almeno un indirizzo IP pubblico disponibile nella sottoscrizione da usare nel test di carico.

L'avvio del test di carico ha esito negativo con Subnet with name "AzureFirewallSubnet" cannot be used for load testing (ALTVNET017)

La subnet AzureFirewallSubnet è riservata e non è possibile usarla per Test di carico di Azure. Selezionare un'altra subnet per il test di carico.

Passaggi successivi