

# Configurar verificações de integridade personalizadas para failover de DNS para um API Gateway
<a name="dns-failover"></a>

É possível usar as verificações de integridade do Amazon Route 53 para controlar o failover de DNS de uma API do API Gateway em uma Região da AWS primária para outra em uma região secundária. Isso pode ajudar a mitigar os impactos no caso de um problema regional. Se você usa um domínio personalizado, pode realizar o failover sem exigir que os clientes alterem os endpoints da API.

Quando você escolhe [Evaluate Target Health](https://docs.aws.amazon.com/Route53/latest/APIReference/API_AliasTarget.html#Route53-Type-AliasTarget-EvaluateTargetHealth>Evaluate Target Health) (Avaliar integridade do destino) para um registro de alias, esses registros falham somente quando o serviço API Gateway não está disponível na região. Em alguns casos, suas próprias APIs do API Gateway podem sofrer interrupções antes desse período. Para controlar o failover de DNS diretamente, configure verificações de integridade personalizadas do Route 53 para as APIs do API Gateway. Neste exemplo, você usa um alarme do CloudWatch que ajuda os operadores a controlar o failover de DNS. Para ver mais exemplos e outras considerações ao configurar o failover, consulte [Criar mecanismos de recuperação de desastres usando o Route 53](https://aws.amazon.com/blogs/networking-and-content-delivery/creating-disaster-recovery-mechanisms-using-amazon-route-53/) e [Realizar verificações de integridade do Route 53 em recursos privados em uma VPC com o AWS Lambda e o CloudWatch](https://aws.amazon.com/blogs/networking-and-content-delivery/performing-route-53-health-checks-on-private-resources-in-a-vpc-with-aws-lambda-and-amazon-cloudwatch/).

**Topics**
+ [Pré-requisitos](#dns-failover-prereqs)
+ [Etapa 1: configurar recursos](#dns-failover-intial-setup)
+ [Etapa 2: iniciar o failover para a região secundária](#dns-failover-initiate)
+ [Etapa 3: testar o failover](#dns-failover-test)
+ [Etapa 4: retornar à região primária](#dns-failover-return)
+ [Próximas etapas: personalizar e testar regularmente](#dns-failover-next-steps)

## Pré-requisitos
<a name="dns-failover-prereqs"></a>

Para concluir esse procedimento, você deve criar e configurar os seguintes recursos:
+ Um nome de domínio de sua propriedade.
+ Um certificado do ACM para esse nome de domínio em duas Regiões da AWS. Para obter mais informações, consulte [Pré-requisitos referentes a nomes de domínio personalizados](how-to-custom-domains.md#how-to-custom-domains-prerequisites).
+ Uma zona hospedada no Route 53 para seu nome de domínio. Para obter mais informações, consulte [Trabalhar com zonas hospedadas](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-working-with.html) no Guia do desenvolvedor do Amazon Route 53.

Para receber mais informações sobre como criar registros DNS de failover do Route 53 para os nomes de domínio, consulte [Escolher uma política de roteamento](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html) no Guia do desenvolvedor do Amazon Route 53. Para receber mais informações sobre como monitorar um alarme do CloudWatch, consulte [Monitorar um alarme do CloudWatch](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating-values.html#health-checks-creating-values-cloudwatch) no Guia do desenvolvedor do Amazon Route 53.

## Etapa 1: configurar recursos
<a name="dns-failover-intial-setup"></a>

Neste exemplo, você cria os seguintes recursos para configurar o failover de DNS para seu nome de domínio:
+ APIs do API Gateway em duas Regiões da AWS
+ Nomes de domínio personalizados do API Gateway com o mesmo nome em duas Regiões da AWS
+ Mapeamentos de API do API Gateway que conectam as APIs do API Gateway aos nomes de domínio personalizados
+ Registros de failover de DNS do Route 53 para os nomes de domínio
+ Um alarme do CloudWatch na região secundária
+ Uma verificação de integridade do Route 53 com base no alarme do CloudWatch na região secundária

Primeiro, certifique-se de que você tenha todos os recursos necessários nas regiões primária e secundária. A região secundária deve conter o alarme e a verificação de integridade. Dessa maneira, você não depende da região primária para realizar o failover. Por exemplo, modelos do CloudFormation que criam esses recursos, consulte [samples/primary.zip](samples/primary.zip) e [samples/secondary.zip](samples/secondary.zip).

**Importante**  
Antes do failover para a região secundária, certifique-se de que todos os recursos necessários estejam disponíveis. Caso contrário, a API não estará pronta para o tráfego na região secundária. 

## Etapa 2: iniciar o failover para a região secundária
<a name="dns-failover-initiate"></a>

No exemplo a seguir, a região em espera recebe uma métrica do CloudWatch e inicia o failover. Usamos uma métrica personalizada que exige a intervenção do operador para iniciar o failover.

```
aws cloudwatch put-metric-data \
    --metric-name Failover \
    --namespace HealthCheck \
    --unit Count \
    --value 1 \
    --region us-west-1
```

Substitua os dados de métrica pelos dados correspondentes para o alarme do CloudWatch que você configurou.

## Etapa 3: testar o failover
<a name="dns-failover-test"></a>

Invoque a API e verifique se você recebeu uma resposta da região secundária. Se você usou os modelos de exemplo na etapa 1, a resposta muda de `{"message": "Hello from the primary Region!"}` para `{"message": "Hello from the secondary Region!"}` após o failover.

```
curl https://my-api.example.com

{"message": "Hello from the secondary Region!"}
```

## Etapa 4: retornar à região primária
<a name="dns-failover-return"></a>

Para retornar à região primária, envie uma métrica do CloudWatch que resulte em aprovação na verificação de integridade.

```
aws cloudwatch put-metric-data \
    --metric-name Failover \
    --namespace HealthCheck \
    --unit Count \
    --value 0 \
    --region us-west-1
```

Substitua os dados de métrica pelos dados correspondentes para o alarme do CloudWatch que você configurou.

Invoque a API e verifique se você recebeu uma resposta da região primária. Se você usou os modelos de exemplo na etapa 1, a resposta muda de `{"message": "Hello from the secondary Region!"}` para `{"message": "Hello from the primary Region!"}`.

```
curl https://my-api.example.com

{"message": "Hello from the primary Region!"}
```

## Próximas etapas: personalizar e testar regularmente
<a name="dns-failover-next-steps"></a>

Este exemplo demonstra uma maneira de configurar o failover de DNS. É possível usar uma variedade de métricas do CloudWatch ou endpoints HTTP para as verificações de integridade que gerenciam o failover. Teste regularmente os mecanismos de failover para garantir que eles funcionem conforme o esperado e que os operadores estejam familiarizados com seus procedimentos de failover.