Implemente uma instância da Gestão de API do Azure em várias regiões do Azure

APLICA-SE A: Premium

A Gestão de API do Azure suporta a implementação em várias regiões, o que permite aos editores de API adicionar gateways de API regionais a uma instância de Gestão de API existente numa ou mais regiões do Azure suportadas. A implementação em várias regiões ajuda a reduzir a latência de pedidos detetada pelos consumidores de API distribuídas geograficamente e melhora a disponibilidade do serviço se uma região ficar offline.

Ao adicionar uma região, pode configurar:

Importante

A funcionalidade para ativar o armazenamento de dados de clientes numa única região só está atualmente disponível na região Sudeste Asiático (Singapura) da Área Geográfica Ásia-Pacífico. Para todas as outras regiões, os dados do cliente são armazenados na Geo.

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

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

  • Se você quiser configurar um local secundário para sua instância de Gerenciamento de API quando ela for implantada (injetada) em uma rede virtual, a região de rede virtual e sub-rede deverá corresponder ao local secundário que você está configurando. Se você estiver adicionando, removendo ou habilitando a zona de disponibilidade na região primária, ou se estiver alterando a sub-rede da região primária, o endereço VIP da sua instância de Gerenciamento de API será alterado. Para obter mais informações, consulte 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 seu próprio VIP privado.

  • As configurações do gateway, como as APIs e as definições de política, são sincronizadas regularmente entre as regiões primárias e secundárias que adicionar. A propagação de atualizações para os gateways regionais normalmente leva menos de 10 segundos. A implementação em várias regiões fornece disponibilidade do gateway de API em mais do que uma região e fornece disponibilidade de serviço se uma região ficar 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 não conectado em 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. No modo VNet interno, os clientes devem configurar sua própria solução para rotear e balancear a carga do tráfego entre os gateways regionais. Para obter detalhes, consulte Considerações sobre rede.

  • O gateway em cada região (incluindo a região primária) tem um nome DNS regional que segue 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.

  • Se uma região ficar offline, os pedidos de API são automaticamente encaminhados em torno da região que falhou para o gateway mais próximo seguinte.

  • Se a região primária ficar offline, o plano de gestão da Gestão de API e o portal do programador ficam indisponíveis, mas as regiões secundárias continuam a fornecer pedidos de API com a configuração de gateway mais recente.

Pré-requisitos

  • Se você não criou uma instância de serviço de Gerenciamento de API, consulte Criar uma instância de serviço de Gerenciamento de API. Selecione a camada de serviço Premium.
  • Se sua instância de Gerenciamento de API for implantada em uma rede virtual, certifique-se de configurar uma rede virtual e uma sub-rede no local que planeja adicionar e dentro da mesma assinatura. Consulte Pré-requisitos de rede virtual.

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 Locais no menu à esquerda.
  2. Selecione + Adicionar na barra superior.
  3. Selecione o local adicionado na lista suspensa.
  4. Selecione o número de unidades de escala no local.
  5. Opcionalmente, 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, incluindo rede virtual, sub-rede e endereço IP público (se estiver habilitando zonas de disponibilidade).
  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 Locais no menu à esquerda.
  2. Para o local que você gostaria de remover, selecione o menu de contexto usando o botão ... na extremidade direita da tabela. Selecione Eliminar.
  3. Confirme a exclusão e selecione Salvar para aplicar as alterações.

Encaminhar chamadas de API para serviços de back-end regionais

Por padrão, cada API roteia solicitações para uma única URL de serviço de back-end. Mesmo que você tenha configurado gateways de 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 virá apenas das respostas armazenadas em cache no Gerenciamento de API do Azure em uma região específica para a solicitação; entrar em contato com o back-end em todo o mundo ainda pode causar alta latência.

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

  1. Navegue até sua instância de Gerenciamento de API do Azure e selecione APIs no menu à esquerda.

  2. Selecione a API desejada.

  3. Selecione Editor de código na lista suspensa de seta no processamento de entrada.

    Editor de código API

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

    Por exemplo, o seguinte arquivo XML funcionaria para as regiões Oeste dos EUA e Ásia Oriental:

    <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 frontar seus serviços de back-end com o Gerenciador de Tráfego do Azure, direcionar as chamadas de API para o Gerenciador de Tráfego e permitir que ele resolva o roteamento automaticamente.

  • Para distribuição de tráfego e failover, recomendamos o uso do Gerenciador de Tráfego com o método de roteamento geográfico. Não recomendamos o uso do Gerenciador de Tráfego com o método de roteamento ponderado com back-ends de Gerenciamento de API.

  • Para controle de tráfego durante as operações de manutenção, recomendamos o uso do método de roteamento prioritário.

Usar roteamento personalizado para gateways regionais de 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 estiver a utilizar um domínio personalizado, utilize-o com o Gestor de Tráfego em vez do serviço de Gestão 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 de status regional do Gerenciamento de API no Gerenciador de Tráfego. Os pontos de extremidade de status regional 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 para outras regiões durante um exercício de recuperação de desastres planejado que simula uma região indisponível ou durante uma falha regional

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

Nota

Você só pode desabilitar o roteamento para um gateway regional quando estiver usando o roteamento padrão do Gerenciamento de API, 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 de 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 West US 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 para a URL do gateway regional foi redirecionado para outra região.

Para restaurar o roteamento para o gateway regional, defina o valor de disableGateway falsecomo .

Redes virtuais

Esta seção fornece considerações para 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 forma independente. Os requisitos de conectividade, como as 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 de ser emparelhadas.

Importante

Quando configurado no modo VNet interno, cada gateway regional também deve ter conectividade de saída na porta 1433 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 endereço IP deste 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 neste cenário. Para localizar o nome do banco de dados SQL do Azure na região primária, vá para a >página 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 cada região adicionada com uma rede virtual. Para redes virtuais no modo externo ou interno, esse endereço IP público é usado para gerenciar o tráfego na porta3443.

    • 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 cada região adicionada com uma rede virtual. Use esses endereços para se conectar dentro da rede aos pontos de extremidade de Gerenciamento de API nas regiões primária e secundária.

Encaminhamento

  • 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 conectada.

  • Modo VNet interno - O tráfego HTTP privado não é roteado ou balanceado de carga para os gateways regionais por padrão. Os usuários são proprietários do roteamento e são responsáveis por trazer sua própria solução para gerenciar o roteamento e o balanceamento de carga privada em várias regiões.

Próximos passos