Come posso risolvere i problemi relativi alla mia politica di routing ponderato in Route 53?

8 minuti di lettura
0

Ottengo risultati insoliti quando verifico la risoluzione DNS per una politica di routing ponderato in Amazon Route 53.

Breve descrizione

Supponi di aver creato un record di testo (TXT) con il nome “weighted.awsexampledomain.com”. Il record ha un Time to Live (TTL) di 300 secondi e i pesi sono configurati come segue:

NomeTipoTTLValoriPesoStato del controllo dell’integrità
weighted.awsexampledomain.com.TXT300“Record con peso 0”Peso=0Controllo dell’integrità associato
weighted.awsexampledomain.com.TXT300“Record con peso 20”Peso=20Controllo dell’integrità associato
weighted.awsexampledomain.com.TXT300“Record con peso 50”Peso=50Controllo dell’integrità associato
weighted.awsexampledomain.com.TXT300“Record con peso 70”Peso=70Controllo dell’integrità associato

Questa configurazione è referenziata negli esempi seguenti.

Risoluzione

Nota: se riscontri errori durante l'esecuzione dei comandi dell’interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione AWS CLI più recente.

Verifica la tua politica di routing ponderato per identificare il problema

Invia più (oltre 10.000) query per testare la tua politica di routing ponderato. Verifica la risoluzione DNS da più postazioni o interroga direttamente i server dei nomi autoritativi per comprendere la politica. Utilizza i seguenti script per inviare più query DNS per il tuo nome di dominio.

Invia query DNS utilizzando il resolver ricorsivo:

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

Invia le query DNS direttamente ai server dei nomi autoritativi:

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

Esempio di output utilizzando lo strumento awk nell'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"

Usa i risultati del test per risolvere il tuo problema specifico

Problema: le risorse endpoint dei record ponderati non ricevono il volume di traffico previsto.

Route 53 invia il traffico alle risorse in base al peso assegnato al record come percentuale del peso totale di tutti i record. I resolver DNS intermedi memorizzano nella cache le risposte DNS per la durata del record TTL. I client vengono indirizzati solo a endpoint specifici per la durata della risposta memorizzata nella cache.

Esempio

Esegui una ricerca utilizzando il resolver DNS che memorizza nella 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"

Si noti che i risultati precedenti non sono quelli previsti a causa della cache del resolver DNS ricorsivo.

Problema: alcuni record ponderati non vengono restituiti.

Esempio

Alcuni controlli dell’integrità non vanno a buon fine:

NomeTipoTTLValoriPesoStato del controllo dell’integrità
weighted.awsexampledomain.com.TXT300“Record con peso 0”Peso=0Controllo dell’integrità riuscito
weighted.awsexampledomain.com.TXT300“Record con peso 20”Peso=20Controllo dell’integrità riuscito
weighted.awsexampledomain.com.TXT300“Record con peso 50”Peso=50Controllo dell’integrità non riuscito
weighted.awsexampledomain.com.TXT300“Record con peso 70”Peso=70Controllo dell’integrità riuscito
$ 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"

In questo esempio, il “Record con Weight 50” non viene restituito da Route 53 perché il controllo dell’integrità non è riuscito.

Problema: tutti i record ponderati non sono integri.

Anche se nessun record di un gruppo di record è integro, Route 53 deve comunque fornire una risposta alle query DNS. Tuttavia, non ci sono basi per scegliere un record piuttosto che un altro. In questo caso, Route 53 considera integri tutti i record del gruppo. Viene selezionato un record in base alla politica di routing e ai valori specificati per ogni record.

Esempio

NomeTipoTTLValoriPesoStato del controllo dell’integrità
weighted.awsexampledomain.com.TXT300“Record con peso 0”Peso=0Controllo dell’integrità non riuscito
weighted.awsexampledomain.com.TXT300“Record con peso 20”Peso=20Controllo dell’integrità non riuscito
weighted.awsexampledomain.com.TXT300“Record con peso 50”Peso=50Controllo dell’integrità non riuscito
weighted.awsexampledomain.com.TXT300“Record con peso 70”Peso=70Controllo dell’integrità non riuscito
$ 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"

In questo esempio, Route 53 ha considerato tutti i record integri (Fail Open). Route 53 ha risposto alle query DNS in base alle proporzioni configurate. “Record con peso 0” non viene restituito perché il suo peso è zero.

Nota: se si impostano pesi diversi da zero per alcuni record e pesi zero per altri, i controlli dell’integrità funzionano come quando tutti i record hanno pesi diversi da zero. Esistono tuttavia alcune eccezioni:

  • Route 53 inizialmente considera solo i record integri con ponderazione diversa da zero, se presenti.
  • Se tutti i record diversi da zero non sono integri, Route 53 considera i record integri ponderati a zero.

Esempio

NomeTipoTTLValoriPesoStato del controllo dell’integrità
weighted.awsexampledomain.com.TXT300“Record con peso 0”Peso=0Pass per il controllo dell’integrità
weighted.awsexampledomain.com.TXT300“Record con peso 20”Peso=20Pass per il controllo dell’integrità
weighted.awsexampledomain.com.TXT300“Record con peso 50”Peso=50Controllo dell’integrità non riuscito
weighted.awsexampledomain.com.TXT300“Record con peso 70”Peso=70Controllo dell’integrità non riuscito
$ 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"

In questo esempio, Route 53 non considera il record con peso 0. A meno che tutti i record ponderati non siano non integri, Route 53 non restituisce i record con ponderazione zero.

Se imposti un peso uguale per tutti i record di un gruppo, il traffico viene indirizzato verso tutte le risorse integre con la stessa probabilità. Se imposti il “Peso” a zero per tutti i record di un gruppo, il traffico viene indirizzato verso tutte le risorse integre con la stessa probabilità.

Informazioni correlate

Scelta di una politica di routing

In che modo Amazon Route 53 sceglie i record quando viene configurato il controllo dell’integrità

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa