Publi

¿Qué son y cómo utilizar direcciones IP flotantes en DigitalOcean? [Vídeo]

Un problema que teníamos los que utilizamos los servicios de Digital Ocean es que cuando paras una máquina para realizar una actualización, la dirección IP de la misma es inaccesible y dejas a todos tus visitantes en la estacada y mi humilde blog sin visitas ni nada que le diga a mis visitantes que sigo vivo.

Al menos sucedía así hasta hace un tiempo, cuando lanzaron las IP flotantes o Floating IPs.

Te lo cuento

Si prefieres leerlo todo, puedes saltarte el vídeo. Aunque son 3 minutos.

Para más información, sigue leyendo…

El problema

En DigitalOcean la asignación de direcciones IP públicas va por cada uno de los servidores que reservas. Eso por un lado quiere decir que todos VPS que pides están conectados a Internet (¿Quién puede querer que un VPS no esté conectado? Lo veremos pronto). Y por otra parte, podemos comprobar cómo las direcciones pueden cambiar. Es decir, nadie nos garantiza que cuando sacamos una máquina de nuestro sistema, cuando metamos otra, ésta vuelva a tener la misma dirección IP. Es verdad que en muchos casos es así, pero es que Digital Ocean no es capaz de saber si vamos a crear una máquina tras destruir una antigua.
Por otro lado es muy común que en un servidor hagamos tareas de mantenimiento y, durante ese tiempo, no deberíamos tener ninguna entrada de visitantes. Se pueden encontrar con cosas que no deben, fallos, de esos que asustan a los visitantes y podemos exponer información del sistema de esa que hace que a un atacante se le iluminen los ojos.
Otro caso, que es muy es cuando tenemos que rehacer el sistema (hay veces que una reinstalación sale más barato que actualizar), reservemos una máquina nueva y empecemos a trabajar en ella. Mientras tanto, todos los visitantes estarán accediendo a nuestra web alojada en nuestro servidor antiguo. Pero, cuando hayamos terminado de montar la nueva máquina, después de hacer pruebas y todo, cuando esté a punto, hacer un cambio de IP del servidor viejo al nuevo…

La solución de DigitalOcean

En este caso, DigitalOcean nos presenta las IPs flotantes. Esto son direcciones IP que podemos “enchufar” a un servidor. De modo que nuestros visitantes y usuarios accederán siempre a la IP flotante. Dejando la IP del servidor para un uso privado e interno, todavía no podemos eliminar dicha IP para que no sea accesible, aunque sí podríamos filtrarla por IPtables por ejemplo.

Ya que estas IP son “enchufables”, pueden estar conectadas a nuestro servidor web, y nuestros visitantes acceder a dicha IP. La ventaja es que esta dirección la podemos desenchufar de un servidor y enchufar en otro sin problema y de forma instantánea. Anteriormente podíamos actualizar la DNS del dominio para cambiar la IP, aunque la propagación DNS ha mejorado mucho los últimos años, puede tardar varios minutos o incluso horas en el peor de los casos, y dependiendo de nuestro proveedor.

Enchufando y desenchufando

Ya que podemos hacer lo que queramos, practiquemos un poco. Y es que si vamos a realizar tareas de mantenimiento en el servidor que requieran desconectar el servicio, en lugar de dejar a nuestros visitantes con la dirección IP de nuestra web sin respuesta podemos crear un pequeño VPS con un servidor web y que dirija a una página estática que diga: “Lo sentimos, estamos de mantenimiento”. Seguro que encontráis por Internet plantillas muy buenas con páginas que hagan que nuestros usuarios no quieran matarnos, sino que nos den su apoyo por querer mejorar el servicio. Una vez creado el VPS que sirve páginas estáticas (muy importante, porque si son dinámicas seguramente necesitemos más servidor), vinculamos la IP flotante que apunta al servidor que tenemos que parar a nuestro nuevo servidor de páginas estáticas. En este momento, nuestros usuarios comenzarán a entrar al servidor de “vuelva más tarde”. Así no perderemos desesperaremos a nuestras visitas o clientes mientras mejoramos nuestro servidor. Incluso podríamos dejar algunos servicios mínimos activos.

