2) Prime Cloud/1. Virtualization

04. Proxmox Cluster 에 새 Node를 join 시키기

러시안블루 크레아 의 집 2025. 1. 27. 18:27

이번 챕터에서는 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 메뉴에서 새로운 노드가 추가된 것을 확인한다.

 

proxmox 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하도록 구성했다.

 

 

목표:

  1. HAProxy 같은 추가적인 Load Balancer 없이 DNS 기반 Round-Robin으로 부하 분산
  2. 모든 Proxmox 노드(172.16.140.201~209)에 Nginx를 배포
  3. 각각의 Nginx에서 Proxmox Web UI(8006)로 프록시
  4. SSL/TLS 인증서를 적용하여 HTTPS 지원
  5. 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