Cómo Meta aplica parches a Linux a gran escala
(thenewstack.io)- Aplicar parches a servidores Linux es sencillo, pero aplicar parches a decenas de miles de servidores sin tiempo de inactividad no es fácil
- Meta usa Kpatch de Red Hat y KLP (Kernel Live Patching) para aplicar parches a millones de servidores Linux
- KLP permite aplicar las actualizaciones de seguridad más recientes al kernel de Linux sin reiniciar
Parches en vivo del kernel
- Los parches en vivo del kernel se distribuyen como paquetes que contienen el código corregido, por separado del paquete principal del kernel
- Los parches en vivo son acumulativos, por lo que el parche más reciente incluye todas las correcciones de los parches anteriores
- Los parches en vivo no se aplican a todo; no pueden modificar datos ni estructuras, y crear un parche en vivo requiere trabajo adicional de ingeniería
Kpatch
- Kpatch funciona comparando el kernel original con el kernel parcheado, y luego usa módulos de kernel personalizados para aplicar el nuevo código al kernel en ejecución
- Después, el proceso de Kpatch usa ftrace para inspeccionar la pila de los procesos existentes y verificar si puede aplicar el parche sin efectos perjudiciales
- Si se determina que es seguro, redirige el código en ejecución a la función parcheada y luego elimina el código que ya quedó obsoleto
- En ese momento, el servidor ya tiene el parche aplicado sin provocar tiempo de inactividad
En el caso de Meta
- Por supuesto, en la práctica no es tan simple
- En Meta, al aplicar un parche en vivo, normalmente toma entre 1 y 2 segundos aplicar el parche a un host
- Ese tiempo de 1 a 2 segundos por host es realmente rápido en comparación con kexec, el mecanismo del kernel de Linux para arrancar un nuevo kernel
- No se necesita tiempo de inactividad ni migración de cargas de trabajo; basta con aplicar el parche en vivo y queda listo para usarse de inmediato
Cómo aplicar parches a millones de máquinas
- Cuando se aplican parches a millones de máquinas, eso no es todo
- En Meta, como pueden descubrirse errores durante el despliegue del parche, los administradores primero aplican el parche al nivel de candidatos de lanzamiento
- El package roller que distribuye parches basados en RPM también verifica automáticamente el estado de salud de los servidores
- Meta monitorea fallas, alertas críticas, problemas de aplicaciones y rendimiento en el nuevo kernel, y si la tasa de error supera 1 caída por cada 1000 servidores, el parche se detiene y se revierte al kernel anterior
- Meta usa Kpatch, pero también existen otras alternativas
- SUSE ofrece kGraft, Oracle usa Ksplice y Canonical soporta Livepatch
- Sin importar el código, todos ofrecen resultados similares
Opinión de GN⁺
Lo más importante de este artículo es que Meta ha implementado un método eficiente de aplicación de parches sin tiempo de inactividad para millones de servidores en todo el mundo. Este es un tema interesante incluso para ingenieros de software junior y resalta la importancia del mantenimiento y la seguridad en los sistemas Linux. Además, este artículo puede ayudar a entender la complejidad y la necesidad de la tecnología de parches en vivo.
1 comentarios
Comentarios en Hacker News