Cómo hacer una migración de servidor perfecta y rápida, sin esperar la replicación de DNS.

Global railway network

He tenido muchas malas experiencias migrando alojamientos web, migrando sitios webs de uno a otros hostings, y también he tenido muchos problemas en las migraciones, que son complejos de tratar si ya se ha efectuado el cambio de servidores DNS, y que hacen perder mucho tiempo si tenemos que volver hacia atrás, y la web puede quedar sin servicio por unos días.

Es verdad que se pueden hacer pruebas locales, modificado el fichero hosts y todo ésto, pero al final, lo que cuenta es producción, y allí pueden aparecer errores con los que no contábamos.

El tiempo que se tarda en el traslado del servidor DNS es algo que complica una migración mal realizada por cualquier motivo, y es algo que le he estado dando vueltas durante mucho tiempo, hasta llegar a estas conclusiones.

Estos apuntes están basados en mi experiencia personal, y lo voy a redactar como a mí me hubiese gustado encontrar esta información de ayuda, para comprender mejor el funcionamiento de los servidores DNS en internet, de una forma muy amena y sencilla, de una forma básica, y lo más práctica posible, porque no pude encontrarla explicada de esta manera.

Primero voy a hablar un poco de la teoría, porque para comprender bien su funcionamiento, es necesario:

Qué es un servidor DNS y para qué sirve

