Cách Meta vá Linux ở quy mô cực lớn
(thenewstack.io)- Vá máy chủ Linux thì đơn giản, nhưng vá hàng chục nghìn máy chủ mà không gây downtime lại không hề dễ
- Meta sử dụng Kpatch của Red Hat và KLP (Kernel Live Patching) để vá hàng triệu máy chủ Linux
- KLP cho phép áp dụng các bản cập nhật bảo mật mới nhất cho nhân Linux mà không cần khởi động lại
Vá nhân trực tiếp
- Vá nhân trực tiếp được cung cấp dưới dạng một gói chứa mã đã sửa, tách biệt với gói nhân chính
- Các bản vá trực tiếp có tính cộng dồn, nên bản vá mới nhất sẽ bao gồm mọi thay đổi của các bản vá trước đó
- Vá trực tiếp không áp dụng cho mọi thứ; không thể vá dữ liệu hay cấu trúc, và việc tạo bản vá trực tiếp đòi hỏi thêm công sức kỹ thuật
Kpatch
- Kpatch hoạt động bằng cách so sánh nhân gốc với nhân đã vá, sau đó dùng một mô-đun nhân tùy chỉnh để vá mã mới vào nhân đang chạy
- Sau đó, tiến trình Kpatch dùng
ftraceđể theo dõi stack của các tiến trình hiện có nhằm xác minh có thể thực hiện bản vá mà không gây tác động có hại hay không - Nếu được xác định là an toàn, nó sẽ chuyển hướng mã đang chạy sang hàm đã được vá, rồi loại bỏ phần mã nay đã cũ
- Khi đó bản vá đã được áp dụng lên máy chủ mà không phát sinh downtime
Trường hợp của Meta
- Tất nhiên, trên thực tế mọi chuyện không đơn giản như vậy
- Tại Meta, khi áp dụng vá trực tiếp thì thường mất khoảng 1~2 giây để áp dụng bản vá lên một host
- Mốc 1~2 giây cho một host thực sự rất nhanh nếu so với
kexec, cơ chế của nhân Linux dùng để khởi động một nhân mới - Không cần downtime hay di chuyển workload; chỉ cần áp dụng bản vá trực tiếp là có thể sử dụng ngay
Cách vá hàng triệu máy
- Khi vá hàng triệu máy, câu chuyện không chỉ có vậy
- Tại Meta, do có thể phát hiện bug trong quá trình rollout bản vá, quản trị viên sẽ vá từ tầng release candidate trước
- Package roller phân phối các bản vá dựa trên RPM cũng tự động kiểm tra tình trạng sức khỏe của máy chủ
- Meta giám sát crash, cảnh báo nghiêm trọng, vấn đề ứng dụng và hiệu năng trên nhân mới; nếu tỷ lệ lỗi vượt quá 1 crash trên mỗi 1000 máy chủ thì bản vá sẽ bị dừng và khôi phục về nhân trước đó
- Meta dùng Kpatch, nhưng cũng có các lựa chọn thay thế khác
- SUSE cung cấp kGraft, Oracle dùng Ksplice, còn Canonical hỗ trợ Livepatch
- Bất kể khác biệt về mã nguồn, tất cả đều mang lại kết quả tương tự
Ý kiến của GN⁺
Điểm quan trọng nhất trong bài viết này là Meta đã áp dụng một phương pháp vá hiệu quả không gây downtime cho hàng triệu máy chủ trên toàn thế giới. Đây cũng là một chủ đề thú vị ngay cả với các kỹ sư phần mềm mới vào nghề, đồng thời nhấn mạnh tầm quan trọng của việc bảo trì và bảo mật hệ thống Linux. Ngoài ra, bài viết còn giúp hiểu rõ hơn về độ phức tạp và sự cần thiết của công nghệ vá trực tiếp.
1 bình luận
Ý kiến trên Hacker News