Wie Meta Linux in großem Maßstab patcht
(thenewstack.io)- Das Patchen von Linux-Servern ist einfach, aber Zehntausende Server ohne Downtime zu patchen, ist nicht leicht
- Meta nutzt für das Patchen von Millionen Linux-Servern Red Hats Kpatch und KLP (Kernel Live Patching)
- Mit KLP lassen sich die neuesten Sicherheitsupdates auf den Linux-Kernel anwenden, ohne neu zu booten
Live-Kernel-Patching
- Live-Kernel-Patches werden als Pakete mit geändertem Code bereitgestellt, getrennt vom Haupt-Kernel-Paket
- Live-Patches sind kumulativ, der neueste Patch enthält also alle Korrekturen der vorherigen Patches
- Live-Patches gelten nicht für alles; Daten oder Strukturen lassen sich nicht patchen, und das Erstellen von Live-Patches erfordert zusätzliche Engineering-Arbeit
Kpatch
- Kpatch funktioniert, indem es den ursprünglichen Kernel mit dem gepatchten Kernel vergleicht und dann mithilfe eines benutzerdefinierten Kernel-Moduls neuen Code in den laufenden Kernel patcht
- Anschließend überwacht der Kpatch-Prozess mit ftrace den Stack bestehender Prozesse, um zu prüfen, ob der Patch ohne schädliche Auswirkungen angewendet werden kann
- Wird dies als sicher eingestuft, wird der laufende Code auf die gepatchte Funktion umgeleitet und der nun veraltete Code entfernt
- Der Patch ist dann auf dem Server angewendet, ohne dass Downtime entsteht
Im Fall von Meta
- Natürlich ist es in der Praxis nicht so einfach
- Bei Meta dauert das Anwenden eines Live-Patches auf einen Host normalerweise 1 bis 2 Sekunden
- 1 bis 2 Sekunden pro Host ist im Vergleich zu
kexec, dem Linux-Kernel-Mechanismus zum Starten eines neuen Kernels, wirklich schnell - Es sind weder Downtime noch Workload-Migration nötig; nach dem Anwenden des Live-Patches ist das System sofort einsatzbereit
Wie man Millionen Maschinen patcht
- Beim Patchen von Millionen Maschinen ist das noch nicht alles
- Bei Meta können während des Patch-Rollouts Bugs entdeckt werden, daher patchen Administratoren zuerst die Release-Candidate-Tier
- Der Package Roller, der RPM-basierte Patches ausliefert, prüft automatisch auch den Gesundheitszustand der Server
- Meta überwacht auf dem neuen Kernel Abstürze, wichtige Alerts, Anwendungsprobleme und die Performance; überschreitet die Fehlerrate 1 Absturz pro 1000 Server, wird der Patch gestoppt und auf den vorherigen Kernel zurückgesetzt
- Meta verwendet Kpatch, aber es gibt auch andere Alternativen
- SUSE bietet kGraft an, Oracle nutzt Ksplice, und Canonical unterstützt Livepatch
- Unabhängig vom Code liefern alle ähnliche Ergebnisse
Meinung von GN⁺
Das Wichtigste an diesem Artikel ist, dass Meta eine effiziente Patch-Methode ohne Downtime für Millionen Server weltweit eingeführt hat. Das ist selbst für Junior-Software-Ingenieure ein interessantes Thema und unterstreicht die Bedeutung von Wartung und Sicherheit in Linux-Systemen. Außerdem kann der Artikel helfen, die Komplexität und Notwendigkeit von Live-Patching-Technologien zu verstehen.
1 Kommentare
Hacker-News-Kommentare