Proxmox VE: 2 노드 HA 기능 테스트(Part 2 QDevice 추가)
적어도 3 nodes가 있어야 HA 기능을 제대로 사용할 수 있다고 합니다(HA 구성 요구사항). 그런데 저는 2 nodes밖에 없어서 QDevice(Quorum Device)를 사용해야만 HA 기능을 테스트해 볼 수 있습니다.
먼저 “왜 QDevice를 사용해야하는지?” 알아보겠습니다. PVE 클러스터는 과반수(Quorum)를 만족해야 정상적으로 동작합니다. 즉, N개의 노드가 있다면 (N/2 + 1)개 이상이 살아 있어야 클러스터가 유지됩니다. 노드 2개로 클러스터를 구성할 경우, 한쪽 노드가 다운되면 Quorum을 잃어서 전체 클러스터가 작동 중지되므로 QDevice를 추가해서 투표 수를 늘려야 Quorum을 유지할 수 있습니다.
QDevice 쿼럼를 설치하는 방법은 아래와 같이 2가지 방법이 있습니다.
- 외부 서버(VM 또는 Physical)에 쿼럼 설치(권장)
- 외부 서버에서 corosync-qnetd 패키지를 설치합니다. 외부 서버에는 Debian Linux가 설치된 것으로 가정하겠습니다.
apt-get update apt-get install corosync-qnetd -y systemctl enable --now corosync-qnetd
- 모든 Proxmox Cluster Node에서 QNetd 패키지와 QDevice 패키지를 설치합니다.
apt-get update apt-get install corosync-qnetd corosync-qdevice -y systemctl enable --now corosync-qnetd pvecm qdevice setup <QDEVICE_IP_ADDRESS>
- QDevice가 정상적으로 추가되었는지 확인합니다.
Reloading corosync.conf...Done
이 표시되면 정상적으로 설정된 것입니다.pvecm status
- 외부 서버에서 corosync-qnetd 패키지를 설치합니다. 외부 서버에는 Debian Linux가 설치된 것으로 가정하겠습니다.
- Proxmox Cluster 내부에 쿼럼 설치
- 모든 Proxmox Cluster Node에 QNetd 패키지와 QDevice 패키지를 설치합니다.
apt-get update apt-get install corosync-qnetd corosync-qdevice -y systemctl enable --now corosync-qnetd
- 클러스터 노드에서 QDevice 활성화합니다. 참고로 QDevice 설정사항을 삭제하려면
pvecm qdevice remove
명령어를 사용합니다.pvecm qdevice setup <QDEVICE_IP_ADDRESS>
- QDevice 설정을 확인합니다.
pvecm status
- 모든 Proxmox Cluster Node에 QNetd 패키지와 QDevice 패키지를 설치합니다.
저는 첫 번째 방법으로 QDevice를 추가하여 HA 기능 테스트를 진행하겠습니다. 아래는 QDevice를 추가하는 절차입니다.
- VirtualBox에 Debian Linux를 설치했습니다. 설치할 때 네트워크 어댑터는 브리지 유형을 선택해야 합니다. 그래야 동일한 네트워크 대역의 IP를 설정할 수 있고, 외부에서 ssh 연결이 가능합니다.
root@qdevice:~# apt-get update root@qdevice:~# apt-get install corosync-qnetd -y root@qdevice:~# systemctl enable --now corosync-qnetd
pvecm status
명령어를 사용해서 Cluster 의 현재 상태를 먼저 확인해 보겠습니다. two nodes로 구성된 클러스터입니다.root@node1:~# pvecm status Cluster information ------------------- Name: kvmcluster Config Version: 2 Transport: knet Secure auth: on Quorum information ------------------ Date: Tue Feb 18 10:26:46 2025 Quorum provider: corosync_votequorum Nodes: 2 Node ID: 0x00000001 Ring ID: 1.12 Quorate: Yes Votequorum information ---------------------- Expected votes: 2 Highest expected: 2 Total votes: 2 Quorum: 2 Flags: Quorate Membership information ---------------------- Nodeid Votes Name 0x00000001 1 192.168.100.141 (local) 0x00000002 1 192.168.100.142
- node1과 node2에서 각각 QNetd 패키지와 QDevice 패키지를 설치하고 실행합니다.
root@node1:~# apt-get install corosync-qnetd corosync-qdevice -y root@node1:~# systemctl enable --now corosync-qnetd root@node2:~# apt-get install corosync-qnetd corosync-qdevice -y root@node2:~# systemctl enable --now corosync-qnetd
- node1에서 QDevice를 설정해 보겠습니다.
58.xxx.xxx.143
는 Debian Linux의 IP address 입니다.$ root@node1:~# pvecm qdevice setup 58.xxx.xxx.143 /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" <!--more--> Reloading corosync.conf... Done
pvecm status
명령어를 사용해서 Cluster의 상태를 다시 확인해 보겠습니다. QDevice가 추가된 것을 확인하실 수 있습니다.root@node1:~# pvecm status Cluster information ------------------- Name: kvmcluster Config Version: 3 Transport: knet Secure auth: on Quorum information ------------------ Date: Tue Feb 18 10:32:21 2025 Quorum provider: corosync_votequorum Nodes: 2 Node ID: 0x00000002 Ring ID: 1.12 Quorate: Yes Votequorum information ---------------------- Expected votes: 3 Highest expected: 3 Total votes: 3 Quorum: 2 Flags: Quorate Qdevice Membership information ---------------------- Nodeid Votes Qdevice Name 0x00000001 1 A,V,NMW 192.168.100.141 (local) 0x00000002 1 A,V,NMW 192.168.100.142 0x00000000 1 Qdevice