8 poin oleh GN⁺ 2023-12-05 | 1 komentar | Bagikan ke WhatsApp
  • Menambal server Linux itu sederhana, tetapi menambal puluhan ribu server tanpa downtime bukanlah hal yang mudah
  • Meta menggunakan Kpatch dari Red Hat dan KLP (Kernel Live Patching) untuk menambal jutaan server Linux
    • KLP memungkinkan penerapan pembaruan keamanan terbaru ke kernel Linux tanpa reboot

Live kernel patching

  • Live kernel patching disediakan sebagai paket yang berisi kode yang telah diperbaiki, terpisah dari paket kernel utama
  • Live patch bersifat kumulatif, sehingga patch terbaru mencakup semua perbaikan dari patch sebelumnya
  • Live patch tidak berlaku untuk semuanya; data atau struktur tidak bisa ditambal, dan pembuatan live patch memerlukan pekerjaan rekayasa tambahan

Kpatch

  • Kpatch bekerja dengan membandingkan kernel asli dan kernel yang sudah ditambal, lalu menambalkan kode baru ke kernel yang sedang berjalan menggunakan modul kernel kustom
  • Setelah itu, proses Kpatch menggunakan ftrace untuk memantau stack dari proses yang ada guna memastikan patch dapat diterapkan tanpa dampak berbahaya
  • Jika dinilai aman, kode yang sedang berjalan dialihkan ke fungsi yang sudah ditambal, lalu kode lama yang kini usang dihapus
  • Server pun kini telah ditambal tanpa menimbulkan downtime

Dalam kasus Meta

  • Tentu saja, dalam praktiknya tidak sesederhana itu
  • Di Meta, saat menerapkan live patch, biasanya dibutuhkan 1~2 detik untuk menerapkan patch ke sebuah host
  • Waktu 1~2 detik per host ini sangat cepat jika dibandingkan dengan kexec, mekanisme kernel Linux untuk mem-boot kernel baru
  • Tidak diperlukan downtime maupun migrasi workload; cukup terapkan live patch dan langsung bisa digunakan

Cara menambal jutaan mesin

  • Saat menambal jutaan mesin, ceritanya tidak berhenti di situ
  • Di Meta, karena bug bisa ditemukan selama rollout patch, administrator terlebih dahulu menambal tier release candidate
  • Package roller yang menyediakan patch berbasis RPM juga secara otomatis memeriksa kesehatan server
  • Meta memantau crash, alarm utama, masalah aplikasi, dan performa pada kernel baru; jika tingkat kesalahan melebihi 1 crash per 1.000 server, patch dihentikan dan dipulihkan ke kernel sebelumnya
  • Meta menggunakan Kpatch, tetapi ada alternatif lain juga
    • SUSE menyediakan kGraft, Oracle menggunakan Ksplice, dan Canonical mendukung Livepatch
    • Terlepas dari perbedaan kode, semuanya memberikan hasil yang serupa

Pendapat GN⁺

Hal terpenting dari artikel ini adalah bahwa Meta telah menerapkan metode patching yang efisien tanpa downtime untuk jutaan server di seluruh dunia. Ini juga merupakan topik yang menarik bahkan bagi software engineer junior, serta menekankan pentingnya pemeliharaan dan keamanan sistem Linux. Selain itu, artikel ini dapat membantu memahami kompleksitas dan kebutuhan teknologi live patching.

1 komentar

 
GN⁺ 2023-12-05
Komentar Hacker News
  • Ksplice adalah teknologi patching langsung asli yang, setelah diakuisisi Oracle, diperluas ke program ruang pengguna saat saya bekerja di sana. Ini teknologi yang sangat keren dan tidak menjadi usang karena tidak perlu me-restart seluruh sistem dalam skala besar, meskipun sudah beralih ke cloud.
  • Fakta bahwa Meta tidak menyebutkan berapa lama waktu yang dibutuhkan untuk menerapkan metode ini ke seluruh deployment mereka terasa seperti detail penting yang terlewat. Dengan patching langsung, operasional bisa berjalan tanpa downtime pada server, pusat data, maupun cloud.
  • Jika Anda bekerja pada skala Meta, patching langsung mungkin masuk akal, tetapi sebagian besar layanan dan aplikasi yang dirancang dengan baik seharusnya mampu menangani reboot penuh server dengan baik. Sulit membayangkan kompleksitas dalam mengelola jutaan server.
  • KernelCare adalah layanan untuk patching langsung kernel yang mendukung sebagian besar distribusi Linux.
  • Saya telah menggunakan Kpatch pada banyak mesin virtual, dan hasilnya bekerja cukup baik.
  • Saat ini mereka mengoperasikan sekitar 13 juta server, menghabiskan 20 miliar dolar untuk peralatan pusat data baru pada 2023, dan berencana mengeluarkan tambahan 20 miliar dolar lagi pada 2024. Saat ini mereka menggunakan CentOS 8 Stream dan akan segera pindah ke 9.
  • Disebutkan bahwa proses draining dan undraining host itu sulit. Ini pada dasarnya berarti tidak mudah untuk melakukan draining host dari layanan lalu memulihkannya kembali, yang mengisyaratkan bahwa kernel Linux tidak dirancang untuk patching langsung, dan mencoba melakukannya selalu menjadi sumber ketidakpastian, mahal dari sisi pekerjaan engineering, dan bencana terasa selalu mengintai. Sebaliknya, memperbaiki sistem draining layanan dan pemulihan host agar menjadi sangat kokoh dan andal akan memberi keuntungan besar dari sisi keandalan. Pendekatan ini tampak seperti menutupi disfungsi organisasi. Satu tim bisa menambal semua kernel, tetapi membuat semua host mendukung draining layanan dan pemulihan itu mustahil, dan karena tidak ada insentif nyata untuk memperbaikinya, tidak ada yang berusaha membetulkannya. Hanya peretasan keren dan proyek baru yang benar-benar mendapat penghargaan.
  • Sebagian besar organisasi tidak akan mendapat manfaat dengan meniru Meta, dan juga tidak perlu melakukannya.
  • Ini pertama kalinya saya mendengar konsep "hyperscale". Saya penasaran apa bedanya dengan sekadar scale biasa.