Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
APLICA-SE A: Todas as camadas de gerenciamento de API
Este artigo ajuda você a solucionar erros de conexão intermitente e problemas de latência relacionados no Gerenciamento de API do Azure. Especificamente, este artigo fornece informações e solução de problemas para o esgotamento de portas de tradução de endereços de rede de origem (SNAT). Se precisar de mais ajuda, contacte os especialistas do Azure no Suporte da Comunidade do Azure ou apresente um pedido de suporte com o Suporte do Azure.
Sintomas
Os aplicativos cliente que chamam APIs por meio do serviço de Gerenciamento de API podem apresentar um ou mais dos seguintes sintomas:
- Erros HTTP 500 intermitentes
- Mensagens de erro de tempo limite
Esses sintomas se manifestam como instâncias de em seus BackendConnectionFailure de recursos do Azure Monitor.
Em determinadas camadas de serviço de Gerenciamento de API, você também pode ver informações de diagnóstico relacionadas ao esgotamento da porta SNAT no portal do Azure na página Diagnosticar e resolver problemas>de Análise de Porta SNAT para sua instância de Gerenciamento de API.
Motivo
Esse padrão de sintomas geralmente ocorre devido aos limites de porta SNAT com seu serviço de gerenciamento de API.
Sempre que um cliente chama uma de suas APIs de Gerenciamento de API, o serviço de Gerenciamento de API do Azure abre uma porta SNAT para acessar sua API de back-end. Conforme discutido em Conexões de saída no Azure, o Azure usa a conversão de endereços de rede de origem (SNAT) e um balanceador de carga (não exposto aos clientes) para se comunicar com pontos de extremidade fora do Azure no espaço de endereço IP público e com pontos de extremidade internos do Azure que não estão usando pontos de extremidade de serviço de Rede Virtual. Essa situação só é aplicável a APIs de back-end expostas em IPs públicos.
Cada instância do serviço de Gerenciamento de API recebe inicialmente um número pré-alocado de portas SNAT. Esse limite afeta a abertura de conexões com a mesma combinação de host e porta. As portas SNAT são usadas quando você tem chamadas repetidas para o mesmo endereço e combinação de portas. Uma vez que uma porta SNAT tenha sido liberada, a porta estará disponível para reutilização conforme necessário. O balanceador de carga de rede do Azure recupera portas SNAT de conexões fechadas somente depois de esperar quatro minutos.
Uma rápida sucessão de solicitações de clientes para suas APIs pode esgotar a cota pré-alocada de portas SNAT se essas portas não forem fechadas e recicladas com rapidez suficiente, impedindo que seu serviço de Gerenciamento de API processe solicitações de clientes em tempo hábil.
Mitigações e soluções
As estratégias gerais para reduzir o esgotamento da porta SNAT são discutidas em Solução de problemas de falhas de conexões de saída na documentação do Balanceador de Carga do Azure. Dessas estratégias, as seguintes são aplicáveis ao Gerenciamento de API.
Habilitar o Gateway NAT do Azure
Para uma instância de rede virtual injetada na camada Premium do Gerenciamento de API, você pode habilitar o Gateway NAT do Azure para fornecer um número maior de portas SNAT (até 64K) do que as disponíveis por padrão no Gerenciamento de API. Se houver suporte em seu cenário, essa solução é a maneira mais eficaz de evitar o esgotamento da porta SNAT.
Para habilitar o Gateway NAT do Azure na rede virtual da instância de Gerenciamento de API, defina a propriedade da natGatewayState instância como enabled usando o Serviço de Gerenciamento de API - Criar ou atualizar a API REST.
Nota
- Atualmente, para definir a
natGatewayStatepropriedade, a instância não pode estar em uma configuração zonal ou com redundância de zona. - Para uma instância injetada em uma rede virtual no modo interno, o gateway NAT funciona apenas para o tráfego de saída para a Internet.
- O Azure NAT Gateway pode incorrer em custos adicionais.
O tempo limite de inatividade padrão definido no gateway NAT é de 4 minutos. Você pode alterar o tempo limite ocioso para um máximo de 120 minutos. Para obter mais informações, consulte Gerenciar gateway NAT.
Se você não conseguir usar um gateway NAT para conectividade de saída, consulte as outras opções de mitigação descritas nesta seção.
Dimensione sua instância de gerenciamento de API
Cada instância de Gerenciamento de API recebe um número de portas SNAT, com base em unidades de Gerenciamento de API. Você pode alocar mais portas SNAT dimensionando sua instância de Gerenciamento de API com mais unidades. Para obter mais informações, consulte Dimensionar seu serviço de gerenciamento de API.
Nota
O uso da porta SNAT não está disponível no momento como uma métrica para o dimensionamento automático de unidades de gerenciamento de API.
Usar vários IPs para suas URLs de back-end
Cada conexão de sua instância de Gerenciamento de API para o mesmo IP de destino e porta de destino do seu serviço de back-end usa uma porta SNAT, a fim de manter um fluxo de tráfego distinto. Sem portas SNAT diferentes para o tráfego de retorno do seu serviço em segundo plano, o Gerenciamento de API não tem como separar uma resposta da outra.
Como as portas SNAT podem ser reutilizadas se o IP de destino ou a porta de destino forem diferentes, outra maneira de evitar o esgotamento da porta SNAT é usando vários IPs para suas URLs de serviço de back-end.
Para saber mais, consulte Balanceador de carga do Azure proxy de saída.
Coloque o gerenciamento de API e o serviço de back-end na mesma rede virtual
Se sua API de back-end estiver hospedada em um serviço do Azure que ofereça suporte a pontos de extremidade de serviço , como o Serviço de Aplicativo, você poderá evitar problemas de esgotamento da porta SNAT colocando sua instância de Gerenciamento de API e o serviço de back-end na mesma rede virtual e expondo-o por meio de pontos de extremidade de serviço ou pontos de extremidade privados. Quando você usa uma VNet comum e coloca pontos de extremidade de serviço na sub-rede de integração, o tráfego de saída da sua instância de Gerenciamento de API para esses serviços ignora a Internet, evitando restrições de porta SNAT. Da mesma forma, se você usar uma VNet e pontos de extremidade privados, não terá nenhum problema de porta SNAT de saída para esse destino.
Para obter detalhes, consulte Como usar o Gerenciamento de API do Azure com redes virtuais e Integrar o Serviço de Aplicativo com uma rede virtual do Azure.
Coloque seu serviço de Gerenciamento de API em uma rede virtual e roteie chamadas de saída para o Firewall do Azure
Semelhante a colocar seu Gerenciamento de API e serviços de back-end em uma rede virtual, você pode empregar o Firewall do Azure em uma rede virtual com seu serviço de Gerenciamento de API e, em seguida, rotear chamadas de Gerenciamento de API de saída para o Firewall do Azure. Entre o Gerenciamento de API e o Firewall do Azure (quando colocado na mesma VNet), nenhuma porta SNAT é necessária. Para conexões SNAT com seus serviços de back-end, o Firewall do Azure tem 64.000 portas disponíveis, uma quantidade muito maior do que a alocada para instâncias de Gerenciamento de API.
Consulte a documentação do Firewall do Azure para obter mais informações.
Considere o cache de resposta e outros ajustes de desempenho de back-end
Outra possível mitigação é melhorar os tempos de processamento para suas APIs de back-end. Uma maneira de fazer isso é configurando determinadas APIs com cache de resposta para reduzir a latência entre os aplicativos cliente que chamam sua API e sua carga de back-end do Gerenciamento de API.
Para saber mais, consulte Adicionar cache para melhorar o desempenho no Gerenciamento de API do Azure.
Considere a implementação de políticas de restrição de acesso
Se fizer sentido para seu cenário de negócios, você poderá implementar políticas de restrição de acesso para seu produto de Gerenciamento de API. Por exemplo, a política de limite de taxa por chave pode ser usada para evitar picos de uso da API por chave, limitando a taxa de chamada por um período de tempo especificado.
Consulte Limitação de taxas e políticas de cotas para obter mais informações.