Configurazione del timeout di inattività TCP di Azure Load BalancerConfigure TCP idle timeout settings for Azure Load Balancer

Importante

Azure Load Balancer supporta due tipi diversi: Basic e Standard.Azure Load Balancer supports two different types: Basic and Standard. Questo articolo illustra Load Balancer Basic.This article discusses Basic Load Balancer. Load Balancer Basic è disponibile a livello generale, mentre Load Balancer Standard è attualmente in anteprima pubblica.Basic Load Balancer is generally available, whereas Standard Load Balancer is currently in Public Preview. Per altre informazioni su Load Balancer Standard, vedere Panoramica di Load Balancer Standard.For more information about Standard Load Balancer, see Standard Load Balancer Overview.

La configurazione predefinita di Azure Load Balancer prevede che il timeout di inattività sia impostato su 4 minuti.In its default configuration, Azure Load Balancer has an idle timeout setting of 4 minutes. Se un periodo di inattività è più lungo del valore di timeout, non ci sono garanzie che venga mantenuta la sessione TCP o HTTP tra il client e il servizio cloud.If a period of inactivity is longer than the timeout value, there's no guarantee that the TCP or HTTP session is maintained between the client and your cloud service.

Quando la connessione viene chiusa, l'applicazione client potrebbe ricevere il messaggio di errore seguente: "Connessione sottostante chiusa: una connessione che doveva restare attiva è stata chiusa dal server in modo imprevisto".When the connection is closed, your client application may receive the following error message: "The underlying connection was closed: A connection that was expected to be kept alive was closed by the server."

Una prassi comune consiste nell'usare una connessione TCP keep-aliveA common practice is to use a TCP keep-alive. per mantenere la connessione attiva per un periodo più lungo.This practice keeps the connection active for a longer period. Per altre informazioni, vedere questi esempi .NET.For more information, see these .NET examples. Con la connessione keep-alive abilitata, i pacchetti vengono inviati durante i periodi di inattività della connessione.With keep-alive enabled, packets are sent during periods of inactivity on the connection. Questi pacchetti keep-alive garantiscono che il valore del timeout di inattività non venga mai raggiunto e che la connessione sia mantenuta per un lungo periodo.These keep-alive packets ensure that the idle timeout value is never reached and the connection is maintained for a long period.

Questa impostazione funziona solo per le connessioni in entrata.This setting works for inbound connections only. Per evitare di perdere la connessione, è necessario configurare l'impostazione keep-alive TCP con un intervallo minore rispetto all'impostazione di timeout di inattività o aumentare il valore del timeout di inattività.To avoid losing the connection, you must configure the TCP keep-alive with an interval less than the idle timeout setting or increase the idle timeout value. Per supportare tali scenari, è stato aggiunto il supporto per un timeout di inattività configurabile.To support such scenarios, we've added support for a configurable idle timeout. È ora possibile impostare questo valore su una durata compresa tra 4 e 30 minuti.You can now set it for a duration of 4 to 30 minutes.

La connessione TCP keep-alive è particolarmente adatta per gli scenari non vincolati alla durata della batteria,TCP keep-alive works well for scenarios where battery life is not a constraint. mentre non è consigliabile per le applicazioni mobili.It is not recommended for mobile applications. L'uso di un'impostazione keep-alive TCP in un'applicazione per dispositivi mobili può far scaricare più velocemente la batteria del dispositivo.Using a TCP keep-alive in a mobile application can drain the device battery faster.

Timeout TCP

Nella sezione seguente è descritto come modificare le impostazioni del timeout di inattività in macchine virtuali e servizi cloud.The following sections describe how to change idle timeout settings in virtual machines and cloud services.

Configurazione del timeout TCP per l'IP pubblico a livello di istanza su 15 minutiConfigure the TCP timeout for your instance-level public IP to 15 minutes

Set-AzurePublicIP -PublicIPName webip -VM MyVM -IdleTimeoutInMinutes 15

IdleTimeoutInMinutes è facoltativo.IdleTimeoutInMinutes is optional. Se non impostato, il timeout predefinito è 4 minuti.If it is not set, the default timeout is 4 minutes. L'intervallo di timeout accettabile è compreso tra 4 e 30 minuti.The acceptable timeout range is 4 to 30 minutes.

Impostazione del timeout di inattività durante la creazione di un endpoint di Azure in una macchina virtualeSet the idle timeout when creating an Azure endpoint on a virtual machine

Per modificare l'impostazione di timeout per un endpoint, usare il codice seguente:To change the timeout setting for an endpoint, use the following:

Get-AzureVM -ServiceName "mySvc" -Name "MyVM1" | Add-AzureEndpoint -Name "HttpIn" -Protocol "tcp" -PublicPort 80 -LocalPort 8080 -IdleTimeoutInMinutes 15| Update-AzureVM

Per recuperare la configurazione del timeout di inattività, usare il comando seguente:To retrieve your idle timeout configuration, use the following command:

PS C:\> Get-AzureVM -ServiceName "MyService" -Name "MyVM" | Get-AzureEndpoint
VERBOSE: 6:43:50 PM - Completed Operation: Get Deployment
LBSetName : MyLoadBalancedSet
LocalPort : 80
Name : HTTP
Port : 80
Protocol : tcp
Vip : 65.52.xxx.xxx
ProbePath :
ProbePort : 80
ProbeProtocol : tcp
ProbeIntervalInSeconds : 15
ProbeTimeoutInSeconds : 31
EnableDirectServerReturn : False
Acl : {}
InternalLoadBalancerName :
IdleTimeoutInMinutes : 15

