Rolling the Heroku Redis Fleet
Bài tóm tắt Heroku 2018 3. Quy mô lớn Độ khó: Trung bình
Heroku · 2018 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bối cảnh
- Heroku quản lý hàng triệu database. Một lỗ hổng Redis bị cấm công bố (CVE-2018-11218) buộc nâng cả fleet Redis mà không được báo nguyên nhân cho khách. Plan trả phí có HA: standby nhân bản bất đồng bộ, tự thay primary khi hỏng.
Thay đổi chính
- Immutable infrastructure: không SSH sửa máy; đổi gì thì build image mới và thay máy. Theo Heroku, ở quy mô của họ cấu hình riêng từng máy là không khả thi, và lợi ích cho một khách phải đến với mọi khách.
- Quy trình fleet roll: build và test image mới → thay toàn bộ standby bằng standby mới → lên lịch maintenance trong cửa sổ của từng khách (báo trước ít nhất ba ngày làm việc, khách có thể chạy sớm) → kiểm standby đã đồng bộ → cắt replication để standby nhận ghi → đẩy release đổi config var của app sang primary mới → bỏ primary cũ, tạo standby mới. Plan hobby thay dần sau.
- Chống mệt mỏi on-call: fleet roll sinh nhiều page hơn do gặp edge case chưa tự động hoá; code chỉ lên lịch thay máy trong giờ làm việc của người đang trực; control plane giới hạn mức song song.
- Xong toàn fleet trong năm tuần kể từ khi nhận thông báo lỗ hổng, sớm một tuần so với công bố.
Vì sao
- Hai mục tiêu ngược nhau: vá lỗ hổng nhanh và giảm gián đoạn; quy trình rõ + automation để một lỗi nhỏ không chạm hàng nghìn khách.
Bài học cho SWE
- Có sẵn standby và image bất biến thì vá bảo mật cả fleet là một lần failover có kiểm soát.
- Lịch chạy automation nên theo giờ làm việc của người trực, không chỉ theo tải hệ thống.
Liên quan
Tự động hoá vận hành và auto-remediationFailover, replica và dự phòng dữ liệuBảo mật hạ tầng và quản lý secretXử lý sự cố và on-call
#Heroku Redis#CVE-2018-11218#fleet roll#immutable infrastructure#image mới#HA standby#maintenance window#control plane#on-call fatigue
Được nhắc tới trong
Chủ đề (4)
Công ty (1)