Tại sao 2 node là chưa đủ? Bài toán Quorum và Split-brain
Theo tiêu chuẩn, một cụm Proxmox VE (Cluster) cần ít nhất 3 node vật lý để chạy High Availability (HA) ổn định. Quy tắc này bắt nguồn từ khái niệm Quorum (số phiếu bầu đa số). Hệ thống phân tán chỉ cho phép ghi dữ liệu khi có hơn 50% số node biểu quyết là đang sống.
Vấn đề phát sinh khi bạn chỉ có 2 node. Nếu một node sập, node còn lại chỉ nắm 50% phiếu bầu, không đạt mức đa số (>50%). Ngay lập tức, Cluster sẽ rơi vào trạng thái “đóng băng” các dịch vụ HA. Đây là cơ chế tự vệ để tránh split-brain. Nếu cả hai node cùng mất kết nối mạng nhưng vẫn sống và cùng ghi dữ liệu vào ổ cứng dùng chung, dữ liệu của bạn sẽ hỏng hoàn toàn.
Mình từng quản lý một homelab chạy 12 VM trên 2 chiếc Mini PC Intel NUC. Việc mua thêm một chiếc NUC thứ 3 chỉ để làm “trọng tài” thì quá lãng phí điện và ngân sách. Đó là lúc QDevice (Quorum Device) trở thành vị cứu tinh. Thiết bị này chỉ đóng vai trò bỏ phiếu, giúp hệ thống đạt điều kiện > 50% mà không cần cấu hình phần cứng mạnh mẽ.
Chuẩn bị môi trường
Để thực hiện, bạn cần chuẩn bị các thành phần sau:
- Node 1: Proxmox VE (IP: 192.168.1.10).
- Node 2: Proxmox VE (IP: 192.168.1.11).
- QDevice: Một thiết bị chạy Linux bất kỳ như Raspberry Pi Zero, một máy ảo nhỏ trên PC khác, hoặc VPS giá rẻ (IP: 192.168.1.12).
Thiết bị làm QDevice cực kỳ nhẹ, chỉ chiếm khoảng 15-20MB RAM. Bạn chỉ cần cài Debian hoặc Ubuntu rút gọn là đủ. Hãy đảm bảo các máy có thể SSH qua lại và đã đặt IP tĩnh.
Bước 1: Khởi tạo Cluster Proxmox
Đầu tiên, hãy đăng nhập vào SSH của Node 1 để tạo cụm mới:
pvecm create my-cluster
Sau khi lệnh thực thi xong, bạn sang Node 2 để gia nhập vào cụm vừa tạo:
pvecm add 192.168.1.10
Hệ thống sẽ yêu cầu mật khẩu root của Node 1 để xác thực. Bạn có thể kiểm tra trạng thái bằng lệnh pvecm status. Lúc này, Total votes sẽ là 2. Nếu bạn rút dây mạng một node, node kia sẽ báo Activity blocked ngay vì mất Quorum.
Bước 2: Cài đặt trọng tài (QDevice)
Chúng ta sẽ biến chiếc máy tính thứ 3 thành một Quorum Network Daemon (corosync-qnetd). Trên máy QDevice (Debian/Ubuntu), bạn chạy lệnh:
sudo apt update && sudo apt install corosync-qnetd -y
Tiếp theo, quay lại cả hai node Proxmox (Node 1 và Node 2). Bạn cần cài đặt package hỗ trợ kết nối:
apt update && apt install corosync-qdevice -y
Bước 3: Kết nối Cluster với QDevice
Thao tác này chỉ cần thực hiện trên duy nhất một node Proxmox. Lệnh sau sẽ tự động thiết lập chứng chỉ bảo mật và đẩy cấu hình xuống các node còn lại:
pvecm qdevice setup 192.168.1.12
Trong quá trình cài đặt, bạn cần nhập mật khẩu root của máy QDevice. Hãy đợi vài giây để hệ thống trao đổi khóa SSH (fingerprint). Khi thông báo thành công hiện ra, hệ thống của bạn đã có 3 phiếu bầu.
Kiểm tra và Monitoring
Để xác nhận mọi thứ đã vận hành đúng ý, hãy gõ lệnh:
pvecm status
Kết quả chuẩn sẽ hiển thị như sau:
...
Votequorum information
----------------------
Expected votes: 3
Total votes: 3
Quorum: 2
Flags: Quorate Qdevice
Membership information
----------------------
Nodeid Votes Qdevice Name
1 1 A, m, n 192.168.1.10 (local)
2 1 A, m, n 192.168.1.11
0 1 Qdevice
...
Hiện tại Total votes là 3. Node 1, Node 2 và QDevice mỗi bên giữ 1 phiếu. Với mức Quorum: 2, chỉ cần 2 trong 3 thực thể này kết nối được với nhau là Cluster vẫn sống sót.
Thử nghiệm kịch bản sự cố
Mình đã thử tắt đột ngột Node 1. Ngay lập tức, Node 2 nhận ra nó vẫn còn kết nối với QDevice (đủ 2/3 phiếu). Nó tự tin duy trì trạng thái Quorum. Nếu bạn đã bật tính năng HA, các VM từ Node 1 sẽ tự động khởi động lại trên Node 2 chỉ sau khoảng 60-120 giây tùy cấu hình.
Lưu ý quan trọng từ thực tế
Dù QDevice rất mạnh mẽ, bạn nên để ý 3 điểm sau để hệ thống không “sập tiệm” bất ngờ:
- Tuyệt đối không chạy QDevice bên trong VM của chính Cluster đó: Nếu Node 1 sập và QDevice nằm trong đó, bạn mất luôn 2 phiếu cùng lúc. Hãy dùng một con Raspberry Pi hoặc Cloud VPS riêng biệt.
- Độ trễ mạng (Latency): Corosync rất nhạy cảm với độ trễ. Nếu dùng VPS làm QDevice, hãy chọn server cùng khu vực (ví dụ cùng ở Việt Nam) để latency dưới 50ms.
- Cẩn thận khi nâng cấp: Mỗi khi
apt upgradeliên quan đến Corosync, hãy kiểm tra lại trạng thái QDevice. Đôi khi dịch vụ cần được restart thủ công để nhận lại node.
Thiết lập Cluster 2 node với QDevice là phương án tối ưu cho các doanh nghiệp nhỏ hoặc anh em chơi Lab. Nó giúp bạn trải nghiệm đầy đủ sức mạnh của High Availability mà không cần đầu tư dàn server đồ sộ.

