【古いPCを再利用!】KVM × Podman × Keepalivedで学ぶ Nginx冗長化とK8s互換YAMLによるインフラ入門構築

  • このエントリーをはてなブックマークに追加
  • LINEで送る

使い道のない古い PC を、最新のインフラ技術を学べる 「実戦的な学習ラボ」 に変えてみました。
この記事では、Rocky Linux 9 (KVM) を土台に、PodmanKubernetes互換YAML を利用して Web サーバー(Nginx)の冗長構成を構築します。
これは、将来的にクラウドや Kubernetes(K8s)へ移行できる設計思想に基づいた、実戦的なインフラ構築の入門です。

 


1. 物理基盤の準備:KVMホストの構築

1-1. 物理PCスペックとホストOS

項目 詳細スペック コメント
PCモデル 2011年製 デスクトップPC 古いハードウェアを学習ラボの土台として活用
CPU Intel Core i7-2600 (4C/8T) Sandy Bridge 世代 KVMによる仮想化も十分可能
メモリ 24 GB RAM (DDR3 1333 MT/s) VM4台稼働でも安定運用可能
ストレージ SSD 256 GB 仮想マシンI/Oを高速化
ネットワーク Realtek製 Gigabit NIC オンボードNICを活用
ホストOS Rocky Linux 9.6 (Blue Onyx) KVMホストとして最適な安定性と互換性

🛠️ 構築手順とポイント

 1. BIOSで仮想化支援機能(Intel VT-x / AMD-V)を有効化されていることを確認

 2. Rocky Linuxをインストール後、KVM環境を構築

 

1-2. KVM仮想マシン構成とリソース配分

VM名 役割 vCPU / vRAM
rocky9-1 Podman基盤(Master) 2vCPU / 4GB
rocky9-2 Podman基盤(Backup) 2vCPU / 4GB
OPNsense ファイアウォール 1vCPU / 1GB
ZabbixAppliance 監視サーバー 1vCPU / 2GB

🔑 リソース配分の設計思想
Nginx自体は軽量ですが、監視エージェントやログ収集など将来的な拡張を考慮し、Podman基盤には4GBを割り当てています。

1-3. ネットワークアーキテクチャとIPアドレス設計

VM名 役割 IPアドレス (br-mgmt)
KVMホストOS ベアメタル(親) 192.168.1.209
rocky9-1 Podman基盤(Master) 192.168.1.202
rocky9-2 Podman基盤(Backup) 192.168.1.203
OPNsense ファイアウォール 192.168.1.201
ZabbixAppliance 監視サーバー 192.168.1.15
仮想IP (VIP) Nginxサービス用 192.168.1.200

補足
すべてのVMは br-mgmt ブリッジを介して同一LAN(192.168.1.0/24)に接続されています。
ホスト・VM・他端末すべてが相互通信可能な設計です。

 


2. Nginx Webサーバーの構築と冗長化

2-1. Podmanの導入と基本設定

両ノード(rocky9-1, rocky9-2)に以下を実行:

 

2-2. K8s互換YAMLによるNginx展開

nginx-web.yaml を作成(両VM共通):


コンテナ起動:


自動起動設定(systemd生成):

 

2-3. KeepalivedによるVIP冗長化設定

① 両VMにインストール


② Nginx監視スクリプト

/etc/keepalived/check_nginx.sh


③ Masterノード設定(rocky9-1)

/etc/keepalived/keepalived.conf

Backup側(rocky9-2)は state BACKUP, priority 100 に変更


④ ファイアウォール設定


⑤ 起動・確認

 


3. 運用・監視体制の準備(Next Steps)

フェーズ 導入VM 目的
OPNsense設定 OPNsense セキュリティ強化
ファイアウォール制御や侵入検知を有効化
Zabbix構築 ZabbixAppliance KeepalivedのVIP状態やNginx稼働を監視
管理体制 全VM共通 CLI中心で統合的に管理

 


4. 【おまけ】マイクラサーバーを即時切り替え!

Podmanの魅力は「基盤を変えずにサービスを差し替えられる」こと。

Nginxの代わりにMinecraftサーバーを立てる例:

# 1. 既存Nginxサービスを停止


# 2. Minecraft Bedrockサーバー起動


クライアントが VIP(192.168.1.200)に接続すると、
ブラウザではなく Minecraft 統合版サーバーが応答します。

環境を変えずに用途を即時切り替える──これがモダンインフラの柔軟性です。

 


まとめ

 ・古いPCでも Rocky Linux + KVM + Podman で実戦的な冗長構成が再現可能
・K8s互換YAMLにより、将来的なクラウド・Kubernetes移行も容易
・Keepalivedで単一VIPの高可用性を実現
・同じ基盤上でマイクラなど別サービスへ即切替可能

💡 学習ラボが「ただの検証環境」から「本番運用を意識した統合基盤」へと進化する瞬間を体験できます。

  • このエントリーをはてなブックマークに追加
  • LINEで送る