Meta Linux को बड़े पैमाने पर कैसे patch करता है
(thenewstack.io)- Linux server को patch करना आसान है, लेकिन बिना downtime के दसियों हज़ार server को patch करना आसान नहीं है
- Meta लाखों Linux server को patch करने के लिए Red Hat के Kpatch और KLP(Kernel Live Patching) का उपयोग करता है
- KLP बिना reboot किए Linux kernel पर नवीनतम security update लागू कर सकता है
Live kernel patching
- Live kernel patching मुख्य kernel package से अलग, संशोधित code वाले package के रूप में दिया जाता है
- Live patch cumulative होते हैं, इसलिए नवीनतम patch में पिछले patch के सभी fixes शामिल होते हैं
- Live patch हर चीज़ पर लागू नहीं होते; data या structure को patch नहीं किया जा सकता, और live patch बनाने के लिए अतिरिक्त engineering काम की ज़रूरत होती है
Kpatch
- Kpatch मूल kernel और patched kernel की तुलना करता है, फिर custom kernel module का उपयोग करके चल रहे kernel में नया code patch करता है
- इसके बाद Kpatch process
ftraceका उपयोग करके मौजूदा process के stack की निगरानी करता है, ताकि यह सुनिश्चित किया जा सके कि patch बिना हानिकारक प्रभाव के लागू किया जा सकता है - यदि इसे सुरक्षित माना जाता है, तो यह चल रहे code को patched function की ओर redirect करता है और फिर पुराने code को हटा देता है
- अब server पर patch लागू हो चुका होता है और कोई downtime नहीं होता
Meta के मामले में
- बेशक, वास्तविकता में यह इतना सरल नहीं है
- Meta में live patch लागू करते समय आमतौर पर host पर patch लगाने में 1–2 second लगते हैं
- एक host पर 1–2 second का समय, Linux kernel के उस mechanism
kexecकी तुलना में वास्तव में तेज़ है जो नया kernel boot करता है - इसमें downtime या workload migration की ज़रूरत नहीं होती; live patch लागू करते ही इसे तुरंत उपयोग किया जा सकता है
लाखों मशीनों को patch करने का तरीका
- लाखों मशीनों को patch करते समय कहानी यहीं खत्म नहीं होती
- Meta में patch rollout के दौरान bug मिल सकते हैं, इसलिए admin पहले release candidate tier पर patch लागू करते हैं
- RPM-based patch देने वाला package roller server की health भी अपने आप जांचता है
- Meta नए kernel में crash, major alert, application issue और performance की निगरानी करता है, और अगर error rate 1000 server पर 1 crash से ऊपर चला जाए तो patch रोक दिया जाता है और पिछले kernel पर restore कर दिया जाता है
- Meta Kpatch का उपयोग करता है, लेकिन दूसरे विकल्प भी मौजूद हैं
- SUSE
kGraftदेता है, OracleKspliceका उपयोग करता है, और CanonicalLivepatchको support करता है - code चाहे जैसा भी हो, सभी लगभग समान परिणाम देते हैं
- SUSE
GN⁺ की राय
इस लेख की सबसे महत्वपूर्ण बात यह है कि Meta ने दुनिया भर में लाखों server के लिए बिना downtime के एक कुशल patching तरीका लागू किया है। यह शुरुआती software engineer के लिए भी एक दिलचस्प विषय है और Linux system के maintenance और security के महत्व को रेखांकित करता है। साथ ही, यह लेख live patching तकनीक की जटिलता और आवश्यकता को समझने में मदद कर सकता है।
1 टिप्पणियां
Hacker News राय