본문으로 건너뛰기

Proxmox 클러스터 구축 및 주의점


왜?

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

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

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

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


Proxmox 클러스터 구성

클러스터 생성

pvecm create 클러스터 이름
  • 첫 번째 노드, 즉 원래 메인으로 사용하던 노드에서 위 명령어를 입력해 클러스터를 생성해준다.
    • 원래 Proxmox에서는 쿼럼을 가진 노드가 제어권을 가지므로 어디서 생성하든 상관없지만, 편의상 이렇게 지칭하겠다.
  • 같은 클러스터 구성이라 따로 언급은 하지 않았지만, 혹시나 각 노드별 방화벽이 있다면 아래 포트를 열어줘야한다.
    • 22(TCP) - SSH
    • 5404-5405(UDP) - Corosync
    • 2234(TCP) - pve-cluster 파일 동기화

클러스터 Join

pvecm add 클러스터를생성한노드ip
  • 위 명령어를 입력하면 클러스터에 Join이 된다.
  • 하지만 위 명령어를 입력하면 오류메시지가 뜰 것이다. 원인은 아래 주의점에서 보자.

주의점

  • Proxmox를 설치하면 기본적으로 호스트의 호스트네임이 cloud로 되어있다. Proxmox는 같은 클러스터 내에서 같은 호스트네임을 허용하지 않는다. 이에 오류메시지가 뜨는 것이다.

Proxmox 호스트네임 바꾸기

hostnamectl set-hostname 바꿀호스트명
  • 위 명령어를 Join할 노드에서 입력하여 호스트 명을 바꾸어준다.
  • 위 명령어만 입력해서 끝내버리면 안된다. 그러면 여러 시스템들이 제대로 동작하지 않는다.
nano /etc/hosts
  • /etc/hosts 파일을 변경해주어야한다.
...
현재노드의ip 도메인 cloud
  • 위 내용 중 cloud 부분을 위에서 바꾼 호스트명으로 변경해주고 저장한다.
reboot
  • 노드를 재부팅한다.
  • 재부팅 이후 다시 Join을 하면 정상적으로 클러스터에 Join이 된다.