Implantar uma instância de Gerenciamento de API do Azure para várias regiões do Azure

APLICA-SE A: Premium

O Gerenciamento de API do Azure dá suporte à implantação de várias regiões, o que permite que os editores de API adicionem gateways de API regionais a uma instância de Gerenciamento de API existente em uma ou mais regiões do Azure com suporte. A implantação de várias regiões ajuda a reduzir a solicitação de latência percebida pelos consumidores de API distribuídos geograficamente e melhora a disponibilidade do serviço se uma região ficar offline.

Ao adicionar uma região, você configura:

  • O número de unidades de escala que a região hospedará.

  • Redundância de zona opcional, se essa região der suporte a ela.

  • Configurações de rede virtual na região adicionada, se a rede estiver configurada na região ou nas regiões existentes.

Importante

O recurso para habilitar o armazenamento de dados do cliente em uma só região está disponível apenas na região Sudeste da Ásia (Singapura) da área geográfica do Pacífico Asiático. Para todas as outras regiões, os dados do cliente são armazenados na Área geográfica.

Sobre a implantação em várias regiões

  • Somente o componente de gateway da instância do Gerenciamento de API é replicado para várias regiões. O plano de gerenciamento e o portal do desenvolvedor da instância permanecem hospedados apenas na região primária, a região em que você implantou o serviço originalmente.

  • Caso você deseje configurar uma localização secundária para sua instância do Gerenciamento de API quando ela for implantada (injetada) em uma rede virtual, a VNet e a região da sub-rede deverão corresponder à localização secundária que você está configurando. Se você estiver adicionando, removendo ou habilitando a zona de disponibilidade na região primária ou alterando a sub-rede da região primária, o endereço VIP da instância do Gerenciamento de API será alterado. Para obter mais informações, confira Endereços IP do serviço de Gerenciamento de API do Azure. No entanto, se você estiver adicionando uma região secundária, o VIP da região primária não será alterado, porque cada região tem um VIP privado próprio.

  • As configurações de gateway, como APIs e definições de política, são sincronizadas regularmente entre as regiões primária e secundária adicionadas. Normalmente, a propagação de atualizações para os gateways regionais leva menos de dez segundos. A implantação em várias regiões fornece disponibilidade do gateway de API em mais de uma região e fornece disponibilidade de serviço, caso uma região fique offline.

  • Quando o Gerenciamento de API recebe solicitações HTTP públicas para o ponto de extremidade do gerenciador de tráfego (aplica-se aos modos VNet externo e sem rede do Gerenciamento de API), o tráfego é roteado para um gateway regional com base na latência mais baixa, o que pode reduzir a latência experimentada pelos consumidores de API distribuídos geograficamente.

  • O gateway em cada região (incluindo a região primária) tem um nome DNS regional que segue o padrão de URL https://<service-name>-<region>-01.regional.azure-api.net, por exemplo, https://contoso-westus2-01.regional.azure-api.net.

  • Se uma região ficar offline, as solicitações de API serão automaticamente roteadas em volta da região com falha para o gateway mais próximo.

  • Se a região primária ficar offline, o plano de gerenciamento e o portal do desenvolvedor do Gerenciamento de API ficarão não disponíveis, mas as regiões secundárias continuarão a atender a solicitações de API usando a configuração de gateway mais recente.

Pré-requisitos

Implantar o serviço de Gerenciamento de API em uma região adicional

  1. No portal do Azure, navegue até o serviço de Gerenciamento de API e selecione Localizações no menu esquerdo.
  2. Selecione + Adicionar na barra superior.
  3. Selecione uma localização adicionada na lista suspensa.
  4. Selecione o número de unidades de escala no local.
  5. Como opção, selecione uma ou mais Zonas de disponibilidade.
  6. Se a instância de Gerenciamento de API for implantada em uma rede virtual, defina as configurações de rede virtual no local. Selecione uma rede virtual existente, uma sub-rede e um endereço IP público que estejam disponíveis no local.
  7. Selecione Adicionar para confirmar.
  8. Repita esse processo até configurar todos os locais.
  9. Selecione Salvar na barra superior para iniciar o processo de implantação.

