

# Otimizar a alta disponibilidade com o failover de origem do CloudFront
<a name="high_availability_origin_failover"></a>

Também é possível configurar o CloudFront failover de origem para cenários que exigem alta disponibilidade. Para começar, crie um *grupo de origem* com duas origens: uma primária e outra secundária. Se a origem primária estiver indisponível ou retornar códigos de status de resposta HTTP específicos que indiquem falha, o CloudFront alternará automaticamente para a origem secundária.

Para configurar o failover de origem, você deve ter uma distribuição com pelo menos duas origens. Depois, crie um grupo de origens para a distribuição que inclua duas origens, definindo uma delas como a primária. Por último, crie ou atualize um comportamento de cache para usar o grupo de origem.

Para consultar as etapas da configuração de grupos de origens e configurar opções específicas de failover de origem, consulte [Criar um grupo de origem](#concept_origin_groups.creating).

Depois de você configurar o failover de origem para um comportamento de cache, o CloudFront faz o seguinte para solicitações do visualizador:
+ Quando houver um acerto de cache, o CloudFront retornará o objeto solicitado.
+ Quando houver um erro de cache, o CloudFront roteará a solicitação para a origem primária no grupo de origem.
+ Quando a origem primária retornar um código de status que não esteja configurado para failover, como um código de status HTTP 2xx ou 3xx, o CloudFront fornecerá o objeto solicitado ao visualizador.
+ Quando ocorrer uma das seguintes situações:
  + A origem primária retorna um código de status HTTP que você configurou para failover.
  + O CloudFront não consegue se conectar à origem primária (quando 503 é definido como um código de failover).
  + A resposta da origem primária demora muito (atinge o tempo limite) (quando 504 é definido como um código de failover).

  Assim, o CloudFront roteia a solicitação para a origem secundária do grupo de origem.
**nota**  
Em alguns casos de uso, como conteúdo de vídeo por streaming, convém que o CloudFront faça failover para a origem secundária rapidamente. Para ajustar a rapidez com que o CloudFront faz failover para a origem secundária, consulte [Controlar tempos limite e tentativas da origem](#controlling-attempts-and-timeouts).

O CloudFront roteia todas as solicitações recebidas para a origem primária, mesmo quando uma solicitação anterior tenha feito failover para a origem secundária. O CloudFront só envia solicitações para a origem secundária após uma falha de uma solicitação para a origem primária.

O CloudFront faz failover para a origem secundária somente quando o método HTTP da solicitação do visualizador for `GET`, `HEAD` ou `OPTIONS`. O CloudFront não faz failover quando o visualizador envia um método HTTP diferente (por exemplo `POST`, `PUT` etc.).

**nota**  
O CloudFront não fará failover se `OPTIONS` se estiver definida como [Métodos HTTP em cache](DownloadDistValuesCacheBehavior.md#DownloadDistValuesCachedHTTPMethods) no comportamento de cache.

O diagrama a seguir mostra como o failover de origem funciona.

![\[Como o failover de origem funciona\]](http://docs.aws.amazon.com/pt_br/AmazonCloudFront/latest/DeveloperGuide/images/origingroups-overview.png)


**Topics**
+ [Criar um grupo de origem](#concept_origin_groups.creating)
+ [Controlar tempos limite e tentativas da origem](#controlling-attempts-and-timeouts)
+ [Uso do failover de origem com funções do Lambda@Edge](#concept_origin_groups.lambda)
+ [Usar páginas de erro personalizadas com failover de origem](#concept_origin_groups.custom-error)

## Criar um grupo de origem
<a name="concept_origin_groups.creating"></a><a name="create-origin-groups-procedure"></a>

**Para criar um grupo de origens**

1. Faça login no Console de gerenciamento da AWS e abra o console do CloudFront em [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Escolha a distribuição para a qual deseja criar o grupo de origem.

1. Escolha a guia **Origens**.

1. Certifique-se de que a distribuição tenha mais de uma origem. Se ela não tiver, adicione uma segunda origem.

1. Na guia **Origins** (Origem), no painel **Origin groups** (Grupos de origens), escolha **Create origin group** (Criar grupo de origens).

1. Escolha as origens para o grupo de origem. Depois de adicioná-las, use as setas para definir a prioridade, ou seja, qual será a origem primária e qual será a secundária.

1. Insira um nome para o grupo de origens.

1. Escolha os códigos de status de HTTP a serem usados como critérios de failover. Você pode escolher qualquer combinação dos seguintes códigos de status: 400, 403, 404, 416, 429, 500, 502, 503 ou 504. Quando o CloudFront recebe uma resposta com um dos códigos de status especificados, ele executa o failover para a origem secundária.
**nota**  
O CloudFront faz failover para a origem secundária somente quando o método HTTP da solicitação do visualizador for `GET`, `HEAD` ou `OPTIONS`. O CloudFront não faz failover quando o visualizador envia um método HTTP diferente (por exemplo `POST`, `PUT` etc.).

1. Em **Critérios de seleção de origem**, especifique como suas origens são selecionadas quando sua distribuição roteia as solicitações do visualizador. Você pode escolher as seguintes opções:  
**Padrão**  
O CloudFront usará a prioridade de origem padrão que você especificar na página **Configurações**.  
**Pontuação de qualidade de mídia**  
O CloudFront rastreia e usa essa pontuação para determinar a primeira origem à qual encaminhar a solicitação. Isso também autoriza o CloudFront a fazer solicitações `HEAD` assíncronas à origem alternativa no grupo de origens para determinar a respectiva pontuação de qualidade de mídia. Você só pode escolher essa opção para origens do AWS Elemental MediaPackage v2. Para obter mais informações, consulte [Resiliência com Reconhecimento de Qualidade da Mídia](media-quality-score.md). 

1. Escolha **Create origin group** (Criar grupo de origens).

Certifique-se de atribuir seu grupo de origem como origem para o comportamento de cache distribuído. Para obter mais informações, consulte [Nome](DownloadDistValuesOrigin.md#DownloadDistValuesId).

## Controlar tempos limite e tentativas da origem
<a name="controlling-attempts-and-timeouts"></a>

Por padrão, o CloudFront tenta se conectar à origem primária em um grupo de origem por até 30 segundos (3 tentativas de conexão de 10 segundos cada) antes de fazer failover para a origem secundária. Para alguns casos de uso, como conteúdo de vídeo por streaming, talvez você queira que o CloudFront faça failover para a origem secundária mais rapidamente. É possível ajustar as configurações a seguir para afetar a rapidez com que o CloudFront faz failover para a origem secundária. Se a origem for uma origem secundária ou uma origem que não faça parte de um grupo de origem, essas configurações afetarão a rapidez com que o CloudFront retorna uma resposta HTTP 504 ao visualizador.

Para que o failover seja feito mais rapidamente, especifique um tempo limite de conexão mais curto, menos tentativas de conexão ou ambos. Para origens personalizadas (incluindo origens de bucket do Amazon S3 que *são* configuradas com hospedagem de site estático), também é possível ajustar o tempo limite de resposta da origem.

**Tempo limite de conexão da origem**  
A configuração de tempo limite de conexão da origem afeta o tempo de espera do CloudFront ao tentar estabelecer uma conexão com a origem. Por padrão, o CloudFront aguarda 10 segundos para estabelecer uma conexão, mas é possível especificar de 1 a 10 segundos (inclusive). Para obter mais informações, consulte [Tempo limite da conexão](DownloadDistValuesOrigin.md#origin-connection-timeout).

**Tentativas de conexão da origem**  
A configuração de tentativas de conexão da origem afeta o número de vezes que o CloudFront tenta se conectar à origem. Por padrão, o CloudFront tenta se conectar três vezes, mas é possível especificar de uma a três (inclusive). Para obter mais informações, consulte [Tentativas de conexão](DownloadDistValuesOrigin.md#origin-connection-attempts).  
Para uma origem personalizada (incluindo um bucket do Amazon S3 configurado com hospedagem de site estático), essa configuração também afeta o número de vezes que o CloudFront tenta obter uma resposta da origem caso o tempo limite de resposta da origem expire.

**Tempo limite da e resposta da origem**  
A configuração do tempo limite de resposta da origem, também chamada de tempo limite de leitura de origem, afeta o tempo que o CloudFront espera para receber uma resposta (ou para receber a resposta completa) da origem. Por padrão, o CloudFront aguarda 30 segundos, mas é possível especificar de 1 a 120 segundos (inclusive). Para obter mais informações, consulte [Tempo limite de resposta](DownloadDistValuesOrigin.md#DownloadDistValuesOriginResponseTimeout).

### Como alterar essas configurações
<a name="controlling-attempts-and-timeouts-how-to"></a>

**Como alterar essas configurações no [console do CloudFront](https://console.aws.amazon.com/cloudfront/v4/home)**
+ Para uma nova origem ou uma nova distribuição, especifique esses valores ao criar o recurso.
+ Para uma origem existente em uma distribuição existente, especifique esses valores ao editar a origem.

Para obter mais informações, consulte [Referência de configurações de todas as distribuições](distribution-web-values-specify.md).

## Uso do failover de origem com funções do Lambda@Edge
<a name="concept_origin_groups.lambda"></a>

Você pode usar as funções do Lambda@Edge com distribuições do CloudFront que tiver configurado com grupos de origem. Para usar uma função do Lambda, especifique-a em um [trigger de solicitação origem ou resposta de origem](lambda-cloudfront-trigger-events.md) de um grupo de origem ao criar o comportamento de cache. Ao usar uma função do Lambda@Edge com um grupo de origem, ela poderá ser acionada duas vezes para uma única solicitação de visualizador. Por exemplo, considere este cenário:

1. Você cria uma função do Lambda@Edge com um trigger de solicitação de origem.

1. A função do Lambda é acionada quando o CloudFront envia uma solicitação para a origem primária (em um falha de cache).

1. A origem primária responde com um código de status de HTTP configurado para failover.

1. A função do Lambda é acionada novamente quando o CloudFront envia a mesma solicitação à origem secundária.

O diagrama a seguir ilustra como o failover de origem funciona quando você inclui uma função do Lambda@Edge em uma solicitação de origem ou trigger de resposta.

![\[Como um failover de origem funciona com funções do Lambda@Edge\]](http://docs.aws.amazon.com/pt_br/AmazonCloudFront/latest/DeveloperGuide/images/origingroups-with-lambda-edge.png)


Para obter mais informações sobre como usar triggers do Lambda@Edge, consulte [Adicionar acionadores para uma função do Lambda@Edge](lambda-edge-add-triggers.md).

Para ter mais informações sobre como gerenciar failover de DNS, consulte [Configurar failover de DNS](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring.html) no *Guia do desenvolvedor do Amazon Route 53*.

## Usar páginas de erro personalizadas com failover de origem
<a name="concept_origin_groups.custom-error"></a>

Você pode usar as páginas de erro personalizadas com grupos de origens de forma semelhante à forma como você usá-los com origens que não são configuradas para o failover de origem. 

Ao usar o failover de origem, você pode configurar o CloudFront para retornar uma página de erro personalizada para a origem primária ou secundária (ou ambas):
+ **Retornar uma página de erro personalizada para a origem primária**: se a origem primária retornar um código de status HTTP que não estiver configurado para failover, o CloudFront retornará a página de erro personalizada aos visualizadores.
+ **Retornar uma página de erro personalizada à origem secundária**: se o CloudFront receber um código de status de falha da origem secundária, o CloudFront retornará a página de erro personalizada.

Para obter mais informações sobre como usar páginas de erro personalizadas com o CloudFront, consulte [Gerar respostas a erros personalizadas](GeneratingCustomErrorResponses.md).