이번 챕터에서는 Debian OS에 Proxmox VE를 설치하고, Proxmox Cluster에 새로운 Node를 join하는 과정을 다룬다.
시작하기 전에, Debian OS가 아직 설치되지 않았다면 아래 링크를 참고하여 Debian OS 설치 및 디스크 파티셔닝을 완료한 후 진행할 것을 권장한다.
02. Debian OS 설치 및 Disk Partitioning
1. 물리 장비(Physical Machine)에서 디스크 초기화 및 Debian OS 설치 과정Proxmox Cluster를 구축하기 전에, 각 물리 장비(노드) 에 Debian OS를 설치해야 한다.이 과정에서 기존 디스크 데이터를 정리하고, 새
crea-russianblue.tistory.com
5. Proxmox VE 설치
이제 Debian 위에 Proxmox VE 를 설치하여 가상화 환경을 구성한다.
5.1 Proxmox VE 리포지토리 설정
Proxmox VE 8.x 버전을 설치하려면 리포지토리를 추가해야 한다.
다음 명령을 실행하여 pve-no-subscription 리포지토리를 추가한다:
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" | sudo tee /etc/apt/sources.list.d/pve-install-repo.list
💡 pve-no-subscription 리포지토리는 무료 사용자를 위한 리포지토리이며, 엔터프라이즈 서브스크립션이 필요하지 않다.
5.2 Proxmox VE GPG 키 추가
Proxmox 패키지를 인증하기 위한 GPG 키를 다운로드하고 시스템에 추가한다.
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
5.3 GPG 키 검증 (선택 사항)
다운로드한 GPG 키의 무결성을 확인하려면 다음 명령을 실행한다.
sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
출력된 해시 값이 아래 값과 일치하는지 확인한다:
7da6fe34168adc6e479327ba517796d4702fa2f8b4f0a9833f5ea6e6b48f6507a6da403a274fe201595edc86a84463d50383d07f64bdde2e3658108db7d6dc87
💡 일치하지 않는다면 파일이 손상되었을 가능성이 있으므로 다시 다운로드하거나 Proxmox 공식 사이트에서 최신 정보를 확인한다.
5.4 패키지 목록 업데이트 및 시스템 업그레이드
리포지토리와 GPG 키를 설정한 후, 패키지 목록을 업데이트하고 시스템을 업그레이드한다.
sudo apt update
sudo apt full-upgrade -y
💡 최신 패키지 및 보안 패치를 적용하여 시스템을 최신 상태로 유지한다.
5.5 Proxmox VE 및 필수 패키지 설치
Proxmox VE와 필수 패키지를 설치한다.
sudo apt install -y proxmox-ve postfix open-iscsi
📌 Postfix 메일 설정 옵션
- 설치 중 메일 전송 설정 프롬프트가 나타날 수 있다.
- 기본적으로 "Internet Site" 를 선택하고, 시스템 메일 이름은 기본값을 유지하면 된다.
- 단, 메일 설정을 원하지 않을 경우 "No configuration" 을 선택할 수도 있다.
5.6 설치 완료 후 재부팅 (선택 사항)
설치가 완료되면 시스템을 재부팅하여 변경사항을 적용한다.
sudo reboot
💡 반드시 재부팅할 필요는 없지만, 커널 변경이 적용되도록 재부팅을 권장한다.
6. Proxmox Cluster에 새로운 노드 추가
이제 Proxmox Cluster에 새로운 노드를 Join하여 클러스터를 확장하는 과정을 진행한다.
클러스터의 마스터 노드(proxmox-1)에 TLS 인증서가 적용된 DNS (proxmox.koolsign.net) 를 사용하여 새로운 노드를 추가할 것이다.
6.1 Proxmox Cluster 상태 확인
새로운 노드를 클러스터에 추가하기 전에, 현재 클러스터 상태를 확인해야 한다.
pvecm status
출력 예시:
Cluster information
-------------------
Name: <cluster-name>
Nodes: 1
현재 1개의 노드만 존재하며, 여기에 새로운 노드를 추가할 예정이다.
6.2 새로운 노드에서 클러스터 Join 준비
새로운 Proxmox 노드를 클러스터에 Join하기 전에, 네트워크와 인증 관련 설정을 확인해야 한다.
1️⃣ 노드의 /etc/hosts 파일 설정
새로운 노드에서 클러스터 마스터 노드의 DNS 이름과 IP를 올바르게 설정한다.
vi /etc/hosts
다음 내용을 추가하거나 수정한다.
172.16.140.201 proxmox.koolsign.net proxmox-1
✅ 설명
- 172.16.140.201 → 마스터 노드의 내부 IP
- proxmox.koolsign.net → TLS 인증서가 적용된 DNS 이름
- proxmox-1 → 마스터 노드의 호스트명
6.3 새로운 노드에서 클러스터에 Join
이제 새로운 Proxmox 노드에서 마스터 노드(proxmox.koolsign.net)와 연결하여 클러스터에 추가한다.
pvecm add proxmox.koolsign.net
✅ 설명
- pvecm add <마스터 노드의 DNS> 명령어를 실행하면, 새로운 노드가 클러스터에 Join된다.
- IP 대신 TLS가 적용된 DNS (proxmox.koolsign.net)를 사용하여 연결한다.
- 실행 중 SSH 키 교환이 진행되며, 클러스터 인증 정보가 동기화된다.
출력 예시:
6.4 클러스터 상태 확인
새로운 노드가 정상적으로 추가되었는지 확인한다.
pvecm status
출력 예시:
✅ 이제 클러스터에 2개의 노드가 존재하는 것을 확인할 수 있다.
6.5 Proxmox 웹 인터페이스에서 클러스터 확인
이제 브라우저에서 Proxmox 웹 UI 에 접속하여 클러스터가 정상적으로 확장되었는지 확인한다.
🔗 https://proxmox.koolsign.net 접속 후 Datacenter → Cluster 메뉴에서 새로운 노드가 추가된 것을 확인한다.
6.6 Proxmox HA를 위한 DNS 기반 Round-Robin + Nginx 프록시 구성 (선택 사항)
Proxmox Cluster에서 제공하는 Web UI는 proxmox의 리드노드인 proxmox-1 (172.16.140.201) 가 처리하고 있다. proxmox cluster 의 노드가 다수가 됨에 따라, Web UI에 HA구성을 할 수 있다.
필자는 아래와 같이 DNS Roud Robin 방식을 적용하고, 각각의 Proxmox 노드에서 nginx를 거쳐 Web UI로 proxy하도록 구성했다.
✅ 목표:
- HAProxy 같은 추가적인 Load Balancer 없이 DNS 기반 Round-Robin으로 부하 분산
- 모든 Proxmox 노드(172.16.140.201~209)에 Nginx를 배포
- 각각의 Nginx에서 Proxmox Web UI(8006)로 프록시
- SSL/TLS 인증서를 적용하여 HTTPS 지원
- Proxmox-1이 다운되더라도 다른 노드로 자동 연결
1️⃣ Step 1: DNS Round-Robin 구성
✅ A 레코드 설정 (proxmox.koolsign.net → 여러 개의 IP)
proxmox.koolsign.net A 172.16.140.201
proxmox.koolsign.net A 172.16.140.202
proxmox.koolsign.net A 172.16.140.203
proxmox.koolsign.net A 172.16.140.204
proxmox.koolsign.net A 172.16.140.205
proxmox.koolsign.net A 172.16.140.206
proxmox.koolsign.net A 172.16.140.207
proxmox.koolsign.net A 172.16.140.208
proxmox.koolsign.net A 172.16.140.209
# 본인의 Proxmox 노드 IP와 A 레코드 등록
📌 DNS Round-Robin 방식
- 사용자가 proxmox.koolsign.net에 접속하면 DNS 서버가 9개 IP 중 하나를 랜덤으로 반환
- 특정 노드가 다운되면 클라이언트가 다른 노드를 시도
✔️ 이점
- Proxmox 외 추가 장비 없이도 HA 구성 가능
- 클라이언트 요청마다 다른 노드로 연결 (부하 분산 효과)
- 특정 노드 장애 발생 시 다른 노드로 연결됨
❌ 단점 & 해결책
- DNS는 장애 감지 기능이 없음 → 다운된 노드도 클라이언트에게 반환될 수 있음
- 클라이언트가 죽은 노드로 접속하면 연결 실패됨
해결책: Low TTL + 재시도
- TTL(Time-To-Live) 값을 낮게 설정 → 장애 노드 반영 속도 향상
- 브라우저가 다른 IP로 자동 재시도
TTL 30초 ~ 60초로 설정
2️⃣ Step 2: 모든 Proxmox 노드에 Nginx 설치 및 설정
💡 모든 노드(201~209)에 동일한 Nginx 설정 적용
🔹 1. Nginx 설치
apt update && apt install -y nginx
🔹 2. /etc/nginx/sites-enabled/proxmox 설정
server {
listen 80;
server_name proxmox.koolsign.net;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name proxmox.koolsign.net;
ssl_certificate /etc/ssl/certs/nginx-ssl.pem;
ssl_certificate_key /etc/ssl/certs/nginx-ssl.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass https://127.0.0.1:8006; # 내부 Proxmox Web UI 포트
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_ssl_verify off;
}
}
📌 설명:
- HTTP(80) 요청을 HTTPS(443)로 리디렉션
- 모든 Proxmox 노드(127.0.0.1:8006)로 프록시
- SSL 인증서 적용
🔹 3. Nginx 서비스 활성화 및 재시작
systemctl restart nginx
systemctl enable nginx
3️⃣ Step 3: SSL 인증서 적용 (Let's Encrypt)
📌 각 노드(201~209)에 동일한 인증서를 배포해야 함
🔹 1. Certbot 설치
apt install -y certbot python3-certbot-nginx
🔹 2. 인증서 발급 (모든 노드에서 실행)
certbot --nginx -d proxmox.koolsign.net
🔹 3. 자동 갱신 설정
echo "0 0 * * * certbot renew --quiet" >> /etc/crontab
4️⃣ Step 4: 구성 검증
📌 각 노드에서 Nginx가 정상 실행되는지 확인
systemctl status nginx
✔️ 출력 예시:
● nginx.service - A high performance web server and a reverse proxy server
Active: active (running) since ...
📌 DNS 확인 (클라이언트에서 실행)
nslookup proxmox.koolsign.net
✔️ 출력 예시 (랜덤한 IP 반환)
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: proxmox.koolsign.net
Address: 172.16.140.205
📌 웹 접속 테스트
curl -k https://proxmox.koolsign.net
✔️ 출력 예시 (Proxmox Web UI HTML 응답 확인 가능)
이제 Proxmox 클러스터에 새로운 노드가 성공적으로 추가되었으며, TLS 인증서가 적용된 DNS(proxmox.koolsign.net)를 사용하여 보안이 강화된 상태에서 운영할 수 있다.
다음 단계에서는 Proxmox UI 에서 Storage 및 Networking 을 구성하고 관리하는 방법을 다룰 예정이다. 🚀
05. Proxmox UI 로 Storage, Networking 구성하기
7. Proxmox UI에서 Storage 및 Networking 구성하기이제 Proxmox 클러스터에서 스토리지(Storage)와 네트워크(Networking) 설정을 최적화하는 과정을 다룬다.각 노드에서는 LVM을 사용하여 VM 및 컨테이너의 디스
crea-russianblue.tistory.com
'2) Prime Cloud > 1. Virtualization' 카테고리의 다른 글
06. Proxmox 에서 VM 및 컨테이너를 생성하고 운영하기 (0) | 2025.01.27 |
---|---|
05. Proxmox UI 로 Storage, Networking 구성하기 (0) | 2025.01.27 |
03. Proxmox Cluster 생성하기 (0) | 2024.12.10 |
02. Debian OS 설치 및 Disk Partitioning (0) | 2024.12.10 |
01. 개요 (0) | 2024.12.10 |