본문 바로가기
IT/Proxmox

[Proxmox] Proxmox 클러스터 구성 및 고가용성(HA) 설정 실전 가이드

by 수누다 2026. 4. 8.

단일 서버의 한계, 그리고 클러스터를 선택한 이유

홈랩을 처음 시작할 때 Proxmox 서버 한 대로 모든 걸 돌렸었는데요. 그러다 어느 날 아침에 일어났더니 서버가 뻗어 있더라고요. 업데이트 하나 잘못 먹은 건지, 아니면 제가 전날 밤에 뭔가 만지다 건드린 건지... 결과적으로 VM이 전부 다 내려가 있었습니다. 그 순간 '아, 이게 단일 장애점(SPOF, Single Point of Failure) 문제구나'라는 걸 뼈저리게 느꼈어요.

그 이후로 Proxmox 클러스터 설정을 진지하게 알아보기 시작했습니다. 사실 클러스터라고 하면 뭔가 엄청 거대한 기업형 인프라 느낌이 나서 처음엔 '나 같은 홈랩 유저가 할 수 있는 건가?' 싶었는데, 직접 해보니까 생각보다 훨씬 접근하기 쉽더라고요. 오늘은 제가 직접 Proxmox 클러스터를 구축하고 고가용성(HA, High Availability) 설정까지 완료한 과정을 처음부터 끝까지 공유해 드릴게요.

이 글은 Proxmox VE가 이미 설치된 노드가 최소 2대 이상 있다는 전제로 작성했습니다. Proxmox VE 설치 자체가 처음이신 분들은 이전 글을 먼저 참고해 주세요.

Proxmox 3노드 클러스터 아키텍처 다이어그램 - 공유 스토리지와 네트워크 구성

▲ 오늘 구축할 Proxmox 3노드 클러스터 아키텍처. 각 노드는 클러스터 네트워크와 스토리지 네트워크를 분리해서 운영하는 구조입니다.

Proxmox 클러스터, 쉽게 말해 이런 겁니다

클러스터(Cluster)란?

쉽게 말해서 여러 대의 Proxmox 서버를 하나처럼 묶어서 관리하는 방식이에요. 웹 UI 하나에서 모든 노드의 VM을 한눈에 보고, 관리하고, 이동시킬 수 있게 됩니다. 이게 없으면 노드마다 브라우저 탭을 열어서 따로따로 접속해야 하는데... 노드가 3~4대만 넘어가도 꽤 번거로워지거든요.

고가용성(HA, High Availability)이란?

HA는 클러스터를 구성했을 때 얻을 수 있는 핵심 기능 중 하나입니다. 특정 노드가 죽었을 때, 그 노드에서 돌아가던 VM들을 살아있는 다른 노드로 자동으로 옮겨서 재시작해주는 기능이에요. 물론 완전히 무중단은 아니고 VM이 재시작되는 시간(보통 1~2분 정도)이 있지만, 수동으로 조치하는 것보다 훨씬 빠르고 자동으로 처리된다는 점에서 엄청난 차이가 있습니다.

구분 단일 노드 Proxmox 클러스터 + HA
노드 장애 시 모든 VM 중단, 수동 복구 VM 자동으로 다른 노드에서 재시작
관리 UI 노드마다 개별 접속 단일 웹 UI에서 통합 관리
Live Migration 불가 가능 (다운타임 없이 VM 이동)
부하 분산 불가 노드 간 VM 분산 배치 가능
구성 복잡도 낮음 중간 (초기 설정 필요)

클러스터 구성 전 필수 요건

  • Proxmox VE 노드 최소 2대 (HA는 최소 3대 권장 — 쿼럼 이슈 때문에요)
  • 모든 노드가 동일한 네트워크에 연결되어 있어야 함
  • 각 노드의 호스트명(hostname)이 달라야
  • 노드 간 시간 동기화(NTP) 필수
  • HA를 쓰려면 공유 스토리지(Shared Storage) 또는 Ceph 권장

💡 팁: 저는 처음에 노드 2대로 시작했다가 HA 설정에서 쿼럼(Quorum, 클러스터 의사결정 정족수) 문제로 엄청 고생했어요. 가능하면 처음부터 3대로 시작하세요. 진심으로요.

Proxmox 클러스터 구축 단계별 실전 가이드

1단계: 노드 사전 준비

클러스터를 만들기 전에 각 노드에서 아래 작업을 먼저 해줘야 합니다. 이걸 빠뜨리면 나중에 진짜 골치 아파요.

각 노드의 /etc/hosts 파일에 다른 노드들의 IP와 호스트명을 등록해 줍니다.