Como decíamos antes, también podemos empezar a trabajar en una actualización de nuestros servicios poco a poco, reinstalar una nueva máquina y luego cuando esté todo hecho cambiar la IP flotante de nuestro servidor al nuevo, seguidamente destruir el antiguo servidor, que ya no nos importa.

Como vemos, son muchas las posibilidades que nos da tener IPs flotantes cuando contratamos el servicio. Y, a partir de ahora es una buena práctica cuando trabajamos con esta empresa. Aunque para otros servicios en la nube suele haber conceptos parecidos, esto de enchufar y desenchufar direcciones IP no es nuevo y podemos ponerlo en práctica en otros proveedores.

Jugando con la API

DigitalOcean, tiene una ventaja añadida, desde el primer día, y es su API. Desde ahí nos dejan tocar muchas y, sobre todo, automatizar acciones. Podemos crear y destruir droplets, administrar DNS, imágenes, e IPs flotantes, tamaños de servidores, etc… pero hoy vamos a hablar de la API de metadatos de DigitalOcean. Esta API hace que desde una misma instancia se pueda acceder a información sobre la misma. Es decir, que una misma instancia pueda preguntar su dirección IP pública, o privada, o la IP flotante, conocer su ID, etc.

Aunque ya que utilizamos GNU/Linux sabemos que podemos utilizar ifconfig para sacar direcciones IP locales, combinandolo con grep, cortando la cadena resultante, etc, las llamadas a la API de DigitalOcean suelen ser más directas. Además, nadie nos dice que en el futuro este proveedor no cambie la forma en la que asigna las direcciones IP a nuestra máquina (Amazon lo hizo hace unos años), haciendo que nuestra antigua forma de hacerlo no sea efectiva ya. Además, con estas llamadas a la API de metadatos podremos crear scripts generales que podremos subir en varias máquinas y cada uno averigüe información de la máquina por sí mismo.

Todas estas llamadas se hacen haciendo una petición GET a http://169.254.169.254/ , al ser una conexión interna y directa no necesita protocolo SSL (y es tan rápida que el servicio estará alojado en la misma máquina física). Esta llamada la podemos hacer con cURL, o desde cualquier lenguaje de programación. Tenemos algunas llamadas interesantes, como por ejemplo:

  • Extraer hostname de la máquina:
    curl -s http://169.254.169.254/metadata/v1/hostname
  • Extraer IP pública:
    curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/address
  • Extraer IP privada:
    curl -s http://169.254.169.254/metadata/v1/interfaces/private/0/ipv4/address
  • Extraer información del usuario (esta información con algún script de inicialización para la máquina):
    curl -s http://169.254.169.254/metadata/v1/user-data
  • Extraer región geográfica:
    curl -s http://169.254.169.254/metadata/v1/region
  • Extraer etiquetas:
    curl -s http://169.254.169.254/metadata/v1/tags
  • ¿Tenemos IP flotante? (true/false)
    curl -s http://169.254.169.254/metadata/v1/floating_ip/ipv4/active
  • Extraer IP flotante:
    curl -s http://169.254.169.254/metadata/v1/floating_ip/ipv4/ip_address

Y con esta información podremos hacer muchas cosas.

¿Quieres un servidor en Digital Ocean?

Este post no es patrocinado. Sólo quería compartir esta utilidad de este servicio que utilizo. Aunque aprovechando esto, ya que estamos, si quieres contratar el servicio con este proveedor, si te registras de mi parte te darán $10 para gastar en hospedaje. Aunque sea en dólares puedes contratarlo con independencia de tu país.
Para contratar el servicio de mi parte, sigue este enlace: https://m.do.co/c/fa10e4099dbc.
Y yo también me llevaré algo por recomendarte.

También podría interesarte...

Leave a Reply