Risoluzione dei problemi relativi allo stato Danneggiato di Gestione traffico

In questo articolo viene descritto come risolvere i problemi relativi al profilo di Gestione traffico di Azure che mostra uno stato danneggiato. Si supponga di aver configurato un profilo di Gestione traffico che punta ad alcuni dei servizi ospitati cloudapp.net. Se lo stato di integrità di Gestione traffico è Danneggiato, anche lo stato di uno o più endpoint può essere Danneggiato:

Stato degli endpoint Danneggiato

Se lo stato di integrità di Gestione traffico è Inattivo, entrambi gli endpoint possono avere stato Disattivato:

Stato Inattivo di Gestione traffico

Informazioni sui probe di Gestione traffico

  • Gestione traffico considera un endpoint Online solo se il probe ottiene una risposta HTTP 200 dal percorso probe. Qualsiasi risposta diversa da 200 viene considerata un errore.
  • Un reindirizzamento 30x avrà esito negativo anche se l'URL reindirizzato restituisce 200.
  • Per i probe HTTPS, gli errori di certificati vengono ignorati.
  • Il contenuto effettivo del percorso probe non è importante, purché venga restituito 200. Una tecnica comune consiste nell'impostare il percorso su un valore simile a "/favicon.ico". Il contenuto dinamico, ad esempio le pagine ASP, non può sempre restituire 200, anche quando l'applicazione è integra.
  • La procedura consigliata prevede di impostare il percorso probe su un valore con logica sufficiente a determinare se il sito sia attivo o non attivo. Nell'esempio precedente, impostando il percorso su "/favicon.ico", si verifica solo che w3wp.exe risponda. Questo probe non indica necessariamente che l'applicazione Web è integra. Un'opzione migliore prevede di impostare un percorso su un valore simile a "/Probe.aspx", che è dotato della logica necessaria a determinare l'integrità del sito. Ad esempio, si potrebbero usare i contatori delle prestazioni per verificare l'utilizzo della CPU o misurare il numero di richieste con esito negativo, o tentare di accedere a risorse come lo stato del database o della sessione per assicurarsi che l'applicazione Web funzioni correttamente.
  • Se tutti gli endpoint di un profilo sono danneggiati, Gestione traffico li gestirà come integri e indirizzerà il traffico a tutti gli endpoint. In questo modo si evita che eventuali problemi con il meccanismo di probe non comportino un'interruzione completa del servizio.

Risoluzione dei problemi

Per risolvere gli errori di probe, è necessario uno strumento che mostri il codice di stato HTTP restituito dall'URL del probe. Sono disponibili numerosi strumenti che mostrano la risposta HTTP non elaborata.

È inoltre possibile utilizzare la scheda Rete in Strumenti F12 per il debug di Internet Explorer per visualizzare le risposte HTTP.

In questo esempio si vuole visualizzare la risposta ricevuta dall'URL del probe: http://watestsdp2008r2.cloudapp.net:80/Probe. L'esempio di PowerShell seguente illustra il problema.

Invoke-WebRequest 'http://watestsdp2008r2.cloudapp.net/Probe' -MaximumRedirection 0 -ErrorAction SilentlyContinue | Select-Object StatusCode,StatusDescription

Output di esempio:

StatusCode StatusDescription
---------- -----------------
       301 Moved Permanently

Si noti che è pervenuta una risposta di reindirizzamento. Come indicato in precedenza, qualsiasi StatusCode diverso da 200 viene considerato un errore. Gestione traffico modifica lo stato dell'endpoint impostandolo su Offline. Per risolvere il problema, controllare la configurazione del sito Web per verificare che il percorso probe sia in grado di restituire lo StatusCode appropriato. Riconfigurare quindi il probe di Gestione traffico in modo che punti a un percorso che restituisce un valore di 200.

Se il probe usa il protocollo HTTPS, è necessario disabilitare il controllo del certificato per evitare errori SSL/TLS durante il test. Le seguenti istruzioni di PowerShell disabilitano la convalida dei certificati per la sessione corrente di PowerShell:

add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
    public bool CheckValidationResult(
    ServicePoint srvPoint, X509Certificate certificate,
    WebRequest request, int certificateProblem) {
    return true;
    }
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

Passaggi successivi

Informazioni sui metodi di routing di Gestione traffico

Gestione traffico di Azure

Servizi cloud

App Web di Azure

Operazioni per Gestione traffico (informazioni di riferimento API REST)

Cmdlet di Gestione traffico di Azure