# /etc/hosts 예시 (모든 노드에 동일하게 적용)
192.168.1.101  pve01  pve01.homelab.local
192.168.1.102  pve02  pve02.homelab.local
192.168.1.103  pve03  pve03.homelab.local

그 다음 NTP 동기화 상태를 확인합니다.

# NTP 상태 확인
systemctl status chrony

# 시간 동기화 강제 실행
chronyc makestep

# 현재 시간 확인 (모든 노드가 같아야 함)
date

노드 간 핑(ping)도 꼭 확인하세요.

# pve01에서 실행
ping -c 4 pve02
ping -c 4 pve03

2단계: 클러스터 생성 (첫 번째 노드에서)

클러스터는 노드 중 하나를 마스터로 삼아서 거기서 생성합니다. 저는 pve01에서 진행했어요.

# pve01에서 실행 — 클러스터 생성
pvecm create my-homelab-cluster

# 생성 확인
pvecm status

성공하면 이런 식으로 출력됩니다.

Cluster information
------------------
Name:             my-homelab-cluster
Config Version:   1
Transport:        knet
Secure auth:      on

Quorum information
------------------
Date:             ...
Quorum provider:  corosync_votequorum
Nodes:            1
Node votes:       1
Expected votes:   1
Total votes:      1
Quorum:           1  
Flags:            Quorate

3단계: 나머지 노드를 클러스터에 추가

이제 pve02, pve03을 클러스터에 합류시킬 차례입니다. 반드시 합류시킬 노드에서 실행해야 해요. 이거 헷갈려서 처음에 pve01에서 실행했다가 삽질했습니다 ㅎㅎ

# pve02에서 실행 — 클러스터 합류
pvecm add 192.168.1.101

# 합류 후 상태 확인
pvecm status

명령 실행 시 pve01의 root 비밀번호를 물어봅니다. 입력해 주면 SSH 키 교환이 자동으로 이뤄지면서 합류가 완료돼요. pve03도 동일하게 진행합니다.

# pve03에서 실행
pvecm add 192.168.1.101

# 최종 상태 확인 (어느 노드에서든)
pvecm status

3노드 모두 합류하면 이렇게 보입니다.

Quorum information
------------------
Nodes:            3
Node votes:       3
Expected votes:   3
Total votes:      3
Quorum:           2
Flags:            Quorate

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 pve01 (local)
0x00000002          1 pve02
0x00000003          1 pve03

🎉 Proxmox 클러스터 구성 완료! 이제 웹 UI에서 Datacenter > 노드 목록에 pve01, pve02, pve03이 모두 보일 거예요.

Proxmox 웹 UI에서 3노드 클러스터 구성 완료 후 상태 화면

▲ 클러스터 구성 완료 후 Proxmox 웹 UI. 3개 노드가 모두 녹색으로 표시되고, 왼쪽 트리에서 한 번에 관리할 수 있습니다.

고가용성(HA) 설정하기

HA 작동 방식 이해하기

HA 설정 전에 개념을 좀 짚고 가야 해요. Proxmox HA는 두 가지 핵심 컴포넌트로 동작합니다.

  • ha-manager: HA 상태를 관리하고 결정을 내리는 데몬
  • Watchdog: 노드 장애를 감지하고 해당 노드를 강제로 재시작(펜싱, Fencing)시키는 역할

여기서 펜싱(Fencing)이라는 개념이 중요한데요. 장애가 발생한 노드가 실제로 죽은 건지, 아니면 네트워크만 끊긴 건지 확실히 알 수 없을 때 해당 노드를 강제로 전원 차단하거나 재시작해서 '확실히 죽이는' 과정이에요. 이게 없으면 같은 VM이 두 노드에서 동시에 실행되는 스플릿 브레인(Split-Brain) 상황이 생길 수 있거든요.

공유 스토리지 설정 (HA의 전제 조건)

HA가 제대로 동작하려면 VM 디스크가 모든 노드에서 접근 가능한 공유 스토리지에 있어야 합니다. 로컬 스토리지에 VM이 있으면 HA로 다른 노드에 옮길 수가 없어요.

저는 NFS를 공유 스토리지로 사용했습니다. Ceph도 좋은 선택이지만 구성이 좀 더 복잡하니까 Ceph는 별도 글에서 다룰게요.

# Proxmox 웹 UI > Datacenter > Storage > Add > NFS
# 또는 CLI로 추가

pvesm add nfs shared-storage \
  --server 192.168.1.200 \
  --export /mnt/nfs/proxmox \
  --content images,iso,backup \
  --nodes pve01,pve02,pve03

HA 그룹(HA Group) 생성

HA 그룹은 특정 VM이 어떤 노드에서 실행될지 우선순위를 정하는 설정이에요. Proxmox VE 7.0 이후 버전에서는 웹 UI를 통해서만 HA 그룹을 생성할 수 있으며, 이 방식이 훨씬 직관적입니다. CLI 명령어로 HA 그룹을 직접 생성하는 기능은 제거되었습니다.

  1. Proxmox 웹 UI에서 Datacenter 클릭
  2. 왼쪽 메뉴에서 HA 클릭
  3. Groups 탭 선택 후 Create
  4. Group ID 입력 (예: ha-group-01)
  5. 각 노드의 우선순위 설정 (숫자가 높을수록 우선)
  6. Restricted 옵션: 체크하면 그룹에 없는 노드로는 절대 이동 안 함

💡 참고: Proxmox VE 7.0 이후 버전에서는 ha-manager groupadd 명령어가 제거되어 CLI로 HA 그룹을 직접 생성할 수 없습니다. 웹 UI를 통해 생성해 주세요.

VM을 HA 리소스로 등록

이제 HA로 보호할 VM을 등록합니다. VM ID가 100번인 VM을 등록하는 예시입니다. HA 그룹 할당은 웹 UI에서 VM 설정 또는 생성 시 직접 선택하는 것이 가장 편리합니다. CLI에서 HA 리소스를 추가할 때는 --group 옵션이 존재하지 않습니다.

# VM 100을 HA 리소스로 추가
ha-manager add vm:100 \
  --state started \
  --max_restart 3 \
  --max_relocate 3

옵션 설명:

  • --state started: HA가 이 VM을 항상 실행 상태로 유지하려 함
  • --max_restart 3: 같은 노드에서 최대 3번 재시작 시도
  • --max_relocate 3: 다른 노드로 최대 3번 이동 시도

💡 참고: 위 CLI 명령어로 HA 리소스를 추가한 후에는 /etc/pve/ha/resources.cfg 파일을 직접 수정하여 그룹을 할당하거나, Proxmox 웹 UI에서 VM의 HA 설정으로 이동하여 그룹을 지정할 수 있습니다.

# HA 리소스 상태 확인
ha-manager status

⚠️ 삽질 기록 — 이것만 주의하면 됩니다

문제 1: 클러스터 합류 후 쿼럼 손실

2노드 클러스터 구성 후 노드 하나를 재시작했더니 남은 노드가 쿼럼을 잃어서 VM 시작이 안 되는 상황이 발생했어요. 이게 2노드 클러스터의 치명적인 약점입니다.

해결책: 3번째 노드를 추가하거나, 어쩔 수 없이 2노드로 운영해야 한다면 QDevice(쿼럼 장치)를 별도로 설정하세요.

# 2노드 환경에서 임시방편 (권장하지 않음)
pvecm expected 1

# 제대로 된 해결책: QDevice 설정
# QDevice로 쓸 별도 리눅스 머신이 필요합니다
apt install corosync-qnetd  # QDevice 서버에서
pvecm qdevice setup   # Proxmox 노드에서

문제 2: HA가 VM을 이동시키지 않음

노드를 강제로 껐더니 VM이 다른 노드로 이동하지 않더라고요. 원인을 찾아보니 두 가지였습니다.

  • VM 디스크가 로컬 스토리지에 있었음 → 공유 스토리지로 이동 필요
  • Watchdog 데몬이 제대로 동작하지 않았음
# Watchdog 상태 확인
systemctl status pve-ha-lrm
systemctl status pve-ha-crm

# 재시작
systemctl restart pve-ha-lrm
systemctl restart pve-ha-crm

# 로그 확인
journalctl -u pve-ha-crm -f

문제 3: 클러스터 네트워크 분리 안 함

처음엔 클러스터 통신(Corosync)을 일반 서비스 네트워크와 같이 썼는데, 트래픽이 몰릴 때 클러스터 통신이 불안정해지는 문제가 생겼어요. 클러스터 전용 네트워크를 분리하는 걸 강력히 추천합니다.

# /etc/corosync/corosync.conf 에서 링크 추가
totem {
    cluster_name: my-homelab-cluster
    link_mode: passive

    interface {
        linknumber: 0
        knet_link_priority: 1
    }

    interface {
        linknumber: 1  # 클러스터 전용 네트워크
        knet_link_priority: 2
    }
}
Proxmox 고가용성 HA 페일오버 진행 중인 상태 화면

