Cómo Facebook desactivó y activó sus servicios globales en siete horas

Tras la caída global de todos sus servicios el lunes 4 de octubre, Facebook explicó que la interrupción de sus operaciones durante más de seis horas se debió a un error de mantenimiento de la red troncal que conecta sus centros de datos.

En él, el Vicepresidente de Infraestructura de Facebook, Santosh Janardhan, expone que la caída fue provocada por un sistema que administra su red troncal, que Facebook construyó para conectar todas sus instalaciones de computación, las cuales están constituidas por decenas de miles de cables de fibra óptica que atraviesan el mundo y conectan sus centros de datos.

La gigante tecnológica estadounidense explica que sus centros de datos son diferentes entre sí: algunos son enormes edificios que albergan miles de máquinas que guardan datos y pesadas cargas computacionales que mantienen sus plataformas, como Facebook, WhatsApp, Instagram, Messenger y Oculus, en funcionamiento; mientras que otros son espacios más pequeños que conectan su red troncal con Internet y las personas que usan sus servicios, una cifra que asciende a más de 3 mil 500 millones a nivel mundial.

Relacionado:  ¿Por qué se cayó Facebook y puso en vilo al mundo entero?

Al abrir una de sus aplicaciones —explica Facebook— y cargar la página de inicio o mensajes, el pedido de datos de la app viaja del dispositivo del usuario al centro de datos más cercano, el cual se comunica a través de su red troncal con un centro de datos más grande, donde se recolecta y procesa la información que necesita la app y luego se envía al dispositivo a través de la red.

El tráfico de datos entre estas instalaciones de computación es administrado por routers, que identifican de dónde enviar los datos entrantes y salientes. Durante el trabajo diario de mantenimiento de infraestructura, el equipo de ingeniería necesita desconectar una parte de la red troncal para su mantenimiento, ya sea para reparar una fibra, agregar más capacidad, o actualizar el software en el propio router.

Facebook señaló que durante la rutina de mantenimiento, se ejecutó un comando para evaluar la disponibilidad en la capacidad de la red troncal global, lo que involuntariamente cortó todas las conexiones y desconectó todos sus centros de datos a nivel global.

La compañía aclaró que sus sistemas están diseñados para auditar esos comandos y prevenir los errores, pero un error en la herramienta de auditoría impidió que el comando fuera interrumpido. Y este error ocasionó la desconexión total de sus conexiones de servidor entre sus centros de datos e Internet.

Facebook agregó que la pérdida total de la conexión causó un segundo problema que agravó la situación.

Lee también: Facebook aprovecha apagón de redes sociales para rechazar cargos antimonopolio

Uno de los trabajos ejecutados por los centros más pequeños es responder a los comandos del Sistema de Nombres de Dominio (DNS, por sus siglas en inglés), el directorio de Internet que traduce los nombres simples introducidos en los navegadores a direcciones de servidor IP específicas.

La big tech explica que las consultas de traducción son respondidas por sus servidores de nombres autorizados que ocupan direcciones IP conocidas, que a su vez se anuncian al resto de Internet a través de un protocolo llamado Border Gateway Protocol (BGP).

Para asegurar una operación estable, los servidores DNS de Facebook desactivan los anuncios BGP si no se pueden con los centros de datos, ya que es un indicador de una conexión de red inestable.

Y en la caída del lunes, toda la red troncal fue removida de la operación, lo que hizo que las direcciones se declararan inestables y se retiraran los anuncios BGP. A consecuencia de esto, los servidores DNS se volvieron inalcanzables aun estando operativos, lo que impidió que el resto de Internet pudiera encontrar sus servidores. 

Y en medio de esta escala de errores, al momento de tratar de encontrar una solución rápida, el equipo de ingeniería de Facebook se enfrentó a dos obstáculos: la imposibilidad de acceder a sus centros de datos a través de sus canales habituales y la inhabilitación de sus herramientas internas para investigar y resolver estas interrupciones de servicio por la pérdida total de DNS.

Te recomendamos: Facebook: 4 puntos clave sobre el futuro de la red social

Como el acceso principal a la red y el acceso fuera de banda estaban deshabilitados, Facebook envió a sus ingenieros a los centros de datos para depurar y reiniciar los sistemas, un procedimiento que se demoró, debido a que las instalaciones están diseñadas con altos niveles de seguridad física y del sistema.

Dado que son difíciles de acceder y al estar dentro, el hardware y los routers están diseñados para que sean difíciles de modificar incluso al tener acceso físico a ellos, se requirió un tiempo extra para acceder a las instalaciones y trabajar directamente sobre los servidores.

Sólo así los ingenieros pudieron confirmar el problema y restablecer la red troncal. Y cuando la red troncal fue restaurada, todos los sistemas volvieron a funcionar.

Sin embargo, Facebook aclaró que el problema no terminó ahí, porque la compañía sabía que volver a activar sus servicios al mismo tiempo podría causar nuevas interrupciones por el pico de tráfico. Además, los centros de datos individuales reportaron bajas de uso de corriente en rangos de decenas de megavatios y revertir esa baja repentinamente podría poner en riesgo sus sistemas eléctricos y cachés.

Por último, la compañía explicó que pudo resolver este escenario gracias a sus simulacros de fallas, en los que desconectan un servicio, centro de datos o una región entera, para probar toda la infraestructura y el software comprometidos, ya que esa experiencia le dio la confianza y la ductilidad para restablecer sus servicios y administrar cuidadosamente las crecientes cargas.

Y, finalmente, luego de estar inactivos por alrededor de siete horas, entre las 10:30 de la mañana y las 17:30 horas (CDT), los servicios de Facebook se restablecieron de forma relativamente rápida sin reportar fallas sistémicas a nivel global.