8 puan yazan GN⁺ 2023-12-05 | 1 yorum | WhatsApp'ta paylaş
  • Linux sunucularını yamalamak basittir, ancak on binlerce sunucuyu kesinti olmadan yamalamak kolay değildir
  • Meta, milyonlarca Linux sunucusunu yamalamak için Red Hat’in Kpatch ve KLP’sini (Kernel Live Patching) kullanıyor
    • KLP, yeniden başlatma olmadan Linux çekirdeğine en güncel güvenlik güncellemelerini uygulayabiliyor

Canlı çekirdek yaması

  • Canlı çekirdek yaması, ana çekirdek paketinden ayrı olarak, düzeltilmiş kodu içeren bir paket halinde sunulur
  • Canlı yamalar kümülatiftir; en güncel yama, önceki yamalardaki tüm düzeltmeleri içerir
  • Canlı yamalar her şeye uygulanamaz; veri ya da yapılar yamalanamaz ve canlı yama oluşturmak için ek mühendislik çalışması gerekir

Kpatch

  • Kpatch, orijinal çekirdek ile yamalanmış çekirdeği karşılaştırır, ardından özel bir çekirdek modülü kullanarak çalışan çekirdeğe yeni kodu uygular
  • Ardından Kpatch süreci, mevcut süreçlerin stack’ini ftrace ile izleyerek yamanın zararlı etki olmadan uygulanıp uygulanamayacağını kontrol eder
  • Güvenli olduğuna karar verilirse, çalışan kod yamalanmış fonksiyona yönlendirilir ve artık eski olan kod kaldırılır
  • Böylece yama sunucuya uygulanmış olur ve kesinti yaşanmaz

Meta’nın durumunda

  • Elbette pratikte bu kadar basit değildir
  • Meta’da canlı yama uygulanırken, yamayı bir host’a uygulamak genelde 1-2 saniye sürer
  • Host başına 1-2 saniye, Linux’un yeni bir çekirdeği başlatmak için kullandığı çekirdek mekanizması kexec ile karşılaştırıldığında gerçekten çok hızlıdır
  • Kesinti ya da workload taşıması gerekmez; canlı yamayı uyguladığınız anda hemen kullanılabilir

Milyonlarca makine nasıl yamalanır

  • Milyonlarca makineyi yamalarken iş bununla bitmez
  • Meta’da rollout sırasında hatalar ortaya çıkabileceği için yöneticiler önce release candidate katmanını yamalar
  • RPM tabanlı yamaları sağlayan paket dağıtım sistemi, sunucuların sağlık durumunu da otomatik olarak kontrol eder
  • Meta, yeni çekirdekte crash’leri, kritik alarmları, uygulama sorunlarını ve performansı izler; hata oranı 1000 sunucuda 1 crash’i aşarsa yama durdurulur ve önceki çekirdeğe geri dönülür
  • Meta Kpatch kullanıyor, ancak başka alternatifler de var
    • SUSE, kGraft sunuyor; Oracle, Ksplice kullanıyor; Canonical ise Livepatch destekliyor
    • Kod fark etmeksizin hepsi benzer sonuçlar sağlıyor

GN⁺ görüşü

Bu yazıdaki en önemli nokta, Meta’nın dünya çapında milyonlarca sunucu için kesintisiz ve verimli bir yama yöntemini uygulamış olmasıdır. Bu, yeni başlayan yazılım mühendisleri için de ilgi çekici bir konudur ve Linux sistemlerinin bakım ve güvenliğinin önemini vurgular. Ayrıca bu yazı, canlı yama teknolojisinin karmaşıklığını ve gerekliliğini anlamaya yardımcı olabilir.

1 yorum

 
GN⁺ 2023-12-05
Hacker News görüşleri
  • Ksplice, Oracle tarafından satın alındıktan sonra benim orada çalıştığım dönemde kullanıcı alanı programlarına genişletilen özgün canlı yama teknolojisidir. Buluta geçişe rağmen, tüm sistemi büyük ölçekte yeniden başlatma ihtiyacını ortadan kaldırdığı için modası geçmeyen çok havalı bir teknolojidir.
  • Meta'nın bu yöntemi kullanarak tam dağıtımı ne kadar sürede tamamladığını belirtmemesi, önemli bir ayrıntının atlanmış gibi görünüyor. Canlı yama kullanıldığında sunucular, veri merkezleri ve bulutlar kesinti olmadan çalıştırılabilir.
  • Meta'nın ölçeğinde çalışıyorsanız canlı yama anlamlı olabilir, ancak iyi tasarlanmış hizmetlerin ve uygulamaların çoğu sunucuların tam yeniden başlatılmasını rahatça tolere edebilmelidir. Milyonlarca sunucuyu yönetmenin karmaşıklığını hayal etmek zor.
  • KernelCare, çoğu Linux dağıtımını destekleyen bir kernel canlı yama hizmetidir.
  • Birçok sanal makinede Kpatch kullandım ve oldukça iyi çalışıyor.
  • Şu anda yaklaşık 13 milyon sunucu işletiyorlar; 2023'te yeni veri merkezi ekipmanına 20 milyar dolar, 2024'te de ek 20 milyar dolar harcamayı planlıyorlar. Şu anda CentOS 8 Stream kullanıyorlar ve yakında 9'a geçecekler.
  • Host draining ve undraining'in zor olduğu söyleniyor. Bu, esasen host'u servisten çıkarıp tekrar geri almanın kolay olmadığı anlamına geliyor; bu da Linux kernel'inin canlı yama için tasarlanmadığını, bunu denemenin her zaman bir belirsizlik kaynağı olduğunu, mühendislik emeği açısından pahalıya mal olduğunu ve felaket riskinin sürekli kapıda olduğunu gösteriyor. Buna karşılık, host'ları servisten çıkarma ve geri alma sistemini değiştirip çok sağlam ve güvenilir hale getirmek, güvenilirlik açısından büyük kazanç sağlayacaktır. Bu yaklaşım, organizasyonel işlev bozukluklarının üzerini örtüyor gibi görünüyor. Bir ekip tüm kernel'leri yamayabilir, ancak tüm host'ların servisten çıkarma ve geri alma işlemlerini desteklemesini sağlamak imkansızdır; bunu düzeltmek için gerçek bir teşvik de olmadığından kimse bunu düzeltmeye çalışmaz. Yalnızca havalı hack'ler ve yeni projeler gerçekten ödüllendirilir.
  • Çoğu organizasyon Meta'yı taklit ederek fayda sağlamaz ve buna ihtiyaç da duymaz.
  • "Hyperscale" kavramını ilk kez duyuyorum. Bunun sadece ölçeklenmeden nasıl farklı olduğunu merak ediyorum.