Come posso risolvere i problemi relativi alla mia politica di routing ponderato in Route 53?
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:
Nome | Tipo | TTL | Valori | Peso | Stato del controllo dell’integrità |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 0” | Peso=0 | Controllo dell’integrità associato |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 20” | Peso=20 | Controllo dell’integrità associato |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 50” | Peso=50 | Controllo dell’integrità associato |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 70” | Peso=70 | Controllo 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.
- Se si associano i controlli dell’integrità a un set di record di risorse, Route 53 risponde con il record solo se il controllo dell’integrità associato ha esito positivo. Per ulteriori informazioni, consulta Come Amazon Route 53 determina se un controllo dell’integrità è integro.
- Se un RRSet in una politica non ha un controllo dell’integrità allegato, è sempre considerato integro. È anche incluso nelle possibili risposte alle query DNS. I record che non superano i controlli dell’integrità non vengono restituiti. Controlla la configurazione del controllo dell’integrità e assicurati che sia segnalata come integra.
- Se utilizzi “Evaluate Target Health” con il record di risorse impostato, Route 53 si basa sul controllo dell’integrità riportato dalla risorsa finale. Per ulteriori informazioni, consulta Perché il mio record di alias indica un Application Load Balancer contrassegnato come non integro quando utilizzo “Evaluate Target Health”?
Esempio
Alcuni controlli dell’integrità non vanno a buon fine:
Nome | Tipo | TTL | Valori | Peso | Stato del controllo dell’integrità |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 0” | Peso=0 | Controllo dell’integrità riuscito |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 20” | Peso=20 | Controllo dell’integrità riuscito |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 50” | Peso=50 | Controllo dell’integrità non riuscito |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 70” | Peso=70 | Controllo 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
Nome | Tipo | TTL | Valori | Peso | Stato del controllo dell’integrità |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 0” | Peso=0 | Controllo dell’integrità non riuscito |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 20” | Peso=20 | Controllo dell’integrità non riuscito |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 50” | Peso=50 | Controllo dell’integrità non riuscito |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 70” | Peso=70 | Controllo 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
Nome | Tipo | TTL | Valori | Peso | Stato del controllo dell’integrità |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 0” | Peso=0 | Pass per il controllo dell’integrità |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 20” | Peso=20 | Pass per il controllo dell’integrità |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 50” | Peso=50 | Controllo dell’integrità non riuscito |
weighted.awsexampledomain.com. | TXT | 300 | “Record con peso 70” | Peso=70 | Controllo 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à
Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata un anno fa