Usamos Route53 para nuestro DNS privado, específicamente la Política de enrutamiento de respuesta multivalor, sin comprobaciones de estado para volcado/equilibrio de carga diferido.
Esto ha funcionado bien para nosotros, hasta ayer cuando notamos un comportamiento extraño.
Tenemos un registro establecido para ro.mysql.foo.bar.com
, que contiene las IP de nuestras réplicas de MySQL de solo lectura.
Si ejecuta un DIG, refleja esto;
dig A ro.mysql.foo.bar.com
;; QUESTION SECTION:
;ro.mysql.foo.bar.com. IN A
;; ANSWER SECTION:
ro.mysql.foo.bar.com. 4 IN A 10.2.2.2
ro.mysql.foo.bar.com. 4 IN A 10.2.2.3
ro.mysql.foo.bar.com. 4 IN A 10.2.2.4
El comportamiento esperado es que cuando MySQL llega, ro.mysql.foo.bar.com
se conecta a uno de los 3 hosts al azar, de una manera equilibrada con la carga tonta/aleatoria. Esto funcionó bien hasta ayer.
si corro
mysql -h ro.mysql.foo.bar.com -e "select @@hostname;"
Esperaría que el resultado de @@hostname
variara entre 10.2.2.2
, 10.2.2.3
y10.2.2.4
En cambio, no enruta el tráfico aleatoriamente a través de las tres IP, tomará una y solo usará una.
+-----------------------------------+
| @@hostname |
+-----------------------------------+
| 10.2.2.3 |
+-----------------------------------+
Si lo eliminamos 10.2.2.3
del DNS dejará de usarlo. Si lo volvemos a agregar, continuará usándose solo 10.2.2.3
nuevamente.
Ejecutamos nuestro propio solucionador a través de PowerDNS (que estamos eliminando gradualmente), pero no parece haber ninguna falla que podamos ver, PowerDNS también ha eliminado su caché de DNS.