Sau khi đã hoàn thành 2 bước chuẩn bị: tạo Pool và thiết lập NFS Shared Storage, giờ đã đến lúc kích hoạt tính năng High Availability cho máy ảo và kiểm tra xem nó hoạt động ra sao.
Để thao tác theo hướng dẫn trong bài viết này, bạn cần phải hoàn thành tất cả các công đoạn đã chia sẻ trong 2 phần trước:
1. Kích hoạt High Availability cho máy ảo
Để có thể kích hoạt High Availability, máy ảo phải thỏa mãn 2 điều kiện sau:
- Máy ảo nằm trong Pool đã được kích hoạt High Availability.
- Ổ cứng của máy ảo phải được lưu trên Shared Storage.
Mở Xen Orchestra, truy cập vào máy ảo cần kích hoạt HA, chuyển qua tab Advanced, kéo xuống mục HA và chọn restart
.
Trong bài viết này, mình kích hoạt máy ảo Ubuntu 22.04, hiện đang chạy trên máy chủ xcp-ng-18, thuộc My Pool.
2. Thử nghiệm 1: Chủ động tắt máy ảo
Sau khi kích hoạt tính năng High Availabilty, máy ảo Ubuntu 22.04 sẽ được Xen Orchestra theo dõi để đảm bảo máy ảo luôn ở trạng thái hoạt động với thời gian downtime ngắn nhất, mỗi khi sự cố xảy ra. Nếu Xen Orchestra phát hiện ra máy ảo không hoạt động, nó sẽ tìm cách khởi động lại trên một máy chủ khác nằm trong cùng Pool.
Để thử nghiệm, mình truy cập trực tiếp vào máy ảo Ubuntu 22.04 thông qua SSH hoặc Console và yêu cầu tắt máy bằng lệnh sudo shutdown now
.
Do Xen-Orchestra không thể biết được lệnh shutdown
được thực thi trong máy ảo, nên nó sẽ nghĩ rằng máy ảo gặp sự cố. Ngay lập tức, nó sẽ chuyển vùng cho máy ảo sang một máy chủ khác và khởi động lại ngay. Trong vòng chưa đến 1 phút, máy ảo Ubuntu 22.04 đã được chuyển qua máy chủ xcp-ng-16 và hoạt động lại bình thường.
Trong trường hợp cần tắt máy ảo để bảo trì, cách duy nhất để ngăn tình trạng trên xảy ra là thực hiện yêu cầu tắt máy bằng cách bấm vào nút Force shutdown. Lúc này, Xen Orchestra biết rằng máy ảo được yêu cầu tắt, nên sẽ không cố gắng để phục hồi lại nữa.
3. Thử nghiệm 2: chủ động tắt máy chủ xcp-ng-18
Ở thí nghiệm này, mình truy cập SSH vào máy chủ xcp-ng-18, và tắt máy bằng lệnh sudo shutdown now
.
Xen-Orchestra ngay lập tức nhận được tín hiệu từ xcp-ng-18 và liền thực hiện các công việc cần thiết để chuyển máy ảo Ubuntu 22.04 sang nơi khác.
Máy ảo Ubuntu 22.04 được chuyển sang trạng thái màu vàng (busy).
Các công việc đang được Xen Orchestra thực hiện ngay sau khi nhận được tin xcp-ng-18 đang chuẩn bị tắt.
Sau chưa đến 1 phút, máy ảo Ubuntu 22.04 đã được chuyển qua máy chủ xcp-ng-16.
Trong khoảng 1 phút xử lý, máy ảo vẫn hoạt động bình thường, không bị mất kết nối. Mình thử ping đến máy ảo trước khi bắt đầu thao tác, và đến khi hoàn thành, kết nối luôn ổn định, không bị rớt gói tin nào.
4. Thí nghiệm 3: Rút dây nguồn
Trong thí nghiệm này, mình sẽ tắt máy chủ xcp-ng-18 bằng cách rút dây nguồn để giả lập tình huống gặp sự cố đột ngột.
Ngay sau khi rút dây điện, Xen Orchestra không thể phát hiện ra sự cố ngay lập tức như trong thí nghiệm trước đó. Máy ảo Ubuntu 22.04 vẫn hiện trạng thái hoạt động, tuy nhiên không còn truy cập được vào Console.
Sau 1 phút 40 giây, Xen Orchestra mới nhận ra kết nối đến xcp-ng-18 đã mất và ngay lập tức thực hiện chuyển vùng cho máy ảo. Cộng thêm thời gian khoảng 1′ cho máy ảo kích hoạt trở lại, thời gian downtime là khoảng 3 phút.
5. Thí nghiệm 4: Rút dây mạng
Thay vì rút dây nguồn, lần này mình chuyển qua rút dây mạng.
Tương tự như tình huống trước, Xen Orchestra cần có thời gian để phản ứng với sự cố. Lần này mất 1 phút 30 giây, máy ảo mới bắt đầu được thực hiện chuyển vùng. Tổng thời gian downtime cũng khoảng 3 phút.
Các tình huống giả lập mình thực hiện trên đây chủ yếu nhằm mục đích tìm hiểu về cách thức hoạt động của tính năng High Availabilty của XCP-ng. Trên thực tế, việc vận hành một hệ thống High Availabilty ổn định đòi hỏi việc thiết lập và cấu hình phức tạp hơn nhiều.
Ngoài cấu hình cho máy chủ, máy ảo, còn phải thiết lập High Availability cho NFS Shared Storage, Switch, nguồn điện… để toàn bộ hệ thống luôn sẵn sàng dưới mọi tình huống sự cố xảy ra.
Tham khảo: Xen-Orchestra,thuanbui.