Como posso solucionar problemas com minha política de roteamento ponderado no Route 53?
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:
Nome | Tipo | TTL | Valores | Peso | Status da verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 0” | Peso = 0 | Verificação de integridade associada |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 20” | Peso = 20 | Verificação de integridade associada |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 50” | Peso = 50 | Verificação de integridade associada |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 70” | Peso = 70 | Verificaçã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:
Nome | Tipo | TTL | Valores | Peso | Status da verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 0” | Peso = 0 | Sucesso na verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 20” | Peso = 20 | Sucesso na verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 50” | Peso = 50 | Falha na verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 70” | Peso = 70 | Sucesso 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
Nome | Tipo | TTL | Valores | Peso | Status da verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 0” | Peso = 0 | Falha na verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 20” | Peso = 20 | Falha na verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 50” | Peso = 50 | Falha na verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 70” | Peso = 70 | Falha 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
Nome | Tipo | TTL | Valores | Peso | Status da verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 0” | Peso = 0 | Passe de verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 20” | Peso = 20 | Passe de verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 50” | Peso = 50 | Falha na verificação de integridade |
weighted.awsexampledomain.com. | TXT | 300 | “Grave com peso 70” | Peso = 70 | Falha 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
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano