Proxmox 3노드 클러스터와 전용 스토리지: 고가용성 홈랩의 시작!
안녕하세요! IT 인프라에 관심 많으신 분들, 특히 홈랩(Homelab) 구축을 꿈꾸시거나 현재 운영 중이신 분들이라면 "고가용성"과 "확장성"이라는 키워드에 늘 목말라 있으실 겁니다. 오늘은 이 두 마리 토끼를 잡을 수 있는 강력한 조합, 바로 Proxmox VE 3노드 클러스터와 전용 스토리지를 활용한 상세 구성 방안에 대해 깊이 있게 다뤄보려고 합니다.
단순히 클러스터를 만드는 것을 넘어, 안정적이고 효율적인 가상 환경을 구축하기 위한 스토리지 전략까지 함께 고민해 봅시다!
목차
- 왜 Proxmox 3노드 클러스터인가?
- 전용 스토리지 솔루션의 필요성
- 하드웨어 요구사항 (3노드 & 스토리지)
- Proxmox 노드 (3대)
- 전용 스토리지 서버 (1대)
- 네트워킹 고려사항
- Proxmox 클러스터 구성 단계
- Proxmox VE 설치 및 초기 설정
- 네트워크 설정: 본딩(Bonding) 및 VLAN
- 클러스터 생성 및 노드 추가
- 전용 스토리지 솔루션 선택 및 구성
- 옵션 1: ZFS on Linux (직접 구성)
- 옵션 2: TrueNAS CORE/SCALE (GUI 기반)
- 옵션 3: OpenMediaVault (GUI 기반)
- 선택 및 본 게시물에서의 활용: TrueNAS SCALE (NFS/iSCSI)
- Proxmox와 전용 스토리지 연동 상세
- NFS (Network File System) 스토리지 추가
- iSCSI (Internet Small Computer System Interface) 스토리지 추가
- HA (고가용성) 설정 및 테스트
- HA 그룹 설정
- HA VM/CT 구성
- 장애 조치 테스트 (Failover Test)
- 백업 및 복구 전략
- 결론 및 추가 고려사항
1. 왜 Proxmox 3노드 클러스터인가?
Proxmox VE는 KVM 기반의 강력한 오픈소스 가상화 플랫폼입니다. 단일 서버로도 충분히 훌륭하지만, 왜 굳이 3노드 클러스터를 구성해야 할까요?
- 고가용성 (High Availability, HA): Proxmox는 3개 이상의 노드에서 Quorum(쿼럼)을 유지하여 노드 장애 시에도 가상 머신(VM)이나 컨테이너(CT)가 자동으로 다른 정상 노드에서 재시작되도록 합니다. 3노드는 1개의 노드 장애까지 허용하며 클러스터 기능을 유지할 수 있는 최소한의 구성입니다. (2노드 HA는 스플릿 브레인(Split-Brain) 문제로 인해 권장되지 않습니다.)
- 로드 밸런싱 및 자원 활용 극대화: 여러 노드에 VM/CT를 분산하여 각 노드의 부하를 줄이고 전체 클러스터의 컴퓨팅 자원을 효율적으로 사용할 수 있습니다.
- 무중단 유지보수: 특정 노드에 대한 하드웨어 교체, OS 업데이트 등의 유지보수 작업 시, 해당 노드의 VM/CT를 다른 노드로 Live Migration(실시간 마이그레이션)하여 서비스 중단 없이 작업을 진행할 수 있습니다.
- 확장성: 필요에 따라 노드를 추가하여 컴퓨팅 자원을 쉽게 확장할 수 있습니다.
2. 전용 스토리지 솔루션의 필요성
Proxmox 클러스터만으로도 HA를 구현할 수 있지만, VM 디스크를 각 노드의 로컬 스토리지에 저장한다면 라이브 마이그레이션이나 HA 동작 시 제약이 따릅니다.
- 라이브 마이그레이션: 로컬 스토리지에 있는 VM은 다른 노드로 라이브 마이그레이션이 불가능합니다. (스토리지 마이그레이션 후 가능)
- HA 구현의 한계: 노드 장애 시 VM이 다른 노드에서 재시작될 때, 해당 VM의 디스크 이미지가 복사되거나 기존 디스크 이미지에 대한 접근이 불가능하여 HA 동작에 어려움이 발생합니다.
- 관리의 복잡성: 각 노드별로 스토리지를 관리해야 하므로 전체적인 관리가 복잡해집니다.
전용 스토리지 솔루션(NAS/SAN)을 도입하면 이 모든 문제를 해결할 수 있습니다. 클러스터의 모든 노드가 동일한 스토리지에 접근할 수 있게 되어, VM의 디스크를 중앙 집중식으로 관리하고 HA 및 라이브 마이그레이션을 원활하게 수행할 수 있습니다.
3. 하드웨어 요구사항 (3노드 & 스토리지)
홈랩 기준의 가성비와 성능을 고려한 권장 사양입니다. 예산과 목적에 따라 조절 가능합니다.
3.1. Proxmox 노드 (3대)
- CPU: 최소 4코어 이상 (예: Intel Core i5/i7 7세대 이상, AMD Ryzen 5 이상)
- RAM: 각 노드당 최소 16GB (32GB 이상 권장, 실행할 VM 수에 따라 조절)
- 스토리지 (OS용):
- OS 설치 및 캐싱용 120GB 이상 SSD (NVMe 권장) 1개
- (옵션) 로컬 VM 저장을 위한 추가 SSD/HDD
- 네트워크:
- 매우 중요! 각 노드당 2개 이상의 기가비트 이더넷 포트 (10GbE 이상 권장).
- 최소: 1개는 관리 및 클러스터 통신용, 다른 1개는 VM 트래픽 및 스토리지 트래픽용 (본딩 구성 예정)
- 권장: 10GbE 포트 2개 (스토리지 및 VM 트래픽) + 1GbE 포트 1개 (관리 및 클러스터 통신)
- 기타: IPMI/iDRAC/iLO 등 원격 관리 기능이 있다면 매우 편리합니다.
3.2. 전용 스토리지 서버 (1대)
- CPU: 쿼드코어 이상 (예: Intel Pentium Gold, Core i3/i5, AMD Ryzen 3/5 이상)
- RAM: 최소 8GB, ZFS를 사용할 경우 16GB 이상 권장 (ECC RAM 강력 권장)
- 스토리지 (데이터용):
- OS 설치용 120GB 이상 SSD 1개
- 데이터 저장용 HDD (예: 4TB x 4개 이상)
- RAID 구성: ZFS (RAIDZ1/2), HW RAID, SW RAID (MDADM) 등을 고려. 안정적인 데이터 보호를 위해 RAID 구성은 필수입니다.
- 캐싱/로그용: NVMe 또는 SSD (ZIL/L2ARC용, ZFS 사용 시)
- 네트워크:
- 매우 중요! 2개 이상의 기가비트 이더넷 포트 (10GbE 이상 강력 권장).
- Proxmox 노드와 동일하거나 더 높은 대역폭을 가진 포트 구성이 이상적입니다. (본딩 구성 예정)
- 케이스/파워: HDD 개수에 따라 적절한 케이스 및 충분한 용량의 파워 서플라이
3.3. 네트워킹 고려사항
- 스위치: 최소 8포트 이상 기가비트 스위치. Proxmox 노드 및 스토리지 서버에 10GbE 포트가 있다면 10GbE 지원 스위치 필수.
- 네트워크 분리: 가능하면 물리적 또는 논리적으로 네트워크를 분리하는 것을 권장합니다.
- 관리/클러스터 네트워크: Proxmox 클러스터 통신, SSH 접근 등
- 스토리지 네트워크: NFS/iSCSI 트래픽 (가장 중요하며 대역폭을 많이 사용)
- VM 네트워크: VM들의 외부 통신
- (팁) 본딩 (Bonding): 각 서버의 여러 네트워크 포트를 묶어 대역폭을 확장하고 장애 발생 시에도 연결을 유지하는 Link Aggregation (LACP)을 구성하는 것이 좋습니다.
4. Proxmox 클러스터 구성 단계
4.1. Proxmox VE 설치 및 초기 설정 (각 3노드에 반복)
- Proxmox VE ISO 다운로드: Proxmox 공식 웹사이트에서 최신 버전 ISO 다운로드.
- 부팅 가능한 USB 생성: Rufus, Etcher 등으로 ISO를 USB에 굽기.
- 설치: USB로 부팅하여 Proxmox VE를 각 노드의 OS용 SSD에 설치합니다.
- 호스트네임은
pve01,pve02,pve03등으로 구분. - 고정 IP 주소 설정 (예:
192.168.1.101,192.168.1.102,192.168.1.103) - 관리자 비밀번호 및 이메일 설정.
- 기본 업데이트: 설치 후 웹 UI (
https://[노드IP]:8006)에 접속하여 로그인.
Shell또는 SSH로 접속하여apt update && apt dist-upgrade -y실행.
- 엔터프라이즈 레포지토리 비활성화 (선택): 유료 구독이 없다면
enterprise.list파일을 주석 처리하여no-subscription레포지토리를 사용합니다.
nano /etc/apt/sources.list.d/pve-enterprise.list# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterpriseecho "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.listapt update
4.2. 네트워크 설정: 본딩(Bonding) 및 VLAN (각 3노드에 반복)
여기서는 각 노드에 2개의 10GbE 포트(예: enp1s0f0, enp1s0f1)와 1개의 1GbE 포트(예: enp2s0)가 있다고 가정합니다.
목표:
vmbr0: 관리 및 클러스터 통신용 (1GbEenp2s0사용)vmbr1(Bond0): 스토리지 및 VM 트래픽용 (10GbEenp1s0f0,enp1s0f1본딩)
- 웹 UI 접속:
https://[노드IP]:8006 - 네트워크 설정:
Datacenter -> [노드이름] -> System -> Network - Bond 생성:
Create -> Linux Bond- Name:
bond0 - Slaves:
enp1s0f0,enp1s0f1(또는 실제 포트 이름) - Mode:
802.3ad (LACP)(스위치에서 LACP 설정 필요) 또는balance-rr(스위치 설정 불필요, 하지만802.3ad권장) - Hash Policy:
layer2+3(권장) Create
- Bridge 생성 (vmbr1 - Bond0 위):
Create -> Linux Bridge- Name:
vmbr1 - IPv4 Address: (IP 주소 설정 안 함, VLAN 태깅 또는 VM에 직접 할당)
- Bridge ports:
bond0 Create
- Bridge 생성 (vmbr0 - 1GbE 위):
Create -> Linux Bridge- Name:
vmbr0 - IPv4 Address:
192.168.1.101/24(각 노드에 맞는 IP) - Gateway:
192.168.1.1 - Bridge ports:
enp2s0(또는 실제 1GbE 포트 이름) Create
- Apply Configuration: 우측 상단의
Apply Configuration클릭하여 변경 사항 적용. (네트워크가 재시작되므로 SSH 세션이 끊길 수 있음)
참고: 스위치에서 LACP를 구성해야 802.3ad 모드가 제대로 동작합니다. 스위치 설정은 사용하는 스위치 모델에 따라 다릅니다.
4.3. 클러스터 생성 및 노드 추가
- 첫 번째 노드 (pve01)에서 클러스터 생성:
- 웹 UI 접속:
https://192.168.1.101:8006 Datacenter -> Cluster -> Create Cluster- Cluster Name:
my-proxmox-cluster(원하는 이름) Create
- 클러스터 정보 확인: 클러스터 생성 후
Join Information을 클릭하여PVE Cluster Join Command를 복사합니다. (비밀번호와 함께 나옴) - 두 번째 노드 (pve02)를 클러스터에 추가:
- 웹 UI 접속:
https://192.168.1.102:8006 Datacenter -> Cluster -> Join Cluster- Information: 첫 번째 노드에서 복사한
PVE Cluster Join Command를 붙여넣기. - Password: 첫 번째 노드의
root비밀번호 입력. Join
- 세 번째 노드 (pve03)를 클러스터에 추가: 위와 동일한 방법으로
pve03도 클러스터에 추가합니다.
모든 노드가 클러스터에 성공적으로 추가되면, 아무 노드의 웹 UI에 접속해도 Datacenter 아래에 3개의 노드가 보이는 것을 확인할 수 있습니다. 이제 클러스터 준비가 완료되었습니다!
5. 전용 스토리지 솔루션 선택 및 구성
앞서 언급했듯이, 전용 스토리지 서버를 구축하여 Proxmox 클러스터에 네트워크 스토리지를 제공할 것입니다. 여러 옵션이 있지만, 여기서는 TrueNAS SCALE을 사용하여 NFS와 iSCSI 스토리지를 구성하는 방법을 상세히 다루겠습니다.
왜 TrueNAS SCALE인가?
- 강력한 ZFS: 데이터 무결성, 스냅샷, 복제 등 엔터프라이즈급 기능을 제공합니다.
- Linux 기반: Proxmox와의 호환성이 높고, Docker/Kubernetes 앱을 직접 구동할 수 있습니다.
- 풍부한 기능: NFS, SMB, iSCSI, S3 등 다양한 프로토콜 지원.
- 사용자 친화적 GUI: 설정이 비교적 쉽습니다.
TrueNAS SCALE 설치 및 기본 설정 (스토리지 서버에)
- TrueNAS SCALE ISO 다운로드: TrueNAS 공식 웹사이트
- 설치: Proxmox와 유사하게 USB로 부팅하여 OS용 SSD에 설치.
- 네트워크 설정: Proxmox 노드와 동일하게 본딩 구성 (예:
bond0) 및 고정 IP 설정 (예:192.168.1.200). - 웹 UI 접속:
https://[TrueNAS_IP] - Pool 생성:
Storage -> Pools -> Add -> Create New Pool- Name:
proxmox_pool - 사용할 HDD들을 선택하여 원하는 RAIDZ 레벨 (예:
RAIDZ1,RAIDZ2)로 구성합니다. (최소 4개 HDD를RAIDZ1로 시작하는 것을 권장) - (선택) L2ARC (Read Cache) 또는 ZIL (SLOG, Write Cache)용 NVMe/SSD 추가.
6. Proxmox와 전용 스토리지 연동 상세
이제 TrueNAS SCALE에서 Pool을 만들었으니, 이 Pool을 Proxmox 클러스터의 모든 노드가 접근할 수 있는 네트워크 스토리지로 구성해 봅시다.
6.1. NFS (Network File System) 스토리지 추가
NFS는 파일 레벨 공유 프로토콜로, VM 템플릿, ISO 이미지, 백업 파일, 그리고 VM 디스크 이미지 저장에 사용될 수 있습니다.
6.1.1. TrueNAS SCALE 설정:
- 데이터셋(Dataset) 생성:
Storage -> Pools -> proxmox_pool (점 세 개) -> Add Dataset- Name:
proxmox_nfs - Share Type:
Generic(또는Applications) Save
- NFS Share 생성:
Sharing -> Unix Shares (NFS) -> Add- Path:
/mnt/proxmox_pool/proxmox_nfs(생성한 데이터셋 경로) - Advanced Options:
- Authorized Networks:
192.168.1.0/24(Proxmox 노드들이 속한 네트워크 대역) - Maproot User:
root(Proxmox에서 root 권한으로 접근하도록) - Maproot Group:
root Save
- NFS Service 활성화:
System Settings -> Services -> NFS를Running으로 설정하고Start Automatically체크.
6.1.2. Proxmox 클러스터 설정:
- Proxmox 웹 UI 접속: 아무 노드 (예:
pve01)의 웹 UI - NFS 스토리지 추가:
Datacenter -> Storage -> Add -> NFS- ID:
truenas-nfs(원하는 이름) - Server:
192.168.1.200(TrueNAS SCALE의 IP 주소) - Export:
/mnt/proxmox_pool/proxmox_nfs(TrueNAS에서 설정한 NFS Export 경로) - Content:
Disk image,ISO image,Container template,Backup(필요한 항목 선택) Add
성공적으로 추가되면 Datacenter -> Storage 목록에 truenas-nfs가 표시되고, 모든 Proxmox 노드에서 이 스토리지를 사용할 수 있게 됩니다.
6.2. iSCSI (Internet Small Computer System Interface) 스토리지 추가
iSCSI는 블록 레벨 공유 프로토콜로, VM의 디스크 이미지를 저장하는 데 최적화되어 있습니다. Proxmox의 LVM 또는 ZFS on iSCSI 구성에 활용됩니다.
6.2.1. TrueNAS SCALE 설정:
- 데이터셋(Dataset) 생성:
Storage -> Pools -> proxmox_pool (점 세 개) -> Add Dataset- Name:
proxmox_iscsi - Share Type:
Generic Save
- iSCSI Extents 생성: (ZFS Zvol을 사용할 것이므로, Dataset에 Zvol을 만듭니다.)
Storage -> Pools -> proxmox_pool/proxmox_iscsi (점 세 개) -> Add Zvol- Zvol Name:
iscsi_target_1 - Size: 원하는 크기 (예:
1T) Save- (필요에 따라 더 많은 Zvol 생성)
- iSCSI Portal 생성:
Sharing -> Block Shares (iSCSI) -> Portals -> Add- Description:
Proxmox iSCSI Portal - IP Address:
192.168.1.200(TrueNAS IP) Save
- iSCSI Initiators Group 생성:
Sharing -> Block Shares (iSCSI) -> Initiators -> Add- Description:
Proxmox Initiators - Authorized Initiators:
iqn.2001-04.com.proxmox:[hostname]형식으로 각 Proxmox 노드의 iSCSI Initiator Name을 추가합니다. (Proxmox 노드에서/etc/iscsi/initiatorname.iscsi파일에서 확인 가능) Save
- iSCSI Target 생성:
Sharing -> Block Shares (iSCSI) -> Targets -> Add- Name:
proxmox_iscsi_target - Target Portal Group: 방금 생성한 Portal 선택.
- Target Initiator Group: 방금 생성한 Initiators 선택.
Save
- Associated Targets 생성:
Sharing -> Block Shares (iSCSI) -> Associated Targets -> Add- Target:
proxmox_iscsi_target - LUN ID:
0(다른 Zvol이면1,2...) - Device:
/dev/zvol/proxmox_pool/proxmox_iscsi/iscsi_target_1(생성한 Zvol 선택) Save
- iSCSI Service 활성화:
System Settings -> Services -> iSCSI를Running으로 설정하고Start Automatically체크.
6.2.2. Proxmox 클러스터 설정:
Proxmox에서 iSCSI 스토리지를 사용할 때는 두 가지 방법이 있습니다:
- LVM-thin on iSCSI: TrueNAS에서 제공하는 Raw iSCSI LUN을 Proxmox가 받아서 LVM-thin으로 구성. 유연하지만 LVM에 대한 이해가 필요.
- ZFS on iSCSI: TrueNAS의 ZFS Zvol을 Proxmox가 Raw 디스크로 인식하여 ZFS 스토리지로 직접 사용. ZFS 기능(스냅샷 등)을 Proxmox에서 활용 가능. (여기서는 ZFS on iSCSI를 예시로 듭니다.)
Proxmox에서 ZFS on iSCSI 설정:
- iSCSI Initiator 설정 (각 Proxmox 노드에서):
- SSH로 각 Proxmox 노드에 접속하여
iscsid서비스가 실행 중인지 확인. systemctl status open-iscsi- TrueNAS에서 설정한 iSCSI Initiator Name이
/etc/iscsi/initiatorname.iscsi파일에 맞는지 확인.
- iSCSI Target 검색 및 로그인 (각 Proxmox 노드에서):
iscsiadm -m discovery -t st -p 192.168.1.200(TrueNAS IP)iscsiadm -m node -L all(모든 Target에 로그인)
- Proxmox 웹 UI 접속: 아무 노드 (예:
pve01)의 웹 UI - ZFS on iSCSI 스토리지 추가:
Datacenter -> Storage -> Add -> ZFS- ID:
truenas-iscsi-zfs(원하는 이름) - ISCSI Provider:
Custom(기본값이Target인데,Custom으로 설정 후 아래에서Target을 수동으로 입력해야 할 수도 있습니다. 버전마다 다를 수 있습니다.) - Target:
iqn.2001-04.com.truenas:proxmox_iscsi_target(TrueNAS에서 설정한 iSCSI Target Name) - Disk:
Disk드롭다운에서 TrueNAS의 Zvol에 해당하는sdb,sdc등을 선택 (일반적으로sd로 시작하는 디스크로 잡힘). - Content:
Disk image Add
성공적으로 추가되면 Datacenter -> Storage 목록에 truenas-iscsi-zfs가 표시되고, 모든 Proxmox 노드에서 블록 스토리지로 VM 디스크를 생성할 수 있게 됩니다.
7. HA (고가용성) 설정 및 테스트
이제 전용 스토리지까지 연결했으니, VM/CT에 대한 고가용성 설정을 해봅시다.
7.1. HA 그룹 설정
HA 그룹은 특정 VM/CT가 실행될 수 있는 노드들을 정의합니다.
- Proxmox 웹 UI 접속:
Datacenter -> HA -> Groups -> Create- ID:
my-ha-group - Nodes:
pve01,pve02,pve03모두 선택. - Restricted:
No(모든 노드에서 실행 가능) 또는Yes(선택된 노드에서만 실행) Create
7.2. HA VM/CT 구성
기존 VM/CT 또는 새로 생성할 VM/CT에 HA를 활성화합니다.
- VM/CT 생성 또는 선택:
[VM/CT] -> Options -> HA- HA:
Enabled - HA Group:
my-ha-group(생성한 HA 그룹 선택) OK
7.3. 장애 조치 테스트 (Failover Test)
가장 중요한 단계입니다. 실제 노드 장애 시 VM이 정상적으로 다른 노드에서 재시작되는지 확인합니다.
- HA가 활성화된 VM/CT가
pve01에서 실행 중인지 확인. pve01노드 강제 종료: 물리적으로 전원 케이블을 뽑거나,shutdown -h now명령을 실행합니다.- 관찰:
pve01이unknown상태로 변하는 것을 웹 UI에서 확인.- 잠시 후, HA VM/CT가
pve02또는pve03에서 자동으로Stopped->Started상태로 전환되는 것을 확인. - VM/CT에 접속하여 서비스가 정상적으로 동작하는지 확인.
pve01노드 재부팅:pve01이 다시 클러스터에 합류하는 것을 확인.
이 테스트가 성공하면, 여러분의 Proxmox 클러스터는 고가용성 환경을 완벽하게 갖춘 것입니다!
8. 백업 및 복구 전략
아무리 HA가 잘 되어 있어도 데이터 손실의 위험은 존재합니다. 정기적인 백업은 필수입니다.
- Proxmox 내장 백업:
Datacenter -> Backup -> Add- 백업할 VM/CT, 백업 주기, 백업 스토리지 (NFS 스토리지 권장), 압축 레벨 등을 설정.
- TrueNAS 스냅샷 및 복제:
- ZFS 파일 시스템을 사용하는 TrueNAS의 강력한 스냅샷 기능을 활용하여 주기적으로 데이터셋 스냅샷을 생성하고, 다른 스토리지로 복제하여 추가적인 데이터 보호 계층을 만듭니다.
- 별도 백업 서버: 가장 안전한 방법은 Proxmox 클러스터와는 완전히 분리된 별도의 백업 서버를 두는 것입니다.
9. 결론 및 추가 고려사항
축하드립니다! 이제 여러분은 Proxmox 3노드 클러스터와 전용 스토리지를 활용한 강력하고 안정적인 홈랩 인프라를 구축하는 방법을 알게 되었습니다. 이 구성은 단순한 홈랩을 넘어, 중소기업 환경에서도 충분히 활용될 수 있는 수준의 고가용성 솔루션입니다.
추가 고려사항:
- 모니터링: Prometheus, Grafana 등을 활용하여 각 노드와 스토리지 서버의 자원 사용량, 네트워크 트래픽 등을 실시간으로 모니터링하여 문제 발생 시 신속하게 대응할 수 있도록 합니다.
- UPS (무정전 전원 장치): 모든 장비에 UPS를 연결하여 정전 시에도 시스템이 안전하게 종료되거나 일정 시간 동안 동작을 유지할 수 있도록 합니다.
- 보안: 방화벽 설정, SSH 키 기반 인증, 주기적인 업데이트 등 보안에 항상 신경 써야 합니다.
- 문서화: 구축 과정을 상세하게 문서화하여 나중에 유지보수하거나 문제가 발생했을 때 참조할 수 있도록 합니다.
이 블로그 게시물이 여러분의 Proxmox 클러스터 구축 여정에 큰 도움이 되기를 바랍니다. 궁금한 점이 있다면 언제든지 댓글로 남겨주세요! 행복한 홈랩 생활 되세요!