VPS

Máy ảo tự bật lại khi một máy chủ chết

Thanh Nguyễn Đăng 10 phút đọc 1 khối lệnh

Máy ảo tự bật lại khi một máy chủ chết
Mục lục bài viết
  1. Khác gì chuyển máy ảo khi đang chạy
  2. Thời gian gián đoạn thật
  3. Cơ chế cách ly, phần quan trọng nhất
  4. Điều kiện và cấu hình
  5. Bật cho máy ảo nào
  6. Thời gian gián đoạn thật, đừng kỳ vọng sai
  7. Chắc chắn máy kia đã tắt trước khi bật lại
  8. Máy ảo nào nên bật, máy nào không cần
  9. Câu hỏi thường gặp
  10. Bài viết liên quan

Trả lời nhanh: Tính năng này theo dõi tình trạng các máy chủ trong cụm, và khi một máy ngừng phản hồi thì tự khởi động lại các máy ảo của nó trên máy khác. Điều kiện là cụm từ ba máy trở lên và kho lưu trữ dùng chung. Gián đoạn thật tính bằng vài phút, gồm thời gian phát hiện, thời gian cách ly và thời gian khởi động lại.

Nhiều người nhầm tính năng này với việc chuyển máy ảo khi đang chạy, và kỳ vọng không có gián đoạn nào. Thực tế đây là hai cơ chế khác nhau cho hai tình huống khác nhau, và hiểu đúng khác biệt giúp bạn đặt kỳ vọng và thiết kế hệ thống cho phù hợp.

Khác gì chuyển máy ảo khi đang chạy

Hai cơ chế hay bị nhầm nhưng phục vụ hai tình huống hoàn toàn khác nhau.

Chuyển khi đang chạy dùng cho tình huống có kế hoạch: bạn muốn bảo trì một máy chủ. Máy ảo được chép sang máy khác trong lúc vẫn chạy, gián đoạn chỉ vài phần trăm giây, không ai nhận ra.

Tự bật lại khi máy chủ chết dùng cho tình huống không có kế hoạch: máy chủ mất điện, hỏng bo mạch, treo cứng. Lúc đó không có gì để chép vì bộ nhớ của máy ảo đã mất cùng máy chủ. Hệ thống chỉ có thể khởi động lại máy ảo từ đĩa của nó nằm trên kho dùng chung.

Hệ quả quan trọng: máy ảo khởi động lại như thể vừa bị cúp điện. Mọi thứ chưa kịp ghi xuống đĩa đều mất, và ứng dụng bên trong phải tự phục hồi. Vì vậy tính năng này không thay thế được việc thiết kế ứng dụng chịu được khởi động đột ngột.

Thời gian gián đoạn thật

Tổng thời gian gồm ba phần, và con số thực tế thường là vài phút chứ không phải vài giây.

  1. Thời gian phát hiện. Các máy trong cụm trao đổi tín hiệu định kỳ. Phải mất một khoảng để phần còn lại chắc chắn rằng máy kia đã chết chứ không chỉ chậm tạm thời.
  2. Thời gian cách ly. Trước khi bật máy ảo ở nơi khác, hệ thống phải chắc chắn máy chủ hỏng không thể tự bật máy ảo lên lần nữa. Cơ chế này thường thực hiện bằng cách buộc máy nghi ngờ tự khởi động lại.
  3. Thời gian khởi động máy ảo ở máy chủ mới, cộng thời gian dịch vụ bên trong máy ảo sẵn sàng phục vụ.

Vì vậy hãy đặt kỳ vọng đúng khi trao đổi với người dùng nghiệp vụ: đây là cơ chế giảm gián đoạn từ hàng giờ xuống vài phút, không phải cơ chế loại bỏ gián đoạn.

Cơ chế cách ly, phần quan trọng nhất

Đây là phần ít được nói tới nhưng quyết định tính năng này an toàn hay nguy hiểm.

Vấn đề: giả sử một máy chủ chỉ mất kết nối mạng chứ không thực sự chết. Phần còn lại của cụm tưởng nó chết và bật lại máy ảo ở nơi khác. Nhưng máy kia vẫn đang chạy máy ảo đó, và cả hai bản cùng ghi lên một đĩa trên kho dùng chung. Kết quả là hỏng dữ liệu.

Giải pháp là cách ly: trước khi bật máy ảo ở nơi mới, hệ thống phải đảm bảo bản cũ đã dừng hẳn. Cách phổ biến là máy chủ tự theo dõi chính mình và tự khởi động lại nếu nó phát hiện mình đã mất liên lạc với đa số cụm.

Đây cũng là lý do cụm phải có đa số phiếu để hoạt động, và lý do cụm hai máy cần thêm một lá phiếu thứ ba. Không có đa số thì không xác định được ai còn sống, và không dám bật lại gì cả.

Điều kiện và cấu hình

Ba điều kiện bắt buộc.

  • Cụm từ ba máy trở lên, hoặc hai máy cộng một lá phiếu thứ ba.
  • Kho lưu trữ dùng chung mà mọi máy chủ cùng thấy. Không có thì máy ảo không bật lại ở nơi khác được, vì đĩa của nó nằm trên máy đã chết.
  • Mạng cụm ổn định. Mất gói và trễ cao gây phát hiện nhầm, dẫn tới các đợt khởi động lại không cần thiết.

Về cấu hình, bạn chọn từng máy ảo để đưa vào diện được bảo vệ, và đặt mức ưu tiên để quyết định thứ tự khởi động khi nhiều máy ảo cùng phải bật lại. Có thể ràng buộc một máy ảo chỉ chạy trên một nhóm máy chủ nhất định, hữu ích khi có lý do về giấy phép hoặc về phần cứng.