Es un servidor de nombres que, resumiendo, sirve para traducir un nombre de dominio (ej. http://www.tudominio.com) , a la IP del servidor (dirección física, asociada a la tarjeta de red del servidor) donde está alojada la web. Traduce esos nombres a números y direcciones IP.

Tipos de servidores DNS

Existen servidores primarios DNS, que son los que tienen indexadas la mayor parte de las webs. Además, son los que se configuran de manera automática (o manual) en nuestras conexiones a redes, en la configuración de las tarjetas de red en los PCs. También existen servidores DNS en cada empresa de hosting, que a su vez redirigen el tráfico a sus respectivos servidores físicos o virtuales, donde finalmente se alojan las webs. Es una estructura en árbol, en donde cada servidor DNS guarda las direcciones de los servidores DNS que tienen por debajo de ellos, y éstos por último, enlazan al sitio web que corresponda.

Por último el propio servidor final donde se aloja la web también suele tener un servicio de DNS. Un servidor DNS es simplemente cualquier PC o servidor que ejecuta un servicio DNS.

Los servidores primarios DNS están replicados, y son redundantes, de cara a que desde cualquier parte del mundo, existan servidores principales cercanos donde poder solicitar la IP de una web, para tener un acceso lo más rápido posible, y además para que el servicio de internet funcione de manera adecuada si algún servidor se cae y deja de dar servicio. Esta función la realizan los servidores DNS y los PCs de manera transparente para el usuario.

Registro de dominios

El servicio de DNS está directamente vinculado a las empresas registradoras de dominios. Una empresa de hosting normalmente es también registradora de dominio, aunque no voy a entrar en el tema administrativo, de los distintos tipos de registradores que puede haber.

Cuando se contrata un dominio a una empresa que ofrece servicio de hosting, dicha empresa registra en el registro correspondiente dicho dominio, e inserta en sus servidores DNS la dirección IP asociada a dicho dominio.

NameServers

Continuando con lo anterior, en el registro público de dicho dominio, se le asocian unos NameServers, que se pueden modificar en el panel de control que suelen incluir los dominios. Suele ser un nombre de servidor, o un nombre y su dirección IP, y dependiendo del panel de control, y pueden registrarse hasta 5 nameservers asociados, uno principal, y los demás secundarios, de respaldo. Dicho NameServer no es más que el servidor DNS del hosting, desde donde se asocia el dominio (http://tudominio.com) a la IP del servidor final donde está alojada la web, que podrá ser el mismo servidor, o podrá ser uno común para todos los clientes del hosting.

Se pueden tener NameServers propios creados, por ejemplo con el nombre de dominio (subdominio del principal): server.tudominio.com, o dns.tudominio.com, por ejemplo. Eso se edita en las zonas DNS.

Zonas DNS

En los paneles de control más populares (CPanel, Plesk), o incluso en los paneles propietarios de las empresas de hosting, suelen incluir una zona de edición de DNS, que sería el último servicio DNS en el árbol, y el que se encuentra alojado en el mismo servidor, y que en su edición avanzada se pueden modificar registros tipo A, entre otros.

Por ejemplo, si queremos tener nuestro propio NameServer, y que cualquiera que vea información de nuestro dominio vea sólo los servidores de nuestro propio dominio, es tan fácil como crear un registro tipo A, con el nombre que queramos, como anteriormente comenté, y la IP del servidor donde está alojado, o incluso, la IP del servidor principal de DNS del hosting. Como se trata de asociaciones de nombre-IP, una misma IP puede tener varios nombres de dominio asociados, y de hecho suele ocurrir en los hostings compartidos por varios clientes y sitios webs. Personalmente no lo recomiendo, luego explicaré por qué.

Teoría de la replicación de servidores DNS en internet

Bien es sabido por todos que suelen decirnos que cuando se cambia de servicio de hosting, es necesario esperar hasta un máximo de 72 horas para que se replique la asociación nombre de dominio- número de IP en cualquier parte del mundo. En la práctica hoy en día, ese tiempo suele reducirse bastante, a veces unas 12 horas, y otras poco más de un día. No me he encontrado con tiempos de respuesta más amplios.

¿Se puede hacer un cambio de servidor más rápido?

Sí, se puede. Pero hay que tener en cuenta varios factores:

Si queremos crear uno o varios NameServer/s propio/s (no me refiero a los NameServers/nombres de DNS que nos facilite el servidor de hosting donde finalmente vayamos a alojar la web, me refiero a NameServers propios para nuestro dominio), hay que esperar el tiempo de replicación. Es decir, si creamos un server.tudominio.com, y lo asociamos al dominio, se necesitará esperar el tiempo de replicación.

Además, podemos encontrarnos con dos casos, que el dominio lo tengamos contratado en un hosting o registrador de dominio, y que el alojamiento (hosting) se tenga contratado en otro servidor, o en el mismo, y que vayamos a migrar a un servidor común con ambos servicios en el mismo, o en dos empresas diferentes, una para el dominio, y otra para el hosting (que no suele ser habitual hacerlo de esta manera, aunque a mí personalmente sí me gusta tener los dominios contratados en un servidor, y el alojamiento propiamente dicho en otro). Lo que voy a explicar funcionaría en cualquiera de estos casos.

 

Migración de DNS en dos pasos

Paso 1

Editor_Avanzado_Zonas_DNS_Advanced_Zone_Editor

Modificar en el editor de la zona DNS del panel de control del hosting origen (desde el cual vamos a realizar la migración) el registro tipo A que contiene el dominio (ejemplo tudominio.com). Ese registro tendrá asociado la IP del servidor original. Vamos a decirle que la IP de dicho registro A sea la IP del servidor destino (yo normalmente pongo la IP del servidor, aunque entiendo que si se pone la IP del servidor DNS del hosting destino, también funcionaría).

Aquí está la magia de ésto. Esperamos unos minutos, y hacemos en la consola un ipconfig /flusdns, para borrar la caché de servidores DNS de nuestro PC, y comprobamos con un ping al nombre del dominio, para comprobar que ya está cambiada la IP. Una vez lo esté, podremos revisar la migración efectuada con anterioridad al nuevo servidor, si está funcionando de manera adecuada (recomiendo antes en el servidor origen cambiar o crear página index.html con la información de que la web se encuentra migrándose. Así conseguiremos dos cosas: una, que los posibles usuarios vean desde el primer momento un cartel avisándoles del tema, y no modifiquen o creen información en la web en el servidor antiguo, y dos, sabremos perfectamente si ya estamos viendo la nueva web en el nuevo destino cuando hagamos esta operación (esto me ha traído muchos dolores de cabeza por no hacerlo así)…

Esto en principio es sólo para la web. Para el servidor de correo, se podría hacer lo mismo, modificando las IPs asociadas a los registros de correo electrónico (registros tipo MX o asociados).

Si por cualquier motivo tenemos un error en producción en el nuevo sitio con el que no contábamos, la solución es rápida y sencilla: volver a modificar el registro A en el panel de control del hosting de origen, y poner la IP del servidor origen, esperar de nuevo unos minutos (yo he realizado pruebas y en menos de 5 minutos ya tenía el nuevo sitio funcionando), y ejecutar de nuevo el ipconfig/flushdns (desde CMD en windows), quitar/modificar el fichero index.html (o renombrar el index.php si lo renombramos) para volver a redirigir a los usuarios correctamente, y de esta manera podremos rectificar la migración destino errónea sin la presión de una web que no se encuentra en funcionamiento.

Paso 2

Editor_DNS_Panel_Control_Dominio

Una vez comprobado que todo funciona correctamente en el nuevo destino, y la web, ya funciona en la nueva ubicación sin problemas, podemos modificar los NameServers (servidores DNS) que correspondan en el hosting de destino en el panel de control del dominio donde finalmente se vaya a quedar contratado el dominio. La replicación en este caso se tomará su tiempo, pero será transparente para los usuarios, porque mientras que todavía no se encuentren replicados todos los servidores DNS de internet, estará redirigiendo al NameServer original, y éste a su vez, utilizando el registro A del NameServer alojado en el hosting antiguo, pero redirigiendo a la IP del nuevo servidor.

 

¿ Sugerencias, dudas?

Es posible que en toda esta explicación haya temas que haya podido dejarme atrás, o incluso es posible que haya conceptos o pasos que no sean del todo correctos. Si observas algo que quieras comentar, será muy bienvenida tu aportación.

 

 

 

Comments

  1. Gracias Manuel por el artículo, muy interesante y práctico, me ha aclarado algunos conceptos que tenía algo vagos y me ha resultado muy útil la idea de cambiar primero las DNS en el alojamiento del dominio original para poder dar marcha atrás en caso de problemas.

    Me queda una duda: cuando dices “un error en producción en el nuevo sitio”, ¿a qué tipo de error o problema te refieres? Lo digo porque cambiando de alojamiento (servidor) supongo que habremos podido comprobar (con una IP provisional) la web en el nuevo servidor con tiempo suficiente. Y si la web continua activa suficiente tiempo alguien puede hacer modificaciones o añadir comentarios y al volver atrás se perderían. ¿Es así o me pierdo algo?

    Un saludo.

  2. hostingsimple says:

    Hola Jose, perdona el retraso en responderte, hacía bastante tiempo que no revisaba la web. No me refiero a ningún error en concreto. Más bien lo digo porque como he tenido tantos problemas en las migraciones, pues saber que me es fácil volver hacia atrás me da bastante tranquilidad.

    Por ejemplo, puede haber errores en la creación de la nueva base de datos, en la configuración de los ficheros del script que apunten a la nueva base de datos, etc.

    En esos casos la solución es sencilla, y suele ser rápida, pero voy a poner otro ejemplo, que el nuevo servidor tenga una configuración de PHP o MySQL que no sea compatible con nuestro script (podría ocurrir), y que no hayamos percibido ese detalle con anterioridad (aunque deberíamos de haberlo revisado).

    También en una ocasión me ocurrió algo inesperado al migrar, en WordPress dejó de funcionar la subida de imágenes a la galería, y no podía crear nuevos posts. Lo único que veía era que la versión de PHP era diferente, y la versión de Linux. Después de mucho dar vueltas y vueltas al tema, era un problema del plugin WPML Media (cometí algunos errores al activar/desactivar plugins para comprobar el buen funcionamiento de la web), pero me dejó la web durante un tiempo sin poder actualizarla, y no me sabían ayudar desde el soporte del hosting. Tuve que migrar a otro hosting para darme cuenta de que el problema no estaba en el hosting.
    Esa discusión, por si quieres echarle un vistazo, la tengo en el grupo de Linkedin de WordPress:
    https://www.linkedin.com/groups/Error-HTTP-al-intentar-subir-1242577.S.5948608311204024323?trk=groups_search_item_list-0-b-ttl

    Por último, efectivamente, si la web ha estado un tiempo activa, y alguien escribe algún comentario, podría perderse dicho comentario al volver hacia atrás, a menos que realices alguna comprobación previa, y tengas cuidado en exportar primero e importar después los registros de la base de datos correspondientes a los nuevos comentarios.

  3. Hola Manuel,

    Ya me había olvidado del comentario 🙂

    Sí, ahora ya sé a lo que te refieres, yo mismo lo comprobé hace poco con una migración de un WordPress y dejé constancia en esta entrada en mi blog: //w.w.organigrafic.com/wordpress-errores-de-importacion-mysql-utf8mb4/

    Correcto, ya tengo en cuenta que en ese caso tendría que exportar/importar nuevos comentarios.

    Gracias, le echo un vistazo a la discusión en LinkedIn que comentas.

    Un saludo!

  4. hostingsimple says:

    De nada Jose. Echo un vistazo a tu post.

    Saludos.

Speak Your Mind

*