ガジェットコンパス

ガジェット探求の旅に終わりはない
🔍
ProxmoxVMクラスター自宅ラボ仮想化サーバー構築Linux

自宅ラボ構築ガイド:ProxmoxでVMクラスター環境を作る

👤 インフラエンジニア 📅 2024-10-15 ⭐ 4.8点 ⏱️ 20m

自宅ラボ構築ガイド:ProxmoxでVMクラスター環境を作る

自宅でエンタープライズレベルのサーバー環境を構築したい。そんな願いを叶えるのがProxmox VEを使った仮想化クラスターです。今回は実際に3ノード構成のクラスターを構築し、高可用性と冗長化を実現する完全ガイドをお届けします。

なぜProxmoxなのか?

VMwareやHyper-Vと比較して、Proxmoxには以下の優位性があります:

  • 完全無料:商用利用も含めて一切の制限なし
  • 高機能Web UI:直感的で分かりやすい管理画面
  • KVMベース:Linux標準の仮想化技術で安定性抜群
  • クラスター機能:標準でHA(高可用性)機能を搭載
  • 豊富なストレージオプション:ZFS、Ceph、NFSなど多様な選択肢

ハードウェア構成と予算

推奨ハードウェア構成

今回構築したクラスター環境のスペックをご紹介します:

ノード1(メインサーバー):

  • CPU: Intel Core i7-12700K(12コア/20スレッド)
  • RAM: 64GB DDR4-3200
  • ストレージ: 1TB NVMe SSD(システム用) + 4TB SATA SSD(データ用)
  • ネットワーク: Intel I225-V 2.5GbE × 2ポート

ノード2・3(サブサーバー):

  • CPU: AMD Ryzen 5 5600G(6コア/12スレッド)
  • RAM: 32GB DDR4-3200
  • ストレージ: 500GB NVMe SSD + 2TB SATA SSD
  • ネットワーク: Realtek 2.5GbE × 2ポート

ネットワーク機器:

  • メインスイッチ: Netgear GS724T(24ポートマネージドスイッチ)
  • UPS: CyberPower CP1500PFCLCD(1500VA)

総予算:約45万円

  • ノード1: 約20万円
  • ノード2・3: 各12万円
  • ネットワーク・UPS: 約3万円

最小構成での構築

予算を抑えたい場合の構成例:

シングルノード構成:

  • CPU: Intel Core i5-12400(6コア)
  • RAM: 32GB
  • ストレージ: 1TB NVMe SSD
  • 予算: 約12万円

この構成でも十分に学習・検証環境として活用できます。

Proxmoxインストールと基本設定

インストール手順

1. インストールメディアの作成

# Proxmox VE 8.1 ISOをダウンロード
wget https://www.proxmox.com/downloads/proxmox-ve-8-1-iso

# USBメディアに書き込み(Linux環境)
sudo dd if=proxmox-ve-8.1-2.iso of=/dev/sdX bs=1M status=progress

2. 各ノードへのインストール

インストール時の重要な設定項目:

  • ホスト名: pve-01, pve-02, pve-03
  • IPアドレス: 固定IP必須(例:192.168.1.10-12)
  • DNS設定: 8.8.8.8, 1.1.1.1
  • ファイルシステム: ZFS RAID1推奨(冗長性確保)

3. 初期設定とアップデート

# パッケージリストの更新
apt update && apt upgrade -y

# 必要なパッケージのインストール
apt install -y vim curl wget htop iotop

# SSH キー認証の設定
ssh-keygen -t ed25519
ssh-copy-id root@pve-02
ssh-copy-id root@pve-03

ネットワーク設定の最適化

ボンディング設定(/etc/network/interfaces):

# 物理インターフェース
auto ens33
iface ens33 inet manual

auto ens34  
iface ens34 inet manual

# ボンディングインターフェース(冗長化)
auto bond0
iface bond0 inet static
    address 192.168.1.10/24
    gateway 192.168.1.1
    bond-slaves ens33 ens34
    bond-miimon 100
    bond-mode active-backup

# ブリッジインターフェース(VM用)
auto vmbr0
iface vmbr0 inet static
    address 192.168.1.10/24
    bridge-ports bond0
    bridge-stp off
    bridge-fd 0

クラスター構築手順

クラスターの作成

メインノード(pve-01)でクラスター作成:

# クラスターの初期化
pvecm create homelabcluster