Bật cho máy ảo nào

Đừng bật cho tất cả. Tính năng này thêm độ phức tạp và thêm khả năng máy ảo bị khởi động lại ngoài ý muốn khi mạng chập chờn.

Nên bật cho: máy chủ danh bạ tài khoản, máy chủ cơ sở dữ liệu, máy chủ ứng dụng chính, máy chủ tệp. Nói chung là những thứ mà việc dừng vài giờ gây thiệt hại thật.

Không cần bật cho: máy ảo kiểm thử, máy ảo dựng tạm, máy ảo mà bạn có thể bật lại thủ công trong giờ hành chính mà không ai phàn nàn.

Một lưu ý về tài nguyên: khi một máy chủ chết, máy ảo của nó dồn sang các máy còn lại. Nếu cụm đang chạy sát công suất thì phần còn lại không đủ chỗ. Quy tắc thiết kế là mỗi máy chủ chỉ nên dùng tới mức mà cụm vẫn gánh được khi mất một máy, thường là khoảng sáu mươi tới bảy mươi phần trăm.

Thời gian gián đoạn thật, đừng kỳ vọng sai

Giai đoạnMất bao lâuGhi chú
Cụm phát hiện một máy chủ đã chếtVài chục giâyPhải chờ đủ ngưỡng để chắc chắn, không thể phát hiện tức thì
Cách ly máy chủ nghi đã chếtVài chục giâyBước bắt buộc, xem mục dưới
Bật lại máy ảo trên máy chủ khácBằng thời gian khởi động hệ điều hànhMáy ảo khởi động như sau một lần mất điện
Dịch vụ bên trong máy ảo sẵn sàng nhận việcTùy ứng dụngCơ sở dữ liệu lớn cần thêm thời gian phục hồi

Tổng lại thường là vài phút chứ không phải vài giây. Đây là cơ chế chống mất máy chủ, không phải cơ chế chạy liên tục không gián đoạn. Nếu bạn cần không gián đoạn thì phải làm ở tầng ứng dụng, ví dụ chạy hai bản của ứng dụng trên hai máy ảo khác nhau.

Chắc chắn máy kia đã tắt trước khi bật lại

TerminalChắc chắn máy kia đã tắt trước khi bật lạibash
# Van de: cum thay mot may chu khong tra loi.# May do THAT SU chet, hay chi dut mang? # Neu chi dut mang ma cum bat lai may ao o noi khac,# ban se co HAI ban cua cung mot may ao cung ghi vao mot o dia.# Ket qua la hong du lieu, va day la tinh huong te nhat co the xay ra. # Vi vay truoc khi bat lai, cum phai chac chan may kia da tat.# Co che cach ly lam viec do: no cat dien hoac ep tat may kia# thong qua mot duong doc lap voi mang thong thuong,# thuong la qua cong quan tri phan cung tu xa. # Kiem tra bat buoc khi cau hinh:#  1. Duong dung de cach ly co doc lap voi mang du lieu khong#     Neu dung chung mot duong thi dut mang la mat ca hai, vo nghia#  2. Thu mot lan that: rut day mang cua mot may chu#     va xem cum co xu ly dung khong#  3. Neu chua thu bao gio thi ban chua biet no co chay khong

Máy ảo nào nên bật, máy nào không cần

  • Nên bật: máy điều khiển miền, máy chủ tệp, máy chủ ứng dụng nghiệp vụ. Đây là những thứ cả công ty phụ thuộc vào.
  • Không cần bật: máy thử nghiệm, máy dựng bản, máy chạy việc theo lịch có thể chạy lại sau.
  • Cân nhắc riêng: cơ sở dữ liệu lớn. Việc bật lại đột ngột buộc nó phải phục hồi từ nhật ký giao dịch, và thời gian đó có thể dài hơn bạn tưởng. Với loại này, phương án nhân bản ở tầng cơ sở dữ liệu thường tốt hơn.

Câu hỏi thường gặp

Máy ảo có mất dữ liệu khi bị bật lại không

Mọi thứ đã ghi xuống đĩa thì còn nguyên. Những gì còn nằm trong bộ nhớ và chưa kịp ghi thì mất, giống hệt tình huống cúp điện. Vì vậy ứng dụng bên trong cần được cấu hình để chịu được khởi động đột ngột, nhất là cơ sở dữ liệu.

Nền tảng khác có tính năng tương đương không

Có, các nền tảng ảo hóa lớn đều có cơ chế tương tự với tên gọi khác nhau, và nguyên lý giống nhau: phát hiện máy chủ chết, cách ly, rồi khởi động lại máy ảo ở nơi khác. Điều kiện cũng giống: cụm đủ máy và kho lưu trữ dùng chung.

Cụm ba máy mất hai máy thì sao

Cụm mất đa số và tự khóa, không bật lại máy ảo nào. Đây là hành vi đúng vì không còn cách nào xác định trạng thái an toàn. Muốn chịu được mất hai máy thì cần cụm năm máy trở lên.

Có thể thử tính năng này không

Nên thử, và thử trước khi cần tới. Cách an toàn là tạo một máy ảo thử, bật tính năng cho nó, rồi rút điện một máy chủ trong giờ thấp điểm. Đo thời gian thực tế từ lúc rút điện tới lúc dịch vụ sẵn sàng, con số đó mới là thứ bạn hứa được với người dùng.

Chia sẻ:Facebook

Thanh Nguyễn

TND

Tư vấn bản quyền, VPS và máy chủ kèm hóa đơn VAT, hợp đồng đầy đủ cho doanh nghiệp.