1. Tổng quan.
Proxmox High Availability (HA) là một tính năng trong Proxmox Virtual Environment (Proxmox VE) cho phép cung cấp tính sẵn sàng cao và khả năng chịu lỗi cho các máy ảo và container trên một môi trường cluster.
Trong Proxmox HA, shared storage (lưu trữ chia sẻ) đóng vai trò quan trọng. Đây là một hệ thống lưu trữ có thể được truy cập từ tất cả các node trong cluster, cho phép các máy ảo và container có thể chuyển đổi (migrate) giữa các node một cách linh hoạt mà không làm gián đoạn hoạt động của chúng. Khi một node trong cluster gặp sự cố, các máy ảo và container sẽ được tự động di chuyển (relocate) sang các node khác trong cluster với mục tiêu duy trì tính sẵn sàng và khả năng chịu lỗi của hệ thống.
Với shared storage, các node trong cluster có thể truy cập và chia sẻ các file và dữ liệu của máy ảo và container một cách đồng nhất. Điều này đảm bảo rằng dữ liệu của các máy ảo và container được cập nhật và đồng bộ trên toàn bộ môi trường cluster, tạo điều kiện thuận lợi cho quản lý và di chuyển các tài nguyên giữa các node mà không gây gián đoạn cho hoạt động của máy ảo và container.
Tính năng Proxmox High Availability và shared storage cùng nhau tạo nên một môi trường ổn định và linh hoạt cho việc triển khai và quản lý các máy ảo và container trên Proxmox VE, đảm bảo tính sẵn sàng và đáng tin cậy của hệ thống.
2. Thực hành.
Đây là sơ đồ vật lý của tôi.
Và đây là sơ đồ logic.
Lưu ý điều kiện bạn làm được giải pháp này là phải phải có một storage chung ví dụ Ceph, NFS,…, trong trường hợp của tôi thì tôi sử dụng Ceph của Proxmox và Proxmox đã dựng dành cụm tối thiểu 3 Node.
Nếu bạn đã đạt điều kiện hãy vào Datacenter (1), chọn HA -> Groups (2) -> Create.
Ở HA Group bạn sẽ nhìn thấy các trường mình sẽ giải thích như dưới:
- ID: Đây là ID duy nhất được gán cho HA Group. Nó được sử dụng để xác định và phân biệt các HA Group khác nhau trong hệ thống.
- Comment: Đây là một trường tùy chọn cho phép bạn thêm một ghi chú hoặc mô tả về HA Group. Bạn có thể sử dụng trường này để ghi lại thông tin liên quan đến HA Group như mục đích sử dụng, quy tắc hoạt động, v.v.
- restricted: Đây là một tùy chọn để hạn chế khả năng chuyển đổi tự động giữa các node trong HA Group. Khi cài đặt thành true, chỉ có một số node cụ thể được phép trở thành active node, trong khi các node khác sẽ ở trạng thái standby.
- nofailback: Đây là một tùy chọn để ngăn chặn việc chuyển đổi tự động trở lại active node ban đầu sau khi active node đã được khôi phục sau một sự cố. Khi cài đặt thành true, active node sẽ không tự động trở lại active sau khi đã bị failover.
- Node: Đây là tên của node trong hệ thống Proxmox.
- Memory usage %: Đây là tỷ lệ sử dụng bộ nhớ trên node, được tính dựa trên tổng bộ nhớ và bộ nhớ được sử dụng.
- CPU usage: Đây là tỷ lệ sử dụng CPU trên node, được tính dựa trên tổng số CPU và số lõi CPU đang được sử dụng.
- Priority: Đây là mức ưu tiên của node, thường được sử dụng để xác định ưu tiên cho việc phân phối tài nguyên giữa các node trong một môi trường cluster. Mức ưu tiên càng cao, node càng được ưu tiên trong việc sử dụng tài nguyên.
Trong group này mình sẽ đặt tên cho nó là pve-ha-cluster, tích chọn các Node có trong cụm sẽ tham gia HA, nếu Node nào bạn không muốn tham gia HA bạn không cần phải tích chọn nó.
Và đây là kết quả khi bạn tạo thành công Group.
Sau khi tạo xong Group thì bạn tích vào HA để tạo các resource.
Hãy chọn một loại resource Container/Virtual Machine, ví dụ mình sẽ chọn Virtual Machine ID 101.
- VM: Đây là tên của máy ảo hoặc container được thêm vào tài nguyên.
- Max. Restart: Đây là số lần tối đa mà máy ảo/container có thể được khởi động lại tự động sau khi gặp sự cố.
- Max. Relocate: Đây là số lần tối đa mà máy ảo/container có thể được di chuyển (relocate) tự động từ một node sang node khác trong một môi trường cluster.
- Group: Đây là tên của nhóm tài nguyên mà máy ảo/container thuộc về. Nhóm tài nguyên giúp quản lý và ưu tiên phân phối tài nguyên giữa các máy ảo/container trong cùng một nhóm.
- Request State: Đây là trạng thái mặc định mà máy ảo/container sẽ được yêu cầu khi khởi động hoặc di chuyển. Có các lựa chọn: “started” (đã khởi động), “stopped” (dừng), “ignored” (bỏ qua) và “disabled” (vô hiệu hóa).
- Comment: Đây là một phần chú thích hoặc ghi chú về máy ảo/container, có thể dùng để mô tả mục đích sử dụng, cấu hình đặc biệt, hoặc bất kỳ thông tin nào khác liên quan đến máy ảo/container.
Lưu ý là các thông số trên giúp quản lý và tùy chỉnh các tài nguyên của máy ảo/container trong môi trường Proxmox.
Và đây là kết quả khi tôi tạo xong resource cho Virtual Machine có ID 101.
Mình làm tương tự cho các resource còn lại.
Như vậy là đã tạo xong HA cho các Container/Virtual Machine. Giờ đây mình sẽ ngắt kết nối card mạng bridge 10G có tên vmbr1 (đây là card kết nối cluster và Ceph storage).
Mình ssh vào Node 1 và stop card mạng này với lệnh ifdown <tên card mạng>.
root@pve-node1:~# ip addr show vmbr1
7: vmbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP group default qlen 1000
link/ether ac:1f:6b:2d:8f:4a brd ff:ff:ff:ff:ff:ff
inet 10.0.0.225/24 scope global vmbr1
valid_lft forever preferred_lft forever
inet6 fe80::ae1f:6bff:fe2d:8f4a/64 scope link
valid_lft forever preferred_lft forever
root@pve-node1:~# ifdown vmbr1
Sau khi stop card mạng, bạn sẽ thấy các cảnh báo xuất hiện và node 01 báo down.
Các OSD đang chạy Ceph cũng báo down đồng loạt.
Ở phần đánh dấu màu đỏ là các cảnh báo down, phần đánh dấu màu xanh là đánh dấu các máy ảo đang ở trên Node 01 tự động phân tán ra các Node khác nằm trong cụm.