# クラスター状態の確認
pvecm status

サブノード(pve-02, pve-03)の参加:

# ノード2での実行
pvecm add 192.168.1.10

# ノード3での実行  
pvecm add 192.168.1.10

共有ストレージの設定

Cephクラスター構築:

# 各ノードでCephパッケージインストール
apt install -y ceph-common

# メインノードでCeph初期化
ceph-deploy new pve-01 pve-02 pve-03

# モニターの作成
ceph-deploy mon create-initial

# OSDの作成(各ノードのデータディスク)
ceph-deploy osd create pve-01 --data /dev/sdb
ceph-deploy osd create pve-02 --data /dev/sdb  
ceph-deploy osd create pve-03 --data /dev/sdb

# メタデータサーバーの作成
ceph-deploy mds create pve-01 pve-02 pve-03

ProxmoxでのCephプール設定:

# RBDプールの作成
ceph osd pool create vm-storage 128 128
ceph osd pool create backup-storage 64 64

# プールの有効化
rbd pool init vm-storage
rbd pool init backup-storage

Web UIでのストレージ追加

Proxmox Web UI(https://192.168.1.10:8006)にアクセスし:

  1. Datacenter → Storage → Add → RBD
  2. ID: ceph-vm
  3. Pool: vm-storage
  4. Monitor Host: 192.168.1.10,192.168.1.11,192.168.1.12
  5. Content: Disk image, Container

高可用性(HA)設定

HAリソースの設定

# HAマネージャーの有効化
ha-manager config

# VM/CTをHAリソースとして登録
ha-manager add vm:100 --state started --group ha-group-1
ha-manager add vm:101 --state started --group ha-group-2

# HAグループの作成(ノード優先度設定)
ha-manager groupconfig ha-group-1 -nodes "pve-01:2,pve-02:1,pve-03:1"

フェンシング設定

ノード障害時の適切な処理のため、フェンシング機能を設定:

# IPMI設定(対応ハードウェアの場合)
echo "fence_ipmilan" >> /etc/ha/fence.cfg

# ネットワークベースフェンシング設定
cat >> /etc/pve/ha/fence.cfg << EOF
fence_network {
    network = "192.168.1.0/24"
    timeout = 60
}
EOF

バックアップ戦略

自動バックアップスケジュール

Proxmox Backup Server(PBS)を別ノードに構築:

# PBS専用VM作成(推奨スペック:4vCPU, 8GB RAM, 500GB Disk)
qm create 200 --name "pbs-01" --memory 8192 --cores 4 --net0 virtio,bridge=vmbr0
qm set 200 --scsi0 ceph-vm:vm-200-disk-0,size=500G
qm start 200

PBSでのデータストア作成:

# データストアディレクトリ作成
mkdir -p /backup/datastore

# データストア登録
proxmox-backup-manager datastore create backup-ds /backup/datastore

Proxmoxでのバックアップ設定:

Web UIで Datacenter → Backup でスケジュール設定:

  • スケジュール: 毎日 2:00 AM
  • 選択: すべてのVM/CT
  • モード: Snapshot(可能な場合)
  • 保持期間: 7日間

3-2-1バックアップルール実装

レプリケーション設定:

# 重要VMの他ノードへのレプリケーション
vzdump 100 --mode snapshot --compress gzip --storage backup-storage

# 外部ストレージへの定期同期
rsync -avz /var/lib/vz/dump/ backup-server:/external-backup/

オフサイトバックアップスクリプト:

#!/bin/bash
# /usr/local/bin/offsite-backup.sh

BACKUP_DIR="/var/lib/vz/dump"
REMOTE_SERVER="backup.example.com"
REMOTE_PATH="/backup/homelab"

# 前日のバックアップファイルを転送
find $BACKUP_DIR -name "*.gz" -mtime -1 -exec scp {} $REMOTE_SERVER:$REMOTE_PATH/ \;

# 古いローカルバックアップの削除(30日以上)
find $BACKUP_DIR -name "*.gz" -mtime +30 -delete

crontabでの自動実行:

# crontab -e
0 4 * * * /usr/local/bin/offsite-backup.sh

監視とアラート設定

Prometheusとの連携

Node Exporterのインストール:

# 各ノードで実行
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
sudo cp node_exporter-*/node_exporter /usr/local/bin/
sudo chmod +x /usr/local/bin/node_exporter

# systemdサービス作成
cat > /etc/systemd/system/node_exporter.service << EOF
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=nobody
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

systemctl enable node_exporter
systemctl start node_exporter

Grafanaダッシュボード設定

重要な監視項目:

  • CPU使用率: 各ノード・VM単位
  • メモリ使用量: 物理・仮想メモリ
  • ディスクI/O: IOPS、レイテンシ
  • ネットワーク: 帯域使用量、パケットロス
  • Cephステータス: プール使用量、OSD状態

アラート設定

重要アラートルール:

# /etc/prometheus/alert.rules.yml
groups:
- name: homelab-alerts
  rules:
  - alert: NodeDown
    expr: up == 0
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "Node {{ $labels.instance }} is down"
      
  - alert: HighCPUUsage
    expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
    for: 5m
    labels:
      severity: warning
      
  - alert: HighMemoryUsage
    expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85
    for: 5m
    labels:
      severity: warning

実際の運用ノウハウ

パフォーマンスチューニング

CPU設定の最適化:

# CPU Governor設定
echo performance > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# IRQアフィニティ設定
echo 2 > /proc/irq/24/smp_affinity  # NIC IRQを特定CPUに固定

メモリ設定:

# Transparent Huge Pages無効化
echo never > /sys/kernel/mm/transparent_hugepage/enabled

# swappiness調整
echo 'vm.swappiness=10' >> /etc/sysctl.conf

セキュリティ強化

ファイアウォール設定:

# Proxmoxファイアウォール有効化
pve-firewall compile
pve-firewall start

# 必要ポートのみ開放
pve-firewall localnet add 192.168.1.0/24  # 管理ネットワーク

証明書の更新:

# Let's Encryptを使用(外部からアクセス可能な場合)
pvenode config set --acme domains=pve.yourdomain.com
pvenode acme cert order

障害対応手順

ノード障害時の対応:

  1. 障害ノードの特定pvecm statusで確認
  2. VM/CTの移行qm migrate 100 pve-02で他ノードに移動
  3. クラスターからの除外pvecm delnode pve-xx
  4. ハードウェア修復後の再参加pvecm add

ストレージ障害時の対応:

# Cephクラスター状態確認
ceph -s

# 障害OSDの特定と交換
ceph osd out osd.1
ceph osd crush remove osd.1  
ceph osd rm osd.1

費用対効果と運用コスト

電力消費量

実際の消費電力測定結果:

  • アイドル時: 約180W(全体)
  • 高負荷時: 約350W(全体)
  • 月間電力料金: 約4,500円(東京電力従量電灯B)

学習・検証環境としての価値

スキル習得効果:

  • 仮想化技術: VMware vSphere相当の知識
  • Linux管理: CentOS/Ubuntu Server管理
  • ネットワーク: VLAN、ボンディング設定
  • ストレージ: ZFS、Ceph分散ストレージ
  • 監視: Prometheus/Grafana

業務応用価値: 市場価値の高いスキルセットを実践的に習得可能。 年収アップ効果:平均50-100万円(インフラエンジニア)

まとめとアドバイス

構築を成功させるポイント

段階的アプローチ:

  1. Phase 1: シングルノードでの基本習得(1ヶ月)
  2. Phase 2: 2ノードクラスターでHA体験(1ヶ月)
  3. Phase 3: 3ノード+Cephで本格運用(1ヶ月)

よくある失敗と対策:

ネットワーク設計の軽視: → 最初から冗長化を前提とした設計が重要

バックアップの軽視: → 構築初日からバックアップ体制を整備

監視の後回し: → 本格運用前に監視体制を完成させる

今後の拡張計画

短期(6ヶ月以内):

  • GPU仮想化対応(NVIDIA Grid)
  • Container as a Service(Kubernetes)
  • CI/CDパイプライン統合

中期(1年以内):

  • Software Defined Network(SDN)
  • Infrastructure as Code(Terraform/Ansible)
  • セキュリティ強化(SIEM導入)

自宅ラボは単なる趣味の範囲を超え、キャリア構築の重要な投資です。Proxmoxを中心とした環境構築により、エンタープライズレベルの技術スキルを実践的に習得できます。

初期投資は決して小さくありませんが、得られる知識とスキルは計り知れない価値があります。段階的な構築アプローチで、無理のない範囲から始めることをお勧めします。

🗂️ 人気カテゴリ

記事数の多いカテゴリから探す