Remover uma região de serviço de Gerenciamento de API

  1. No portal do Azure, navegue até o serviço de Gerenciamento de API e selecione Localizações no menu esquerdo.
  2. Para a localização que você deseja remover, abra o menu de contexto usando o botão ... na extremidade direita da tabela. Selecione Excluir.
  3. Confirme a exclusão e selecione Salvar para aplicar as alterações.

Rotear chamadas à API para serviços regionais de back-end

Por padrão, cada API roteia solicitações para uma URL de serviço de back-end único. Mesmo que tenha configurado gateways do Gerenciamento de API do Azure em várias regiões, o gateway de API ainda encaminhará solicitações para o mesmo serviço de back-end, que é implantado em apenas uma região. Nesse caso, o ganho de desempenho será proveniente apenas das respostas armazenadas em cache dentro do Gerenciamento de API do Azure em uma região específica para a solicitação, mas entrar em contato com o back-end em todo o mundo ainda poderá causar alta latência.

Para aproveitar a distribuição geográfica do sistema, você deve ter serviços de back-end implantados nas mesmas regiões como instâncias do Gerenciamento de API do Azure. Então, usando as políticas e a propriedade @(context.Deployment.Region), é possível rotear o tráfego para instâncias locais do back-end.

  1. Navegue até a instância do Gerenciamento de API do Azure e selecione APIs no menu esquerdo.

  2. Selecione a API desejada.

  3. Selecione Editor de códigos na lista suspensa de seta em Processamento de entrada.

    Editor de códigos de API

  4. Use a política set-backend combinada com as políticas condicionais choose para construir uma política de roteamento apropriada na seção <inbound> </inbound> do arquivo.

    Por exemplo, o arquivo XML abaixo funcionaria para as regiões Oeste dos EUA e Leste da Ásia:

    <policies>
        <inbound>
            <base />
            <choose>
                <when condition="@("West US".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))">
                    <set-backend-service base-url="http://contoso-backend-us.com/" />
                </when>
                <when condition="@("East Asia".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))">
                    <set-backend-service base-url="http://contoso-backend-asia.com/" />
                </when>
                <otherwise>
                    <set-backend-service base-url="http://contoso-backend-other.com/" />
                </otherwise>
            </choose>
        </inbound>
        <backend>
            <base />
        </backend>
        <outbound>
            <base />
        </outbound>
        <on-error>
            <base />
        </on-error>
    </policies>
    

Usar o Gerenciador de Tráfego para roteamento para back-ends regionais

Você também pode antecipar os serviços de back-end com o Gerenciador de Tráfego do Azure, direcionar as chamadas à API para o Gerenciador de Tráfego e permitir que ele resolva o roteamento automaticamente.

  • Para distribuição de tráfego e failover, é recomendável usar o Gerenciador de Tráfego com o método de roteamento Geográfico. Não é recomendável usar o Gerenciador de Tráfego com o método de roteamento ponderado com Gerenciamento de API back-ends.

  • Para controle de tráfego durante operações de manutenção, recomendamos usar o método de roteamento de prioridade.

Usar o roteamento personalizado para gateways regionais do Gerenciamento de API

O Gerenciamento de API roteia as solicitações para um gateway regional com base na menor latência. Embora não seja possível substituir essa configuração no Gerenciamento de API, você pode usar seu próprio Gerenciador de Tráfego com regras de roteamento personalizadas.

  1. Crie seu próprio Gerenciador de Tráfego do Azure.
  2. Se você estiver usando um domínio personalizado, use-o com o Gerenciador de Tráfego em vez do serviço Gerenciamento de API.
  3. Configure os pontos de extremidade regionais do Gerenciamento de API no Gerenciador de Tráfego. Os pontos de extremidade regionais seguem o padrão de URL de https://<service-name>-<region>-01.regional.azure-api.net, por exemplo https://contoso-westus2-01.regional.azure-api.net.
  4. Configure os pontos de extremidade regionais de status do Gerenciamento de API no Gerenciador de Tráfego. Os pontos de extremidade regionais de status seguem o padrão de URL de https://<service-name>-<region>-01.regional.azure-api.net/status-0123456789abcdef, por exemplo https://contoso-westus2-01.regional.azure-api.net/status-0123456789abcdef.
  5. Especifique o método de roteamento do Gerenciador de Tráfego.

Desabilitar o roteamento para um gateway regional

