Condividi tramite


Schema LoadBalancerProbe di definizione di Servizi cloud di Azure (versione classica)

Importante

Servizi cloud (versione classica) è ora deprecato per tutti i clienti a partire dal 1° settembre 2024. Eventuali distribuzioni esistenti in esecuzione saranno arrestate e chiuse da Microsoft e i dati andranno persi in modo permanente a partire da ottobre 2024. Le nuove distribuzioni devono usare il nuovo modello di distribuzione basato su Azure Resource Manager, Servizi cloud di Azure (supporto "Extended").

Il probe di bilanciamento del carico è un probe di integrità definito dal cliente per gli endpoint UDP e gli endpoint nelle istanze del ruolo. LoadBalancerProbe non è un elemento autonomo. Viene combinato con il ruolo Web o il ruolo di lavoro in un file di definizione del servizio. Più ruoli possono usare un LoadBalancerProbe.

L'estensione predefinita per il file di definizione del servizio è csdef.

Funzione di un probe di bilanciamento del carico

Azure Load Balancer è responsabile del routing del traffico in ingresso alle istanze del ruolo. Il servizio di bilanciamento del carico determina quali istanze possono ricevere il traffico controllando regolarmente ogni istanza per determinarne l'integrità. Il servizio di bilanciamento del carico controlla ogni istanza più volte al minuto. Sono disponibili due opzioni diverse per fornire l'integrità di un'istanza al servizio di bilanciamento del carico: il probe di bilanciamento del carico predefinito o un probe di bilanciamento del carico personalizzato, che viene implementato definendo LoadBalancerProbe nel file con estensione csdef.

Il probe di bilanciamento del carico predefinito utilizza l'agente guest nella macchina virtuale, che rimane in ascolto e invia una risposta HTTP 200 OK solo quando l'istanza è nello stato Pronto, ad esempio quando l'istanza non è negli stati Occupato, Riciclo in corso, Arresto e così via. Se l'agente guest non risponde con un messaggio HTTP 200 OK, Azure Load Balancer contrassegna l'istanza che non risponde e arresta l'invio di traffico a tale istanza. Azure Load Balancer continua a effettuare il ping dell'istanza e, se l'agente guest risponde con HTTP 200, Azure Load Balancer invia di nuovo il traffico a tale istanza. Durante l’uso di un ruolo Web, il codice del sito Web viene in genere eseguito in w3wp.exe, che l'infrastruttura di Azure e l'agente guest non monitorano. Gli errori in w3wp.exe (ad esempio, le risposte HTTP 500) non vengono segnalati all'agente guest e il servizio di bilanciamento del carico non sa come escludere tale istanza dalla rotazione.

Il probe personalizzato del servizio di bilanciamento del carico esegue l'override del probe dell'agente guest predefinito e consente di creare una logica personalizzata per determinare l'integrità dell'istanza del ruolo. Per impostazione predefinita, il servizio di bilanciamento del carico esegue regolarmente probe sull'endpoint ogni 15 secondi. L'istanza è considerata nella rotazione se risponde con ACK TCP o HTTP 200 entro il periodo di timeout (per impostazione predefinita di 31 secondi). Questo processo può essere utile per implementare la propria logica di rimozione delle istanze dalla rotazione del servizio di bilanciamento del carico, ad esempio restituendo uno stato diverso da 200 se l'istanza usa più del 90% della CPU. Per i ruoli Web che usano w3wp.exe, tale configurazione significa anche che si ottiene il monitoraggio automatico del sito Web, perché gli errori nel codice del sito Web restituiscono uno stato diverso da 200 al probe del servizio di bilanciamento del carico. Se non si definisce LoadBalancerProbe nel file con estensione csdef, viene usato il comportamento predefinito del servizio di bilanciamento del carico (come descritto prima).

Se si usa un probe personalizzato di bilanciamento del carico, è necessario assicurarsi che la logica prenda in considerazione il metodo RoleEnvironment.OnStop. Quando si usa il probe predefinito di bilanciamento del carico, l'istanza viene esclusa dalla rotazione prima della chiamata a OnStop, ma un probe personalizzato di bilanciamento del carico può continuare a restituire 200 OK durante l'evento OnStop. Se si usa l'evento OnStop per pulire la cache, arrestare il servizio o apportare altre modifiche che possono influire sul comportamento di runtime del servizio, è necessario assicurarsi che la logica del probe personalizzato di bilanciamento del carico rimuova l'istanza dalla rotazione.

Schema di definizione del servizio di base per un probe di bilanciamento del carico

Il formato di base di un file di definizione del servizio contenente un probe di bilanciamento del carico è il seguente.

<ServiceDefinition …>
   <LoadBalancerProbes>
      <LoadBalancerProbe name="<load-balancer-probe-name>" protocol="[http|tcp]" path="<uri-for-checking-health-status-of-vm>" port="<port-number>" intervalInSeconds="<interval-in-seconds>" timeoutInSeconds="<timeout-in-seconds>"/>
   </LoadBalancerProbes>
</ServiceDefinition>

Elementi dello schema

L'elemento LoadBalancerProbes del file di definizione del servizio include gli elementi seguenti:

Elemento LoadBalancerProbes

L'elemento LoadBalancerProbes descrive la raccolta di probe di bilanciamento del carico. Questo è l'elemento padre dell'elemento LoadBalancerProbe.

Elemento LoadBalancerProbe

L'elemento LoadBalancerProbe definisce il probe di integrità per un modello. È possibile definire più probe di bilanciamento del carico.

La tabella seguente descrive gli attributi dell'elemento LoadBalancerProbe:

Attributo Tipo Descrizione
name string Obbligatorio. Nome del probe di bilanciamento del carico. Il nome deve essere univoco.
protocol string Obbligatorio. Specifica il protocollo dell'endpoint. I possibili valori sono http o tcp. Se viene specificato tcp, è necessario ricevere una risposta ACK per completare il probe. Se viene specificato http, è necessario ricevere una risposta 200 OK dall'URI specificato per completare il probe.
path string URI usato per richiedere lo stato di integrità alla macchina virtuale. path è obbligatorio se protocol impostato su http. In caso contrario, non è consentito.

Non esistono valori predefiniti.
port integer Facoltativo. Porta per la comunicazione del probe. Questo attributo è facoltativo per qualsiasi endpoint, poiché per il probe viene usata la stessa porta. È anche possibile configurare una porta diversa per il probe. L'intervallo di valori possibili è compresa tra 1 e 65535 inclusi.

Valore predefinito impostato dall'endpoint.
intervalInSeconds integer Facoltativo. Intervallo, in secondi, per la frequenza con cui controllare lo stato di integrità dell'endpoint. L'intervallo è in genere leggermente inferiore alla metà del periodo di timeout allocato (in secondi) il che consente due probe completi prima di escludere l'istanza dalla rotazione.

Il valore predefinito è 15. Il valore minimo è 5.
timeoutInSeconds integer Facoltativo. Periodo di timeout, in secondi, applicato al probe, entro il quale nessuna risposta interrompe l'invio di altro traffico all'endpoint. Questo valore consente agli endpoint di essere esclusi dalla rotazione in tempi più rapidi o più brevi di quelli abitualmente usati in Azure (valori predefiniti).

Il valore predefinito è 31. Il valore minimo è 11.

Vedi anche

Cloud Service (classic) Definition Schema (Schema di definizione di Servizi cloud - Versione classica)