Utilizar el servicio DNS para cambiar suavemente el servicio de red

Suponiendo que el dominio del servicio es example.domain, la dirección IP del servidor original es A. Debido a la migración del servidor o al cambio de IP, la nueva dirección IP del servidor es B. Para garantizar que el usuario no sea consciente del cambio, se puede utilizar el servicio DNS para cambiar suavemente el servicio de red.

  1. Estado del servicio original, example.domain se resuelve a la dirección IP A
  2. Estado de transición, example.domain se resuelve a las direcciones IP A y B
  3. Estado del nuevo servicio, example.domain se resuelve a la dirección IP B, eliminando la dirección IP A

Nota: Cuando el usuario obtiene dos direcciones de resolución, el cliente seleccionará una de ellas para la conexión. Si la conexión falla, intentará con otras direcciones, garantizando así la disponibilidad del servicio.

Dado que la resolución DNS tiene caché, para garantizar un cambio suave, es necesario mantener el estado de transición durante un período de tiempo para asegurar que todas las cachés caduquen.

En mi caso, necesito migrar el servicio DNS. Durante el estado de transición, se puede establecer una “reescritura DNS” para acelerar el proceso de migración.

Reglas de reescritura del servicio A:

Reescritura del servicio A

Reglas de reescritura del servicio B:

Reescritura del servicio B

El proceso de migración original se expande a:

  1. Estado del servicio original, example.domain se resuelve a la dirección IP A
  2. Estado de transición, example.domain se reescribe a A y B en el servicio DNS A y a B en el servicio DNS B
  3. Estado del nuevo servicio, example.domain se resuelve a la dirección IP B, eliminando la dirección IP A

Cuando el usuario sigue utilizando el servicio DNS A, puede obtener dos direcciones, con una probabilidad del 50 % de elegir el servicio DNS A.
La otra mitad de la probabilidad cambiará al servicio DNS B. Cuando el servicio DNS B falla, se cambiará de nuevo al servicio DNS A. Cuando el servicio DNS B no falla, solo se obtendrá una dirección, por lo que el usuario permanecerá en el servicio DNS B.
De esta manera, podemos reducir gradualmente el consumo de recursos del servicio DNS A en lugar de detenerlo directamente, logrando una migración más suave.