プッシュ通知
新記事をすぐにお知らせ
自宅でエンタープライズレベルのサーバー環境を構築したい。そんな願いを叶えるのがProxmox VEを使った仮想化クラスターです。今回は実際に3ノード構成のクラスターを構築し、高可用性と冗長化を実現する完全ガイドをお届けします。
VMwareやHyper-Vと比較して、Proxmoxには以下の優位性があります:
今回構築したクラスター環境のスペックをご紹介します:
ノード1(メインサーバー):
ノード2・3(サブサーバー):
ネットワーク機器:
総予算:約45万円
予算を抑えたい場合の構成例:
シングルノード構成:
この構成でも十分に学習・検証環境として活用できます。
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. 各ノードへのインストール
インストール時の重要な設定項目:
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
Proxmox Web UI(https://192.168.1.10:8006)にアクセスし:
# 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 でスケジュール設定:
レプリケーション設定:
# 重要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
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
重要な監視項目:
重要アラートルール:
# /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
ノード障害時の対応:
pvecm status
で確認qm migrate 100 pve-02
で他ノードに移動pvecm delnode pve-xx
pvecm add
ストレージ障害時の対応:
# Cephクラスター状態確認
ceph -s
# 障害OSDの特定と交換
ceph osd out osd.1
ceph osd crush remove osd.1
ceph osd rm osd.1
実際の消費電力測定結果:
スキル習得効果:
業務応用価値: 市場価値の高いスキルセットを実践的に習得可能。 年収アップ効果:平均50-100万円(インフラエンジニア)
段階的アプローチ:
よくある失敗と対策:
ネットワーク設計の軽視: → 最初から冗長化を前提とした設計が重要
バックアップの軽視: → 構築初日からバックアップ体制を整備
監視の後回し: → 本格運用前に監視体制を完成させる
短期(6ヶ月以内):
中期(1年以内):
自宅ラボは単なる趣味の範囲を超え、キャリア構築の重要な投資です。Proxmoxを中心とした環境構築により、エンタープライズレベルの技術スキルを実践的に習得できます。
初期投資は決して小さくありませんが、得られる知識とスキルは計り知れない価値があります。段階的な構築アプローチで、無理のない範囲から始めることをお勧めします。
記事数の多いカテゴリから探す