¿Cómo puedo solucionar problemas con mi política de enrutamiento ponderado en Route 53?

8 minutos de lectura
0

Obtengo resultados inesperados al probar la resolución de DNS para una política de enrutamiento ponderado en Amazon Route 53.

Descripción breve

Supongamos que ha creado un registro de texto (TXT) con el nombre «weighted.awsexampledomain.com». El registro tiene un período de vida (TTL) de 300 segundos y los pesos están configurados de la siguiente manera:

NombreTipoTTLValoresPesoEstado de la comprobación de estado
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 0»Peso=0Comprobación de estado asociada
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 20»Peso=20Comprobación de estado asociada
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 50»Peso=50Comprobación de estado asociada
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 70»Peso=70Comprobación de estado asociada

En los siguientes ejemplos se hace referencia a esta configuración.

Resolución

Nota: Si recibe errores al ejecutar los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de la AWS CLI.

Pruebe su política de enrutamiento ponderado para identificar el problema

Envíe varias consultas (más de 10 000) para probar su política de enrutamiento ponderado. Pruebe la resolución de DNS desde varias ubicaciones o consulte directamente a los servidores de nombres autorizados para comprender la política. Utilice los siguientes scripts para enviar varias consultas DNS para su nombre de dominio.

Envíe consultas de DNS mediante el solucionador recursivo:

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

Envíe consultas DNS directamente a los servidores de nombres autorizados:

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

Ejemplo de salida con la herramienta awk de la CLI de AWS:

$ 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 los resultados de las pruebas para solucionar su problema específico

Problema: Los recursos de punto de conexión de los registros ponderados no reciben la proporción de tráfico esperada.

La ruta 53 envía el tráfico a los recursos en función del peso asignado al registro como proporción del peso total de todos los registros. Los solucionadores de DNS intermedios almacenan en caché las respuestas de DNS durante el registro TTL. Los clientes solo se dirigen a puntos de conexión específicos durante el tiempo debido a la respuesta almacenada en caché.

Ejemplo

Realiza una consulta al solucionador de DNS de almacenamiento en caché 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"

Tenga en cuenta que los resultados anteriores no son los esperados debido a la caché del solucionador de DNS recursivo.

Problema: Algunos registros ponderados no se devuelven.

Ejemplo

Algunas comprobaciones de estado están fallando:

NombreTipoTTLValoresPesoEstado de la comprobación de estado
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 0»Peso=0Comprobación de estado exitosa
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 20»Peso=20Comprobación de estado exitosa
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 50»Peso=50Comprobación de estado fallida
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 70»Peso=70Comprobación de estado exitosa
$ 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"

En este ejemplo, Route 53 no devuelve el «Registro con un peso de 50» porque su comprobación de estado no funciona.

Problema: Todos los registros ponderados no están en buen estado.

Incluso si ninguno de los registros de un grupo de registros está en buen estado, Route 53 debe proporcionar una respuesta a las consultas de DNS. Sin embargo, no hay ninguna base para elegir un registro en lugar de otro. En este caso, Route 53 considera que todos los registros del grupo están en buen estado. Se selecciona un registro en función de la política de enrutamiento y de los valores que especifique para cada registro.

Ejemplo

NombreTipoTTLValoresPesoEstado de la comprobación de estado
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 0»Peso=0Comprobación de estado fallida
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 20»Peso=20Comprobación de estado fallida
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 50»Peso=50Comprobación de estado fallida
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 70»Peso=70Comprobación de estado fallida
$ 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"

En este ejemplo, Route 53 consideró que todos los registros estaban en buen estado (no se pudo abrir). Route 53 respondió a las solicitudes de DNS en función de las proporciones configuradas. No se devuelve «Grabar con peso 0» porque su peso es cero.

Nota: Si establece ponderaciones distintas de cero en algunos registros y cero en otros, las comprobaciones de estado funcionan igual que cuando todos los registros tienen ponderaciones distintas de cero. Sin embargo, hay algunas excepciones:

  • Inicialmente, la Ruta 53 solo considera los registros con ponderación distinta de cero en buen estado, si los hay.
  • Si todos los registros distintos de cero no están en buen estado, Route 53 considera los registros en buen estado con una ponderación cero.

Ejemplo

NombreTipoTTLValoresPesoEstado de la comprobación de estado
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 0»Peso=0Pase de comprobación de estado
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 20»Peso=20Pase de comprobación de estado
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 50»Peso=50Comprobación de estado fallida
weighted.awsexampledomain.com.TXT300«Grabar con un peso de 70»Peso=70Comprobación de estado fallida
$ 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"

En este ejemplo, Route 53 no considera el registro con un peso 0. A menos que todos los registros ponderados no estén en buen estado, Route 53 no devuelve los registros con ponderación cero.

Si establece un peso igual para todos los registros de un grupo, el tráfico se dirige a todos los recursos en buen estado con la misma probabilidad. Si establece «Peso» en cero para todos los registros de un grupo, el tráfico se dirige a todos los recursos en buen estado con la misma probabilidad.

Información relacionada

Elección de una política de enrutamiento

Cómo elige Amazon Route 53 los registros cuando se configura la comprobación de estado

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año