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.
- 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.
- 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.
- 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ạn | Mất bao lâu | Ghi chú |
|---|---|---|
| Cụm phát hiện một máy chủ đã chết | Vài chục giây | Phả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ết | Vài chục giây | Bước bắt buộc, xem mục dưới |
| Bật lại máy ảo trên máy chủ khác | Bằng thời gian khởi động hệ điều hành | Má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ệc | Tùy ứng dụng | Cơ 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
# 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 khongMá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.