Impostazione del timeout TCP su un set di endpoint con carico bilanciatoSet the TCP timeout on a load-balanced endpoint set

Se gli endpoint fanno parte di un set di endpoint con carico bilanciato, è necessario impostare il timeout TCP sul set di endpoint con carico bilanciato.If endpoints are part of a load-balanced endpoint set, the TCP timeout must be set on the load-balanced endpoint set. ad esempio:For example:

Set-AzureLoadBalancedEndpoint -ServiceName "MyService" -LBSetName "LBSet1" -Protocol tcp -LocalPort 80 -ProbeProtocolTCP -ProbePort 8080 -IdleTimeoutInMinutes 15

Modifica delle impostazioni di timeout per i servizi cloudChange timeout settings for cloud services

È possibile usare Azure SDK per aggiornare il servizio cloud.You can use the Azure SDK to update your cloud service. Le impostazioni degli endpoint per i servizi cloud vengono effettuate nel file .csdef.You make endpoint settings for cloud services in the .csdef file. L'aggiornamento il timeout TCP per la distribuzione di un servizio cloud richiede un aggiornamento della distribuzione.Updating the TCP timeout for deployment of a cloud service requires a deployment upgrade. Fa eccezione il caso in cui il timeout TCP sia specificato solo per un indirizzo IP pubblico.An exception is if the TCP timeout is specified only for a public IP. Le impostazioni degli indirizzi IP pubblici si trovano nel file .cscfg e possono essere aggiornate tramite l'aggiornamento della distribuzione.Public IP settings are in the .cscfg file, and you can update them through deployment update and upgrade.

Le modifiche del file con estensione csdef per le impostazioni di endpoint sono:The .csdef changes for endpoint settings are:

<WorkerRole name="worker-role-name" vmsize="worker-role-size" enableNativeCodeExecution="[true|false]">
    <Endpoints>
    <InputEndpoint name="input-endpoint-name" protocol="[http|https|tcp|udp]" localPort="local-port-number" port="port-number" certificate="certificate-name" loadBalancerProbe="load-balancer-probe-name" idleTimeoutInMinutes="tcp-timeout" />
    </Endpoints>
</WorkerRole>

Le modifiche al file .cscfg per l'impostazione di timeout negli indirizzi IP pubblici sono le seguenti:The .cscfg changes for the timeout setting on public IPs are:

<NetworkConfiguration>
    <VirtualNetworkSite name="VNet"/>
    <AddressAssignments>
    <InstanceAddress roleName="VMRolePersisted">
    <PublicIPs>
        <PublicIP name="public-ip-name" idleTimeoutInMinutes="timeout-in-minutes"/>
    </PublicIPs>
    </InstanceAddress>
    </AddressAssignments>
</NetworkConfiguration>

Esempio di API RESTREST API example

È possibile configurare il timeout di inattività TCP l'API Gestione dei servizi.You can configure the TCP idle timeout by using the service management API. Controllare che l'intestazione x-ms-version sia impostata sulla versione 2014-06-01 o successiva.Make sure that the x-ms-version header is set to version 2014-06-01 or later. Aggiornare la configurazione degli endpoint di input specificati con carico bilanciato in tutte le macchine virtuali di una distribuzione.Update the configuration of the specified load-balanced input endpoints on all virtual machines in a deployment.

RichiestaRequest

POST https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deployments/<deployment-name>

ResponseResponse

<LoadBalancedEndpointList xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <InputEndpoint>
    <LoadBalancedEndpointSetName>endpoint-set-name</LoadBalancedEndpointSetName>
    <LocalPort>local-port-number</LocalPort>
    <Port>external-port-number</Port>
    <LoadBalancerProbe>
        <Path>path-of-probe</Path>
        <Port>port-assigned-to-probe</Port>
        <Protocol>probe-protocol</Protocol>
        <IntervalInSeconds>interval-of-probe</IntervalInSeconds>
        <TimeoutInSeconds>timeout-for-probe</TimeoutInSeconds>
    </LoadBalancerProbe>
    <LoadBalancerName>name-of-internal-loadbalancer</LoadBalancerName>
    <Protocol>endpoint-protocol</Protocol>
    <IdleTimeoutInMinutes>15</IdleTimeoutInMinutes>
    <EnableDirectServerReturn>enable-direct-server-return</EnableDirectServerReturn>
    <EndpointACL>
        <Rules>
        <Rule>
            <Order>priority-of-the-rule</Order>
            <Action>permit-rule</Action>
            <RemoteSubnet>subnet-of-the-rule</RemoteSubnet>
            <Description>description-of-the-rule</Description>
        </Rule>
        </Rules>
    </EndpointACL>
    </InputEndpoint>
</LoadBalancedEndpointList>

Passaggi successiviNext steps

Panoramica del bilanciamento del carico internoInternal load balancer overview

Introduzione alla configurazione del bilanciamento del carico InternetGet started configuring an Internet-facing load balancer

Configurare una modalità di distribuzione del servizio di bilanciamento del caricoConfigure a load balancer distribution mode