Como posso solucionar problemas com minha política de roteamento ponderado no Route 53?

8 minuto de leitura
0

Eu obtenho resultados inesperados ao testar a resolução de DNS para uma política de roteamento ponderado no Amazon Route 53.

Breve descrição

Suponha que você tenha criado um registro de texto (TXT) com o nome “weighted.awsexampledomain.com”. O registro tem um tempo de vida (TTL) de 300 segundos e tem pesos configurados da seguinte forma:

NomeTipoTTLValoresPesoStatus da verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 0”Peso = 0Verificação de integridade associada
weighted.awsexampledomain.com.TXT300“Grave com peso 20”Peso = 20Verificação de integridade associada
weighted.awsexampledomain.com.TXT300“Grave com peso 50”Peso = 50Verificação de integridade associada
weighted.awsexampledomain.com.TXT300“Grave com peso 70”Peso = 70Verificação de integridade associada

Essa configuração é referenciada nos exemplos a seguir.

Resolução

Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

Teste sua política de roteamento ponderado para identificar o problema

Envie várias (mais de 10.000) consultas para testar sua política de roteamento ponderado. Teste a resolução de DNS em vários locais ou consulte diretamente os servidores de nomes autorizados para entender a política. Use os scripts a seguir para enviar várias consultas de DNS para seu nome de domínio.

Envie consultas de DNS usando o resolvedor recursivo:

#!/bin/bash
for i in {1..10000}
do
domain=$(dig <domain-name> <type> @RecursiveResolver_IP +short)
echo -e  "$domain" >> RecursiveResolver_results.txt
done

Envie as consultas de DNS diretamente para os servidores de nome autorizados:

#!/bin/bash
for i in {1..10000}
do
domain=$(dig <domain-name> <type> @AuthoritativeNameserver_IP +short)
echo -e  "$domain" >> AuthoritativeNameServer_results.txt
done

Exemplo de saída usando a awk tool na AWS CLI:

$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @172.16.173.64 +short); echo -e  "$domain" >> RecursiveResolver_results.txt; done
$ awk ' " " ' RecursiveResolver_results.txt | sort | uniq -c
1344 "Record with Weight 20"
3780 "Record with Weight 50"
4876 "Record with Weight 70"

Use os resultados do teste para solucionar seu problema específico

Problema: Os recursos de endpoint dos registros ponderados não estão recebendo a taxa de tráfego esperada.

O Route 53 envia tráfego para recursos com base no peso atribuído ao registro como uma proporção do peso total de todos os registros. Os resolvedores de DNS intermediários armazenam em cache as respostas de DNS durante o TTL do registro. Os clientes são direcionados apenas para endpoints específicos durante o período devido à resposta em cache.

Exemplo

Você consulta o resolvedor de DNS de cache 192.168.1.2:

$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @192.168.1.2 +short); echo -e  "$domain" >> CachingResolver_results.txt; done

$ awk ' " " ' CachingResolver_results.txt | sort | uniq -c
3561 "Record with Weight 20"
1256 "Record with Weight 50"
5183 "Record with Weight 70"

Observe que os resultados anteriores não são os esperados devido ao cache no resolvedor de DNS recursivo.

Problema: Alguns registros ponderados não são retornados.

  • Se você associar verificações de integridade a um conjunto de registros de recursos, o Route 53 responderá com o registro somente se a verificação de integridade associada for bem-sucedida. Para obter mais informações, consulte How Amazon Route 53 determines whether a health check is healthy (Como o Amazon Route 53 determina se uma verificação de integridade é íntegra).
  • Se um RSet em uma política não tiver uma verificação de integridade anexada, ele sempre será considerado saudável. Também está incluído nas possíveis respostas às consultas de DNS. Registros que falham nas verificações de integridade não são retornados. Confira a configuração da verificação de integridade e veja se ela é relatada como íntegra.
  • Ao utilizar “Avaliar a integridade do alvo” com o conjunto de registros de recursos, o Route 53 dependerá da verificação de integridade relatada pelo recurso final. Para obter mais informações, consulte Why is my alias record pointing to an Application Load Balancer marked as unhealthy when I’m using “Evaluate Target Health"? (Por que meu registro de alias está apontando para um Application Load Balancer marcado como íntegro quando estou usando “Avaliar a integridade do alvo”?)

