Three Basecamp outages. One week. What happened?
Bài tóm tắt Basecamp 2020 3. Quy mô lớn Độ khó: Cơ bản
Basecamp · 2020 · 3. Quy mô lớn · Độ khó: Cơ bản — bài gốc
Bài gửi khách hàng, giọng xin lỗi; chi tiết kỹ thuật ngắn.
Bối cảnh
- Basecamp 3 và vài dịch vụ hỗ trợ (login, billing) chạy ở hai data center on-prem dư thừa, nối bằng hai đường mạng độc lập; nhiều ứng dụng khác của họ chạy trên cloud.
Thay đổi chính (diễn biến)
- 28/8 (40 phút chat hỏng): cáp quang của một đường bị đứt do thi công; đường dự phòng cũng mất vì phụ thuộc ẩn giữa hai nhà mạng. Mất kết nối giữa hai DC làm replication Redis liên DC vượt kích thước replication buffer, rơi vào vòng resync làm quá tải Redis primary; Campfire và Pings ngừng.
- 1/9 (17 phút sập hẳn): mạng giữa DC lại mất; trong lúc khôi phục một hardware load balancer crash, bản standby nhận ngay nhưng router không tự đồng bộ với LB mới, phải can thiệp tay.
- 2/9 (15 phút): LB primary ở Virginia crash lần nữa, failover sang secondary, rồi secondary cũng crash và lùi về primary, lặp lại lỗi đồng bộ router; chat chậm hàng giờ sau đó.
Vì sao
- Ba lỗi hiếm chồng lên nhau trong 5 ngày; theo Basecamp, thứ làm họ bất ngờ là chuỗi hỏng dây chuyền lộ ra độ mong manh và đường phục hồi khó, chứ không phải từng lỗi riêng.
- Kế hoạch: sửa bug LB với vendor, thay hardware LB (đang chạy gần quá tải), đi lại đường mạng để có đa dạng tuyến thật, xem xét chuyển sang software LB (thay mới trong vài phút thay vì chờ phần cứng vài ngày) và phi tập trung kiến trúc LB.
Bài học cho SWE
- Hai đường "độc lập" có thể chung một điểm vật lý ở phía nhà cung cấp; cần kiểm đa dạng tuyến.
- Replication bất đồng bộ có buffer hữu hạn: mất kết nối đủ lâu chuyển thành full resync có thể đánh sập primary.
- Failover chỉ tốt khi các thành phần xung quanh (router) cũng theo kịp.
Liên quan
- Sự cố và postmortem · Độ tin cậy và multi-region · Failover, replica và dự phòng dữ liệu
- Sự cố mạng của nhà cung cấp cloud năm trước: Basecamp 2019
#Postmortem#hai data center#đường mạng dự phòng#phụ thuộc ẩn giữa nhà mạng#Redis replication buffer#resync loop#hardware load balancer#failover#router không đồng bộ
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (1)