▲ 노드 장애 시뮬레이션 후 HA 페일오버(Failover) 진행 중인 화면. VM이 자동으로 다른 노드로 이동하는 것을 확인할 수 있습니다.

HA 동작 검증하기

페일오버(Failover) 테스트

설정이 끝났으면 실제로 노드 하나를 죽여보는 테스트를 해야 합니다. 무서울 수 있는데... 해야 해요. 평소에 테스트 안 해두면 진짜 장애 상황에서 동작 안 하는 걸 발견하는 경우가 생기거든요.

  1. HA 리소스로 등록된 VM이 pve01에서 실행 중인지 확인
  2. VM 내부에서 ping을 계속 날려두거나 웹 서버를 띄워서 응답 확인
  3. pve01의 전원을 강제로 차단 (또는 systemctl poweroff --force)
  4. HA가 VM을 pve02 또는 pve03으로 이동시키는지 모니터링
# 다른 노드에서 HA 상태 모니터링
watch -n 2 ha-manager status

# 또는 상세 로그 확인
journalctl -u pve-ha-crm -f

제가 테스트했을 때 노드 장애 감지부터 VM 재시작 완료까지 약 90초 정도 걸렸습니다. VM 종류와 디스크 크기에 따라 다를 수 있어요.

Live Migration(라이브 마이그레이션) 테스트

HA와 별개로, 클러스터가 구성되면 VM을 다운타임 없이 다른 노드로 이동시키는 라이브 마이그레이션도 가능합니다. 이건 노드 유지보수 전에 VM을 미리 옮길 때 정말 유용해요.

# VM 100을 pve02로 라이브 마이그레이션
qm migrate 100 pve02 --online

# 마이그레이션 상태 확인
qm status 100

✅ 마이그레이션 중에도 VM 내부에서 ping이 끊기지 않는다면 성공입니다!

Proxmox 클러스터 구성 완전 정리

Proxmox 클러스터 설정 및 HA 구성 단계별 요약 인포그래픽

▲ Proxmox 클러스터 + HA 설정 전체 흐름 요약. 이 순서대로 진행하면 실수 없이 구성할 수 있습니다.

자주 묻는 질문 (FAQ)

Q. 노드가 2대밖에 없는데 HA를 쓸 수 있나요?
A. 기술적으로는 가능하지만 쿼럼 문제 때문에 안정성이 많이 떨어집니다. QDevice를 추가로 설정하면 어느 정도 해결되지만, 가능하면 3대를 권장합니다.
Q. HA를 쓰면 VM이 항상 다른 노드로 자동 이동하나요?
A. 노드 장애 시에만 자동 이동합니다. 평상시에는 설정된 노드에서 계속 실행됩니다. 자동 밸런싱은 별도 설정이 필요해요.
Q. 공유 스토리지 없이 HA가 가능한가요?
A. 공유 스토리지 없이는 HA 페일오버가 안 됩니다. Ceph를 쓰거나 NFS, iSCSI 같은 공유 스토리지를 반드시 구성해야 합니다.
Q. 클러스터 구성 후 기존 VM에 영향이 있나요?
A. 클러스터 구성 자체는 기존 VM에 영향을 주지 않습니다. 다만 HA 리소스로 등록하면 관리 방식이 달라지므로 주의가 필요합니다.

마무리 — 홈랩도 이제 엔터프라이즈급 안정성으로

처음에 서버가 뻗어서 VM이 전부 죽었던 그 아침이 오히려 좋은 계기가 됐어요. 덕분에 Proxmox 클러스터 설정을 제대로 공부하게 됐고, 지금은 노드 하나가 재부팅되더라도 VM들이 자동으로 살아남는 환경을 갖추게 됐거든요.

물론 처음 설정하면서 삽질도 많이 했습니다. 2노드 쿼럼 문제, 로컬 스토리지 때문에 HA 안 되는 문제, 클러스터 네트워크 분리 안 해서 불안정했던 것들... 이 글에 다 담으려고 했는데 그래도 여러분은 저보다 훨씬 수월하게 하실 수 있을 거예요.

다음 글에서는 Proxmox에서 Ceph 분산 스토리지를 구성하는 방법을 다룰 예정입니다. 공유 스토리지를 별도 NAS 없이 Proxmox 노드들 자체적으로 구성하는 방법인데, 홈랩에서도 충분히 해볼 만합니다. 기대해 주세요!

궁금한 점이나 삽질 경험 있으신 분들은 댓글로 남겨주세요. 저도 아직 배우는 중이라 같이 이야기 나누면 좋을 것 같습니다 😊