はじめに
本記事では、使い道のない古いPCを活用し、実務に近いインフラ構成を構築する方法を解説します。
具体的には、Rocky Linux 9(KVM)を基盤とし、PodmanとKubernetes互換YAMLを用いて、Nginxの冗長構成を構築します。
この記事を読むことで、以下が理解できます。
・古いハードウェアを活用した仮想化基盤の構築手順
・Podmanを用いたコンテナ運用の基本
・KeepalivedによるVIPを用いた高可用性構成
・将来的なKubernetes移行を見据えた設計の考え方
検証環境にとどまらず、本番運用を意識した「実戦的な学習ラボ」を構築したい方におすすめです。
目次
- 物理基盤の準備:KVMホストの構築
- Nginx Webサーバーの構築と冗長化
- 運用・監視体制の準備
- おまけ:サービスの即時切り替え例
- まとめ
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) | 複数VMの同時稼働が可能 |
| ストレージ | SSD 256GB | 仮想マシンI/Oを高速化 |
| ネットワーク | Realtek製 Gigabit NIC | オンボードNICを活用 |
| ホストOS | Rocky Linux 9.6 (Blue Onyx) | KVMホストとして最適な安定性と互換性 |
🛠️構築手順
1. BIOSで仮想化支援機能(Intel VT-x / AMD-V)を有効化します。
2. Rocky Linuxをインストールします。
3. KVM環境を構築します。
|
1 2 |
$ sudo dnf install @virtualization -y $ sudo systemctl enable --now libvirtd |
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基盤には余裕を持たせています。
1-3. ネットワーク設計
| 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 |
💡Tips
べてのVMはブリッジネットワーク(br-mgmt)で接続されています。
同一セグメント内で相互通信が可能な構成です。
2. Nginx Webサーバーの構築と冗長化
2-1. Podmanの導入と基本設定
両ノードで以下のコマンドを実行します。
|
1 2 |
$ sudo dnf install podman -y $ ip a show eth0 # IPを確認 (.202 / .203) |
2-2. K8s互換YAMLによるNginx展開
① YAMLファイル(nginx-web.yaml)を作成します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
apiVersion: v1 kind: Pod metadata: name: webserver spec: containers: - name: nginx image: docker.io/library/nginx:latest ports: - containerPort: 80 volumeMounts: - mountPath: /usr/share/nginx/html name: html volumes: - name: html hostPath: path: /srv/podman/html |
② コンテナを起動します。
|
1 |
$ sudo podman play kube nginx-web.yaml |
③ 自動起動設定(systemd生成)を行います。
|
1 2 3 |
$ sudo podman generate systemd --name webserver --files $ sudo mv container-webserver.service /etc/systemd/system/ $ sudo systemctl enable --now container-webserver.service |
2-3. KeepalivedによるVIP冗長化設定
① 両VMにKeepalivedをインストールします。
|
1 |
$ sudo dnf install keepalived -y |
② Nginx監視スクリプトを作成します。
配置先/etc/keepalived/check_nginx.sh
|
1 2 3 4 5 |
#!/bin/bash curl -s http://localhost/ > /dev/null if [ $? -ne 0 ]; then systemctl restart container-webserver.service fi |
|
1 |
$ sudo chmod +x /etc/keepalived/check_nginx.sh |
③ Masterノード設定(rocky9-1)の設定を行います。
設定ファイル:/etc/keepalived/keepalived.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1234 } virtual_ipaddress { 192.168.1.200 } track_script { chk_nginx } } |
Backupノード(rocky9-2)は、以下のように変更します。
・stateをBACKUPに変更します。
・priorityを100に変更します。
④ ファイアウォールの設定を行います。
|
1 2 |
$ sudo firewall-cmd --permanent --add-protocol=vrrp $ sudo firewall-cmd --reload |
⑤ サービスを起動し、状態を確認します。
|
1 2 |
$ sudo systemctl enable --now keepalived $ ip a show eth0 # VIPが付与されていることを確認 |
3. 運用・監視体制の準備(Next Steps)
| フェーズ | 導入VM | 目的 |
|---|---|---|
| OPNsense設定 | OPNsense | セキュリティ強化 ファイアウォール制御や侵入検知を有効化 |
| Zabbix構築 | ZabbixAppliance | KeepalivedのVIP状態やNginx稼働を監視 |
| 管理体制 | 全VM共通 | CLI中心で統合的に管理 |
4. おまけ:マイクラサーバーを即時切り替え
Podmanの利点は、基盤を変更せずにサービスを切り替えられる点です。
以下では、Nginxの代わりにMinecraftサーバーを立てる例をご紹介します。
① Nginxを停止します。
|
1 |
$ sudo podman play kube --down nginx-web.yaml |
② Minecraftサーバーを起動します。
|
1 2 3 4 5 6 |
$ sudo podman run -d --name mc-bedrock \ -p 19132:19132/udp \ -v /srv/podman/minecraft:/data:Z \ -e EULA=TRUE \ -e SERVER_NAME=Lab-Bedrock \ docker.io/itzg/minecraft-bedrock-server:latest |
クライアントが VIP(192.168.1.200)に接続すると、提供するサービスが即座に切り替わります。
環境を変えずに用途を即時切り替える──これがモダンインフラの柔軟性です。
5.まとめ
・古いPCでも実戦的なインフラ環境を構築できます
・Podmanによりコンテナ運用をシンプルに実現できます
・Keepalivedにより高可用性構成を実装できます
・Kubernetesを見据えた構成に拡張できます
💡 Tips
この構成は単なる検証環境ではありません。
本番運用を意識した「小さなインフラ基盤」として発展させることができます。