Exemplo

Algumas verificações de integridade estão com falha:

NomeTipoTTLValoresPesoStatus da verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 0”Peso = 0Sucesso na verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 20”Peso = 20Sucesso na verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 50”Peso = 50Falha na verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 70”Peso = 70Sucesso na verificação de integridade
$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @192.168.1.2 +short); echo -e  "$domain" >> HealthCheck_results.txt; done

$ awk ' " " ' HealthCheck_results.txt | sort | uniq -c
3602 "Record with Weight 20"
6398 "Record with Weight 70"

Neste exemplo, o “Registro com peso 50" não é retornado pelo Route 53 porque sua verificação de integridade está falhando.

Problema: Todos os registros ponderados não são íntegros.

Mesmo que nenhum dos registros em um grupo de registros esteja íntegro, o Route 53 ainda deve fornecer uma resposta às consultas de DNS. No entanto, não há base para escolher um registro em vez de outro. Nesse caso, o Route 53 considera todos os registros do grupo íntegros. Um registro é selecionado com base na política de roteamento e nos valores que você especifica para cada registro.

Exemplo

NomeTipoTTLValoresPesoStatus da verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 0”Peso = 0Falha na verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 20”Peso = 20Falha na verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 50”Peso = 50Falha na verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 70”Peso = 70Falha na verificação de integridade
$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @205.251.194.16 +short); echo -e  "$domain" >> All_UnHealthy_results.txt; done

$ awk ' " " ' All_UnHealthy_results.txt | sort | uniq -c
1446 "Record with Weight 20"
3554 "Record with Weight 50"
5000 "Record with Weight 70"

Neste exemplo, o Route 53 considerou todos os registros íntegros (Abertura com Falha). O Route 53 respondeu às solicitações de DNS com base nas proporções configuradas. “Registro com peso 0" não é retornado porque seu peso é zero.

Observação: Se você definir pesos diferentes de zero para alguns registros e pesos zero para outros, as verificações de integridade funcionarão da mesma forma que quando todos os registros têm pesos diferentes de zero. No entanto, há algumas exceções:

  • O Route 53 considera inicialmente apenas os registros íntegros com ponderação diferente de zero, se houver.
  • Se todos os registros diferentes de zero não estiverem íntegros, o Route 53 considerará os registros íntegros com ponderação zero.

Exemplo

NomeTipoTTLValoresPesoStatus da verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 0”Peso = 0Passe de verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 20”Peso = 20Passe de verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 50”Peso = 50Falha na verificação de integridade
weighted.awsexampledomain.com.TXT300“Grave com peso 70”Peso = 70Falha na verificação de integridade
$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @192.168.1.2 +short); echo -e  "$domain" >> HealthCheck_results.txt; done

$ awk ' " " ' HealthCheck_results.txt | sort | uniq -c
10000 "Record with Weight 20"

Neste exemplo, o Route 53 não considera o registro com peso 0. A menos que todos os registros ponderados não estejam íntegros, o Route 53 não retorna os registros com ponderação zero.

Se você definir um peso igual para todos os registros em um grupo, o tráfego será roteado para todos os recursos íntegros com a mesma probabilidade. Se você definir “Peso” como zero para todos os registros em um grupo, o tráfego será direcionado para todos os recursos íntegros com a mesma probabilidade.

Informações relacionadas

Escolher uma política de roteamento

Como o Amazon Route 53 escolhe registros quando a verificação de integridade é configurada

AWS OFICIAL
AWS OFICIALAtualizada há um ano