Definir as configurações de tempo limite de ociosidade do TCP para o Azure Load BalancerConfigure TCP idle timeout settings for Azure Load Balancer

Importante

O Azure Load Balancer oferece suporte a dois tipos diferentes: Basic e Standard.Azure Load Balancer supports two different types: Basic and Standard. Este artigo discute o Load Balancer Basic.This article discusses Basic Load Balancer. Embora o Load Balancer Basic esteja geralmente disponível, o Load Balancer Standard está em versão prévia pública.Although Basic Load Balancer is generally available, Standard Load Balancer is currently in public preview. Para obter mais informações sobre o Load Balancer Standard, veja Visão geral do Load Balancer Standard.For more information about Standard Load Balancer, see Standard Load Balancer overview.

Em sua configuração padrão, o Azure Load Balancer tem uma configuração de tempo limite de ociosidade de quatro minutos.In its default configuration, Azure Load Balancer has an idle timeout setting of 4 minutes. Se um período de inatividade for maior que o valor de tempo limite, não haverá nenhuma garantia de que a sessão TCP ou HTTP seja mantida entre o cliente e o serviço de nuvem.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 a conexão é fechada, seu aplicativo cliente pode recebe a seguinte mensagem de erro: "A conexão subjacente foi fechada: uma conexão que deveria ser mantida ativa foi fechada pelo servidor."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."

Uma prática comum é usar um TCP keep alive.A common practice is to use a TCP keep-alive. Essa prática mantém a conexão ativa por um período maior.This practice keeps the connection active for a longer period. Para obter mais informações, consulte estes exemplos do .NET.For more information, see these .NET examples. Com o keep alive habilitado, os pacotes são enviados durante os períodos de inatividade na conexão.With keep-alive enabled, packets are sent during periods of inactivity on the connection. Esses pacotes keep alive garantem que o valor de tempo limite de ociosidade nunca será atingido e a conexão será mantida por um longo período.These keep-alive packets ensure that the idle timeout value is never reached and the connection is maintained for a long period.

Essa configuração só funciona para conexões de entrada.This setting works for inbound connections only. Para evitar a perda da conexão, você deve configurar o TCP keep-alive com um intervalo menor do que a configuração de tempo limite de ociosidade ou aumentar o valor do tempo limite de ociosidade.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. Para dar suporte a esses cenários, adicionamos suporte para um tempo limite de ociosidade configurável.To support such scenarios, we've added support for a configurable idle timeout. Agora você pode defini-lo para uma duração entre quatro e 30 minutos.You can now set it for a duration of 4 to 30 minutes.

O TCP keep alive funciona bem para cenários em que a vida útil da bateria não é uma restrição.TCP keep-alive works well for scenarios where battery life is not a constraint. Não é recomendável para aplicativos móveis.It is not recommended for mobile applications. Usar o TCP keep alive em um aplicativo móvel pode consumir a bateria do dispositivo mais rapidamente.Using a TCP keep-alive in a mobile application can drain the device battery faster.

Tempo limite de TCP

As seções a seguir descrevem como alterar as configurações de tempo limite de ociosidade em máquinas virtuais e serviços de nuvem.The following sections describe how to change idle timeout settings in virtual machines and cloud services.

Configure o tempo limite de TCP para o IP Público em Nível de Instância para 15 minutosConfigure the TCP timeout for your instance-level public IP to 15 minutes

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

IdleTimeoutInMinutes é opcional.IdleTimeoutInMinutes is optional. Se não for definido, o tempo limite padrão será 4 minutos.If it is not set, the default timeout is 4 minutes. O intervalo de tempo limite aceitável é entre quatro e 30 minutos.The acceptable timeout range is 4 to 30 minutes.

Defina o tempo limite de ociosidade durante a criação de um ponto de extremidade do Azure em uma máquina virtualSet the idle timeout when creating an Azure endpoint on a virtual machine

Para alterar a configuração de tempo limite para um ponto de extremidade, use o seguinte: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

Para recuperar sua configuração de tempo limite de ociosidade, use o seguinte comando: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

Defina o tempo limite do TCP em um conjunto do ponto de extremidade com balanceamento de cargaSet the TCP timeout on a load-balanced endpoint set

Se os pontos de extremidade forem parte de um conjunto do ponto de extremidade com balanceamento de carga, o tempo limite do TCP deverá ser definido no conjunto de pontos de extremidade com balanceamento de carga.If endpoints are part of a load-balanced endpoint set, the TCP timeout must be set on the load-balanced endpoint set. Por exemplo:For example:

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

Alterar as configurações de tempo limite para serviços de nuvemChange timeout settings for cloud services

É possível usar o SDK do Azure para atualizar seu serviço de nuvem.You can use the Azure SDK to update your cloud service. Você pode fazer configurações de ponto de extremidade para serviços de nuvem no arquivo .csdef.You make endpoint settings for cloud services in the .csdef file. A atualização do tempo limite do TCP para a implantação de um serviço de nuvem exige uma atualização da implantação.Updating the TCP timeout for deployment of a cloud service requires a deployment upgrade. Uma exceção é se o tempo limite do TCP é especificado somente para um IP público.An exception is if the TCP timeout is specified only for a public IP. As configurações de IP público estão no arquivo .cscfg e podem ser atualizadas por intermédio da atualização e do upgrade da implantação.Public IP settings are in the .cscfg file, and you can update them through deployment update and upgrade.

As alterações do .csdef para as configurações do ponto de extremidade são: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>

As alterações no .cscfg para a configuração de tempo limite em IPs públicos são: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>

Exemplo de API RESTREST API example

Você pode configurar o tempo limite de ociosidade de TCP usando a API de Gerenciamento de Serviços.You can configure the TCP idle timeout by using the service management API. Certifique-se de que o cabeçalho x-ms-version esteja definido como a versão 2014-06-01 ou superior.Make sure that the x-ms-version header is set to version 2014-06-01 or later. Atualize a configuração dos pontos de extremidade de entrada com balanceamento de carga especificado em todas as máquinas virtuais em uma implantação.Update the configuration of the specified load-balanced input endpoints on all virtual machines in a deployment.

SolicitaçãoRequest

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>

Próximas etapasNext steps

Visão geral do balanceador de carga internoInternal load balancer overview

Introdução à configuração de um balanceador de carga para a InternetGet started configuring an Internet-facing load balancer

Configurar um modo de distribuição do balanceador de cargaConfigure a load balancer distribution mode