Bảo trì host cloud và live migration Cloud host maintenance / live migration
ID nguyên nhân nic-host-maintenance · Phụ trách chính Hạ tầng server (Đội hạ tầng) · Phối hợp Phát triển server (Đội phát triển game), Bên ngoài (Bên ngoài)
Khi nhà cung cấp cloud bảo trì server vật lý (host), họ chuyển máy ảo sang host khác (live migration) hoặc tạm dừng máy ảo một lúc. Trong lúc đó cả server bị đứng, nếu thời gian dừng dài thì kết nối bị ngắt.
Vì sao Nhà cung cấp chuyển máy ảo sang host khác hoặc tạm dừng một lúc do bảo trì host hay dự đoán hỏng hóc → Dẫn đến Trong lúc chuyển, CPU, bộ nhớ, mạng chậm đi, và ở bước cuối máy ảo dừng hẳn trong chốc lát (từ dưới 1 giây đến khoảng 30 giây, tùy nhà cung cấp và cách làm) → Trên màn hình Mọi người trên server cùng đứng hình rồi tua nhanh hoặc dịch chuyển tức thời; nếu thời gian dừng dài hơn timeout thì mất kết nối hàng loạt
Phụ trách chính Hạ tầng server (Đội hạ tầng) · Phối hợp Phát triển server (Đội phát triển game), Bên ngoài (Bên ngoài)
Việc cần làm (Đội phát triển game)
Timeout chịu được dừng vài giây, đặt trần cho số tick chạy bù sau khi dừng, tính thời gian trôi qua bằng monotonic clock, có quy trình khi nhận thông báo bảo trì thì lưu tiến trình và chuyển người chơi sang server khác.
Việc cần làm (Đội hạ tầng)
Đăng ký nhận và cảnh báo thông báo bảo trì (Google Cloud maintenance-event, AWS scheduled event và AWS Health, Azure Scheduled Events), khi nhận thông báo thì chủ động thay server vào giờ ít người chơi, đổi giờ bảo trì nếu nhà cung cấp cho phép (Azure Maintenance Configuration, AWS scheduled event tùy loại), đối chiếu lịch sử bảo trì với lịch sử sự cố.
Việc cần làm (Bên ngoài)
Xác nhận với nhà cung cấp cloud lịch bảo trì và phạm vi ảnh hưởng, báo cáo nếu cùng một instance bị dừng lặp lại.
Con số tham khảo
Google Compute Engine cho biết thời gian dừng của live migration thường ngắn hơn 1 giây rất nhiều, và trong lúc dừng, đồng hồ hệ thống có thể nhảy tới trước tối đa 5 giây. Giá trị maintenance-event trong metadata đổi 60 giây trước khi chuyển (nếu trước đó đã truy vấn giá trị này ít nhất một lần). Với Azure, bảo trì không cần khởi động lại gần như luôn dừng dưới 10 giây, hiếm khi (với cỡ thông thường không quá một lần trong 18 tháng) dừng khoảng 30 giây, còn live migration thường không quá 5 giây. Azure Scheduled Events báo trước các lần dừng như vậy (Freeze) ít nhất 15 phút. Tuy nhiên nếu phần cứng host hỏng đột ngột thì việc khôi phục bắt đầu ngay mà không báo trước.
Trên đồ thị
Đứt quãng rồi dồn về · Số gói gửi nhận của server, khoảng cách tick
Chỗ cần xem
Đối chiếu thời điểm dừng với bản ghi của nhà cung cấp. Google Cloud: compute.instances.migrateOnHostMaintenance trong audit log; AWS: scheduled event trong describe-instance-status, AWS Health; Azure: Microsoft.Compute/virtualMachines/liveMigration/action trong Activity Log và thời điểm chỉ số khả dụng VM (VmAvailabilityMetric) rơi về 0. Bên trong server, xem chỉ số và log có bị trống trong lúc dừng không, đồng hồ có nhảy ngay sau đó không (log đồng bộ thời gian)
Đúng nếu
thời điểm cả server dừng trùng với thời điểm bảo trì hoặc migration mà nhà cung cấp ghi lại, và trong vài giây đó mọi chỉ số, log bên trong server đều trống
Loại trừ nếu
không có trong bản ghi của nhà cung cấp và các lần dừng ngắn lặp lại thường xuyên → xem “CPU steal (máy ảo)”; log kernel có bản ghi reset NIC → xem “Lỗi driver hoặc firmware NIC”
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)
Tìm hiểu thêm
AWS thông báo bằng scheduled event. system-reboot nghĩa là khởi động lại và chuyển sang host mới, system-maintenance nghĩa là có thể bị ảnh hưởng tạm thời do bảo trì mạng hoặc nguồn điện. Dù thời gian dừng chỉ vài giây, client không nhận được ACK cho các gói đã gửi tới server trong lúc đó sẽ nhân đôi dần thời gian chờ truyền lại, nên sau khi server chạy lại, kết nối TCP có thể còn đứng lâu hơn (“TCP RTO và exponential backoff”). Khi thức dậy sau lần dừng, đồng hồ nhảy và có thể dẫn tới “Đồng hồ hệ thống nhảy (NTP step)”, health check của bộ cân bằng tải cũng có thể thất bại khiến server đó tạm bị loại. Instance không thể chuyển (như instance bare metal của Google Cloud) sẽ bị dừng hoặc khởi động lại khi bảo trì.
Nguồn
Live migration process during maintenance eventsGoogle Cloud Thời gian dừng của live migration thường ngắn hơn 1 giây rất nhiều, trong lúc dừng đồng hồ hệ thống nhảy tới trước tối đa 5 giây, trong lúc chuyển thì hiệu năng ổ đĩa, CPU, bộ nhớ, mạng tạm giảm, VM không live migration thì bị tắt khi bảo trì (instance bare metal không hỗ trợ live migration)
Query metadata server for maintenance event noticesGoogle Cloud Giá trị metadata maintenance-event đổi 60 giây trước live migration (với cấu hình live migration và đã truy vấn giá trị này ít nhất một lần kể từ lần bảo trì trước)
Scheduled events for Amazon EC2 instancesAWS Các loại scheduled event (system-reboot là khởi động lại và chuyển sang host mới, system-maintenance là ảnh hưởng tạm thời do bảo trì mạng, nguồn điện), thông báo qua email và AWS Health, kiểm tra bằng describe-instance-status, tùy loại có thể đổi giờ
Maintenance and updatesMicrosoft Azure Bảo trì không khởi động lại gần như luôn dừng dưới 10 giây, hiếm khi (cỡ thông thường không quá một lần trong 18 tháng) khoảng 30 giây, live migration thường không quá 5 giây, đồng hồ tự đồng bộ sau khi dừng, kết nối TCP dài có thể bị ngắt hoặc phía bên kia truyền lại dữ liệu đã gửi tới VM đang dừng theo exponential backoff khiến việc khôi phục chậm hơn, health check của bộ cân bằng tải xác định bất thường trong khoảng 10 giây, kiểm tra bằng Microsoft.Compute/virtualMachines/liveMigration/action trong Activity Log và VmAvailabilityMetric (về 0 trong lúc dừng), chọn giờ áp dụng bằng Maintenance Configuration
Scheduled Events for Linux VMs in AzureMicrosoft Azure Freeze (dừng vài giây, CPU và mạng có thể dừng) được báo trước ít nhất 15 phút; khi phần cứng host hỏng thì bắt đầu khôi phục ngay, không có thời gian báo trước