Incident Report: July 2, 2026 — US East Services Outage
Bài tóm tắt Railway 2026 3. Quy mô lớn Độ khó: Trung bình
Railway · 2026 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bối cảnh
- Railway tự vận hành datacenter ("Metal"); mỗi site nối với ít nhất ba nhà mạng Tier 1 để mất một nhà mạng vẫn chạy.
- Ngày 2/7/2026 (07:44–12:01 UTC), một nhà mạng bị nghẽn backbone ở Mỹ, gây mất gói giữa US West và US East. Probe nội bộ thấy suy giảm gần 2 giờ trước khi user bị ảnh hưởng; retry và định tuyến dự phòng che được trong thời gian đó.
Diễn biến (ba lỗi nối nhau)
- Ngắt nhà mạng hỏng ở mọi border router Mỹ: đa số đường đi hồi phục.
- Ngắt thêm nhà mạng thứ hai ở một zone US East (vì đường về của nó vẫn đi qua nhà mạng hỏng). Không ai biết đó là nhà mạng cuối cùng còn cấp default route cho site này: zone thuộc thế hệ đầu, nhận default route từ nhà mạng thay vì tự sinh như các DC mới. Site mất đường ra internet khoảng 20 phút, đoạn nặng nhất của sự cố.
- Trạng thái kẹt sau khi mạng đã lành:
- Khi route của mạng fabric biến mất, OS server rơi về route duy nhất còn lại là mạng quản trị chậm; một hành vi mặc định của Linux còn cho server trả lời địa chỉ storage trên mạng đó. Kết nối TCP không chọn lại đường sau khi đã mở, nên các kết nối storage tạo trong 20 phút đó kẹt lại trên mạng chậm. Routing nhìn đúng, cụm storage báo khoẻ, nhưng throughput chỉ còn khoảng 1/3, I/O wait 58%. Cắt các kết nối đó thì chúng nối lại đúng đường trong vài giây (I/O wait xuống dưới 5%).
- Tunnel mạng private học địa chỉ peer từ gói nhận được; trong lúc rối, gói đi qua một thiết bị NAT nên hàng nghìn tunnel học sai địa chỉ và giữ nguyên. Mesh chỉ kiểm lại khi thành viên thay đổi, tunnel rảnh thì không gửi gói nào để tự sửa. Lúc đỉnh khoảng 20.000 liên kết host-host bị blackhole; phải restart agent mesh toàn zone.
Vì sao (theo Railway)
Điểm chung của các lỗi: kết nối bắt lấy một đường đi xấu trong một khoảnh khắc bất ổn, rồi giữ nó sau khi mạng đã hồi phục, vì không có gì khẳng định lại trạng thái đúng. Mất một nhà mạng là chuyện bình thường; phần hỏng nằm ở phía Railway: thiết kế site cũ, một lần ngắt không kiểm tra routing còn lại, và hệ thống âm thầm giữ trạng thái sai.
Khắc phục
- Đưa các site thế hệ đầu sang tự sinh default route ở border (sửa cấu trúc lớn nhất).
- Thiếu route fabric thì fail ngay và rõ, không lặng lẽ dùng mạng quản trị.
- Cảnh báo theo mức dùng mạng quản trị và số liên kết private bị blackhole.
Bài học cho SWE
- Redundancy N nhà cung cấp chỉ đúng khi mọi site cùng thiết kế; site cũ là nơi giả định sai còn sót lại (Độ tin cậy và multi-region).
- Trước một thao tác giảm thiểu trong sự cố, kiểm tra "sau thao tác này còn lại gì" (Sự cố và postmortem).
- Fallback âm thầm sang đường chậm tệ hơn lỗi rõ ràng: nó biến sự cố 20 phút thành 2 giờ suy giảm khó thấy.
- Trạng thái học được (route của kết nối, địa chỉ peer) cần được kiểm lại định kỳ, không chỉ khi topology đổi.
Liên quan
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (3)