본문으로 건너뛰기

Proxmox 클러스터 구축 방법

May 22, 2025

왜?

나는 집에서 여러 환경에서 서버를 운영하고 있다. 당연히 서버 인프라 환경이라면 가용성이 중요하다. 그게 큰 규모이든 작은 규모이든 간에. 즉, 하나의 장비가 폴트가 나더라도 해당 장비에서 돌아가고 있는 시스템들을 복구, 혹은 유지할 수 있는 방법이 있어야한다.

데이터센터에서 일을 할 때를 떠올려봐도 가상화 솔루션이 Openstack이든 VMware이든 Nutanix이든 여러 서버 장비들을 클러스터로 만들어 어떤 장비에서 폴트가 나더라도 해당 장비에서 돌아가고 있던 VM이 다른 장비에서 자동으로 마이그레이션되는 환경으로 구축되어있다. 이것이 바로 고가용성(High Availability, HA) 구조의 핵심이다.

이러한 구조를 만들기 위해서는 '클러스터'를 만들어야한다. 이 글에서는 홈랩과 같은 작은 규모에서 많이 사용되는 가상화 솔루션인 Proxmox의 클러스터 구성 방법과 주의점을 다루겠다.

이 글에서는 클러스터 생성과 join까지 다루고 HA 설정까지는 다른 글에서 자세히 다루겠다.


Proxmox 클러스터 구성

클러스터 생성

pvecm create 클러스터 이름
  • 첫 번째 노드, 즉 원래 메인으로 사용하던 노드에서 위 명령어를 입력해 클러스터를 생성해준다.
  • 같은 클러스터 구성이라 따로 언급은 하지 않았지만, 혹시나 각 노드별 방화벽이 있다면 아래 포트를 열어줘야한다.
    • 22(TCP) - SSH
    • 5404-5405(UDP) - Corosync

hosts 파일 설정

만약 내부에 DNS서버가 있으며, 해당 DNS서버에서 각 노드의 도메인 설정이 되어있고, 각 노드가 DNS서버로 해당 서버를 바라보고 있다면 hosts 파일 설정은 필요없다.
nano /etc/hosts
<클러스터에속한-노드1-IP> node1.local node1
<클러스터에속한-노드2-IP> node2.local node2
...
  • 각 노드가 서로의 도메인을 알아야하기 때문에 hosts 파일을 수정해준다.
  • 도메인은 proxmox 설치시 설정한 값으로 한다.
  • hostname과 IP가 정확히 매핑되어야 하며, FQDN과 short hostname 모두 설정하는 것이 안정적이다.

클러스터 Join

pvecm add 클러스터를생성한노드ip
  • 위 명령어를 입력하면 클러스터에 Join이 된다.

주의점(hostname)

  • hostname이 만약 겹친다면, Join되지 않는다. 만약 hostname을 겹치게 설정하였다면 아래 절차를 따른다.
hostnamectl set-hostname 바꿀호스트명
  • 위 명령어를 Join할 노드에서 입력하여 호스트 명을 바꾸어준다.
  • 위 명령어만 입력해서 끝내버리면 안된다. 그러면 여러 시스템들이 제대로 동작하지 않는다.
nano /etc/hosts
  • /etc/hosts 파일을 변경해주어야한다. (모든 노드에서)
...
현재노드의ip FQDN short-host-name
# ex: 192.168.99 cloud.local cloud
  • 위 내용 중 cloud 부분을 위에서 바꾼 호스트명으로 변경해주고 저장한다.
reboot
  • 노드를 재부팅한다.
  • 재부팅 이후 다시 Join을 하면 정상적으로 클러스터에 Join이 된다.