Em algumas condições, talvez seja necessário desabilitar temporariamente o roteamento para um dos gateways regionais. Por exemplo:

  • Depois de adicionar uma nova região, para mantê-la desabilitada enquanto você configura e testa o serviço de back-end regional
  • Durante a manutenção regular de back-end em uma região
  • Para redirecionar o tráfego a outras regiões durante uma simulação de recuperação de desastre planejada que simula uma região não disponível ou durante uma falha regional

Para desabilitar o roteamento a um gateway regional na instância do Gerenciamento de API, atualize o valor da propriedade disableGateway do gateway para true. Você pode definir o valor usando a API REST Criar ou atualizar serviço, o comando az apim update na CLI do Azure, o cmdlet set-azapimanagement do Azure PowerShell ou outras ferramentas do Azure.

Observação

Você só pode desabilitar o roteamento para um gateway regional quando estiver usando o roteamento padrão do Gerenciamento de API, e não uma solução de roteamento personalizada.

Para desabilitar um gateway regional usando a CLI do Azure:

  1. Use o comando az apim show para mostrar os locais, o status do gateway e as URLs regionais configuradas para a instância do Gerenciamento de API.

    az apim show --name contoso --resource-group apim-hello-world-resource \
        --query "additionalLocations[].{Location:location,Disabled:disableGateway,Url:gatewayRegionalUrl}" \
        --output table
    

    Saída de exemplo:

    Location    Disabled    Url
    ----------  ----------  ------------------------------------------------------------
    West US 2   True        https://contoso-westus2-01.regional.azure-api.net
    West Europe True        https://contoso-westeurope-01.regional.azure-api.net
    
  2. Use o comando az apim update para desabilitar o gateway em um local disponível, como o Oeste dos EUA 2.

    az apim update --name contoso --resource-group apim-hello-world-resource \
    --set additionalLocations[location="West US 2"].disableGateway=true
    

    A atualização pode demorar alguns minutos.

  3. Verifique se o tráfego direcionado à URL do gateway regional é redirecionado para outra região.

Para restaurar o roteamento ao gateway regional, defina o valor de disableGateway como false.

Rede Virtual

Esta seção fornece considerações sobre implantações em várias regiões quando a instância de Gerenciamento de API é injetada em uma rede virtual.

  • Configure cada rede regional de modo independente. Os requisitos de conectividade, como regras de grupo de segurança de rede necessárias para uma rede virtual em uma região adicionada, geralmente são os mesmos de uma rede na região primária.
  • As redes virtuais nas diferentes regiões não precisam ser emparelhadas.

Importante

Quando configurado no modo de VNet interna, cada gateway regional também deve ter conectividade de saída na porta 1443 para o banco de dados SQL do Azure configurado para sua instância de Gerenciamento de API, que está apenas na região primária. Certifique-se de permitir a conectividade com o FQDN ou o endereço IP desse banco de dados SQL do Azure em quaisquer rotas ou regras de firewall configuradas para redes em suas regiões secundárias; a marca de serviço SQL do Azure não pode ser usada nesse cenário. Para localizar o nome do banco de dados SQL do Azure na região primária, vá para a página Rede>Status da rede da sua instância de Gerenciamento de API no portal.

Endereços IP

  • Um endereço IP virtual público é criado em todas as regiões adicionadas com uma rede virtual. Para redes virtuais no modo externo ou no modo interno, esse endereço IP público é necessário para o tráfego de gerenciamento na porta 3443.

    • Modo VNet externo – os endereços IP públicos também são necessários para rotear o tráfego HTTP público para os gateways de API.

    • Modo VNet interno – Um endereço IP privado também é criado em todas as regiões adicionadas com uma rede virtual. Use esses endereços para se conectar na rede aos pontos de extremidade de Gerenciamento de API nas regiões primária e secundária.

Roteamento

  • Modo VNet externo – o roteamento do tráfego HTTP público para os gateways regionais é tratado automaticamente, da mesma forma que é para uma instância de Gerenciamento de API não em rede.

  • Modo de VNet interno – O tráfego HTTP privado não é roteado nem tem balanceamento de carga para os gateways regionais por padrão. Os usuários possuem o roteamento e são responsáveis por trazer sua própria solução para gerenciar o roteamento e o balanceamento de carga privado em várias regiões. As soluções de exemplo incluem o Gateway de Aplicativo do Azure e o Gerenciador de Tráfego do Azure.

Próximas etapas