Archivo para 'Abril, 2013'

Ganado en lugar de mascotas

25/4/2013 5:36 am

Influenciado por la lectura del libro del proyecto Phoenix, que os recomiendo a todos, creo que voy a escribir este articulillo en versión novelada sobre el tema de tratar servidores como ganado en lugar de como mascotas (cattle no pets), a ver qué tal se da.

5532770373_3811034fd7

“Son las 3 de la mañana y el maldito “busca” vuelve a sonar. Puff, ¡menuda semanita llevo!, pienso mientras a tientas busco el maldito cacharro en la mesita de noche para poner fin a sus convulsiones y chillidos. “Webserver15.httpfarm load average ALERT”. Por un instante pienso en volverme a dormir. Un solo nodo cargado y ninguna otra alerta, como por ejemplo retardos en la carga de la página no debería ser un problema, pero… algo en mi interior me lo impide y ¿si es importante?. A mi lado mi mujer murmura algo acerca del maldito zumbido mientras me voy incorporando para llegar a la mesa del despacho donde presiono el botón de inicio del portatil, que tampoco parece feliz de ser despertado en medio de la noche.

Al parecer, un par de procesos se han quedado bloqueados esperando a un recurso compartido que estaba tardando demasiado en responder y eso ha elevado la carga en ese nodo, mientras en todos los demás todo sigue bien. Mando al nodo sospechoso al banquillo modificando la configuración del balanceador para ser examinado mañana más a fondo, y decido terminar la noche durmiendo en el sofá para no molestar en caso de que la rebelión continue. Solucionar el problema me llevó 15 minutos pero ya no puedo dormir en las siguientes horas así que dejo entrar a Oscar, nuestro gato, para que me haga compañía. Mientras acaricio su panza pienso que algunos de nuestros servidores requieren más cuidados que una mascota.

A la mañana siguiente, despues de la reunión de arranque del equipo, me dedico a investigar que le pasó al nodo molesto. Al parecer, una de las modificaciones que hicimos hace varios meses a la granja de servidores web había sido aplicada, pero el recurso no había sido remontado, con lo cuál no había tenido efecto.

¡Maldita sea!, otro copo de nieve (aka snowflake), parece que nuestro proceso de homogeneización no está tan refinado como creíamos. Reinstalar el servidor es un proceso completamente automatizado que tan sólo lleva unos minutos. Una vez que ha vuelto a la vida verifico que el nuevo nodo es exactamente igual que sus compañeros del corral, para a continuación abrir el grifo en el balanceador para que comience a llegarle tráfico de nuevo. Todo funciona a la perfección.

En la mayoría de los casos y con el nivel de redundancia que tenemos es obvio que es un error tratar a cada servidor como una mascota. Debemos de empezar a pensar en ellos más como ganado, y especialmente en diseñar nuestros sistemas para que en caso de error, el procedimiento sea sustituir al enfermo por uno exactamente igual y ya en caso de requerir una intervención especial entonces alertar a uno de los doctores. Una de las ventajas es que todas las gráficas de rendimiento y los logs de los servidores se mantienen en servicios separados, con lo que no estaremos borrando pistas para el analisis post-mortem. Incluso podríamos ponerlo simplemente en cuarentena.

Paso el resto del día poniendo en práctica esta idea de “ganado en lugar de mascotas” en nuestra granja de servidores web reconfigurando el sistema de monitorización para, en caso de detectar un nodo enfermo jugar el combo de cartas: “tiro en la cabeza” y “resurreción de entre los muertos”. En aquellos casos en los que la alerta se repita en breve en el mismo nodo, alertaremos al vaquero de turno. Ahora, para asegurar que el sistema funciona y que lo seguirá haciendo, es hora de soltar al “mono del caos” que introducirá errores en los servidores cada cierto tiempo de forma que el procedimiento se esté verificando constamente.

Los resultados en la granja web han sido muy satisfactorios y hemos decidido empezar a extender el proceso a todos los servidores. De hecho, este evento nos ha hecho replantearnos cómo vamos a hacer el proceso de alerta fuera del horario de oficina, sustituyendo cientos de alertas individuales (cpu alta, sistemas de ficheros lleno, etc) por otras que eliminen la individualidad del asunto (el portal está caido, la búsqueda media es demasiado lenta, etc).

Espero que mi gato Oscar no esté preocupado porque lo sustituya por un corralito lleno de cerdos.”