Vấn đề của hệ thống 2-Node: Tại sao bạn cần một “người phân xử”
Nhiều người cho rằng một cụm High Availability (HA) đòi hỏi ít nhất ba máy chủ đắt tiền. Về mặt kỹ thuật thì họ đúng, nhưng ví tiền của bạn có thể không đồng ý. Yêu cầu này bắt nguồn từ khái niệm “Quorum” — số lượng phiếu bầu tối thiểu cần thiết để cụm máy chủ có thể đưa ra quyết định. Trong thiết lập Proxmox tiêu chuẩn, mỗi node sẽ có một phiếu bầu.
Nếu một node ngoại tuyến trong thiết lập hai node, node còn lại chỉ nắm giữ 50% số phiếu. Vì Proxmox yêu cầu đa số tuyệt đối (>50%), node sống sót sẽ mất quorum. Sau đó, nó sẽ đóng băng tất cả các máy ảo và dừng các dịch vụ HA. Biện pháp an toàn này nhằm ngăn chặn kịch bản “split-brain”, nơi cả hai node cùng ghi vào một kho lưu trữ và làm hỏng dữ liệu của bạn.
Bạn có thể khắc phục điều này mà không cần mua máy chủ thứ ba có cấu hình đầy đủ. Một Quorum Device (QDevice) đóng vai trò như một “người phân xử” nhẹ nhàng. Tôi đã chạy thiết lập này trong phòng thí nghiệm của mình hơn sáu tháng. Nó đã vượt qua ba lần mất điện và hai lần cập nhật kernel theo lịch trình mà không gặp một phút gián đoạn nào.
Điều kiện tiên quyết và thiết lập môi trường
Raspberry Pi không cần hiệu năng quá mạnh. Một chiếc Raspberry Pi 3B cũ hoặc thậm chí là Raspberry Pi Zero 2 W giá 15 USD là quá đủ. Nó chỉ xử lý các gói tin mạng nhỏ 64-byte để bỏ phiếu. Nếu bạn quan tâm đến việc mở rộng quy mô, hãy tham khảo cách Xây dựng Cụm Raspberry Pi K3s để chạy các dịch vụ container. Trước khi bắt đầu, hãy đảm bảo bạn có:
- Một cụm Proxmox VE 2-node đang hoạt động (ví dụ:
pve-01vàpve-02). Để tối ưu hóa tài nguyên cho đồ họa, bạn có thể tìm hiểu cách chia phân vùng GPU trên Proxmox. - Một Raspberry Pi chạy bản cài đặt sạch của Raspberry Pi OS hoặc Debian.
- Địa chỉ IP tĩnh cho mọi thiết bị để ngăn chặn mất kết nối.
- Truy cập SSH với quyền root hoặc sudo.
Trong kiến trúc này, Pi sẽ chạy server corosync-qnetd. Trong khi đó, các node Proxmox của bạn sẽ chạy agent corosync-qdevice để giao tiếp với nó.
Bước 1: Chuẩn bị Raspberry Pi (QNetd Server)
Raspberry Pi lưu trữ daemon corosync-qnetd. Dịch vụ này chạy ngầm và chờ các node Proxmox yêu cầu bỏ phiếu. Nó sử dụng ít hơn 1% CPU của Pi trong điều kiện bình thường.
Đăng nhập vào Pi của bạn và cập nhật danh sách gói phần mềm:
sudo apt update
sudo apt install corosync-qnetd -y
Kiểm tra xem dịch vụ có đang chạy bình thường không:
systemctl status corosync-qnetd
Bây giờ Pi đã sẵn sàng. Bạn không cần chạm vào bất kỳ tệp cấu hình nào ở đây; các node Proxmox sẽ xử lý các công việc phức tạp trong quá trình “bắt tay” (handshake).
Bước 2: Chuẩn bị các node Proxmox
Tiếp theo, hãy chuyển sang các node Proxmox của bạn. Bạn phải cài đặt agent on cả hai pve-01 và pve-02. Gói này cho phép các máy chủ giao tiếp với dịch vụ bỏ phiếu của Pi.
Chạy các lệnh này trên cả hai máy chủ Proxmox:
apt update
apt install corosync-qdevice -y
Việc khớp phiên bản là rất quan trọng ở đây. Nếu Pi của bạn chạy phiên bản Debian quá cũ, quá trình bắt tay SSH có thể thất bại. Hãy sử dụng các phiên bản hiện đại như Debian 11 hoặc 12 để có kết quả tốt nhất.
Bước 3: Cấu hình liên kết QDevice
Đây là nơi phép màu xảy ra. Bạn chỉ cần chạy lệnh này từ một node Proxmox. Nó sẽ tự động đẩy cấu hình sang phần còn lại của cụm.
Từ pve-01, chạy lệnh thiết lập. Thay thế IP bằng địa chỉ của Raspberry Pi của bạn:
pvecm qdevice setup 192.168.1.50
Dưới đây là những gì diễn ra ở phía sau:
- Node xác minh rằng Pi có thể truy cập được trong mạng.
- Nó yêu cầu mật khẩu root của Pi để trao đổi chứng chỉ SSH bảo mật.
- Nó cập nhật cấu hình cụm để bao gồm Pi như một thành viên bỏ phiếu.
- Nó khởi động lại dịch vụ Corosync trên toàn bộ cụm.
Nếu bạn gặp lỗi “SSH host key verification”, đừng hoảng loạn. Chỉ cần SSH vào Pi thủ công một lần từ terminal của Proxmox để chấp nhận key, sau đó thử lại.
Xác minh: Kiểm tra các con số
Bây giờ, hãy xác minh rằng cụm máy chủ đã nhận diện đủ ba phiếu bầu. Chạy lệnh này trên bất kỳ node Proxmox nào:
pvecm status
Kiểm tra phần Quorum information. Kết quả trả về sẽ trông như thế này:
Thông tin Quorum
------------------
Số node: 2
Quorum: 2
Số phiếu: 3
Tổng số phiếu: 3
Hãy nhìn vào Total votes. Mặc dù bạn chỉ có hai máy chủ, nhưng bạn có ba phiếu bầu. Nếu pve-02 gặp sự cố, pve-01 vẫn giữ được 2 trên 3 phiếu (66%). Vì 66% là đa số, các máy ảo của bạn vẫn sẽ trực tuyến.
Những bài học xương máu để ổn định lâu dài
Chạy QDevice là một công việc kiểu “cài đặt xong là có thể yên tâm”, nhưng chỉ khi bạn tránh được các sai lầm phổ biến. Đây là những gì tôi đã học được sau sáu tháng sử dụng thực tế.
1. Ethernet là bắt buộc
Đừng bao giờ sử dụng Wi-Fi cho QDevice. Tôi đã thử, và mỗi khi lò vi sóng hoạt động, độ trễ lại tăng vọt. Những lần tăng vọt đó khiến cụm máy chủ nghĩ rằng Pi đã biến mất. Điều này tương tự như khi thiết lập DIY PiKVM, nơi kết nối ổn định là chìa khóa để điều khiển từ xa. Một dây cáp Ethernet rẻ tiền đảm bảo độ trễ 1-2ms cần thiết để việc bỏ phiếu ổn định.
2. Nguồn điện độc lập là không thể thương lượng
Đừng cắm Pi vào cổng USB trên máy chủ Proxmox của bạn. Nếu máy chủ đó khởi động lại, Pi cũng khởi động lại theo. Bạn sẽ mất hai phiếu bầu cùng lúc, làm sập toàn bộ cụm. Hãy sử dụng một củ sạc riêng biệt hoặc PoE hat kết nối với bộ lưu điện (UPS).
3. Bảo trì an toàn
Bạn có thể cập nhật và khởi động lại Raspberry Pi bất cứ khi nào bạn muốn, miễn là cả hai node Proxmox đều khỏe mạnh. Cụm sẽ tạm thời giảm xuống còn 2 trên 3 phiếu. Vì 2 vẫn là đa số, các máy ảo của bạn thậm chí sẽ không hề hấn gì.
4. Đừng quên lưu trữ
QDevice chỉ giải quyết vấn đề bỏ phiếu. Nó không tự động đồng bộ hóa dữ liệu của bạn. Bạn vẫn cần Lưu trữ HomeLab linh hoạt như NAS (NFS/iSCSI) hoặc ZFS pool được nhân bản (replicated) để di chuyển máy ảo giữa các node ngay lập tức. QDevice đơn giản là cung cấp “bộ não” để quyết định khi nào việc di chuyển đó nên xảy ra.
Một chiếc Raspberry Pi QDevice là cách tiết kiệm chi phí nhất để biến một home lab cơ bản thành một môi trường bền bỉ. Việc Trực quan hóa Kiến trúc HomeLab sẽ giúp bạn dễ dàng theo dõi sơ đồ kết nối của hệ thống này, loại bỏ nỗi lo split-brain và giúp bạn ngủ ngon hơn mỗi đêm.

