はじめに
「自宅サーバーを構築したが、1台落ちただけで家族全員のネットが止まった」 そんな苦い経験(特にDNS/DHCP周りでの同期失敗)を経て、今回はRaspberry Pi 6台(+α)を駆使した「高可用性(HA)」に特化した自宅ネットワークを再設計します。
今回のコンセプトは「速度よりも、止まらないこと」。 北欧神話の神々の名を冠した6台のラズパイによる、3層の冗長化レイヤーを構築します。
1. ネットワーク全体像
上位ルーターとはWi-Fiで接続し、内部ネットワークは有線L2スイッチを中心に構成します。物理的に役割を分離することで、障害時の原因切り分けを容易にしています。
階層化の設計案
- Edge層 (L1): インターネットへの門番。KeepalivedでゲートウェイIPを共有。
- Core層 (L2): DHCPやDNS、認証など、NWの頭脳となる機能を同期。
- Service層 (L3): ファイルサーバーなどの実データをレプリケーションして保持。
2. サーバー構成表:北欧神話の神々
| 物理筐体 | ホスト名 | 役割 | 冗長化の仕組み |
|---|---|---|---|
| Pi 3 (A) | Odin | 主系Gateway / VPN | Keepalived (VIP: 192.168.1.1) |
| Pi 3 (B) | Frigg | 副系Gateway / VPN | Odinと仮想IPを共有 |
| Pi 3 (C) | Huginn | DNS / DHCP Primary | ISC-DHCP Failover / Gravity Sync |
| Pi 3 (D) | Muninn | DNS / DHCP Secondary | Huginnとリアルタイム同期 |
| Pi 3 (E) | Mjolnir | ストレージ (NAS) | GlusterFS + Keepalived (VIP: .200) |
| Pi 3 (F) | Gungnir | ストレージ (NAS) | Mjolnirとデータレプリケーション |
3. 過去の失敗を防ぐ「守り」の技術選定
① DNS/DHCP:仮想IPに頼らない
過去、DNSやDHCPを仮想IP(Keepalived)で制御しようとして失敗した経験から、今回はプロトコル標準の冗長化を採用します。
- DNS: クライアントに最初から
.10と.11の2つのIPを配布する。 - DHCP: Keepalivedは使わず、
isc-dhcp-serverの同期プロトコルを利用してリース情報を常に一致させる。
② Gateway:Wi-Fi WANの死活監視
上位ルーターとラズパイ間をWi-Fiで繋ぐ場合、「Wi-Fiだけ切れてOSは動いている」状態が一番危険です。 Keepalivedのスクリプトで、**「外部8.8.8.8へのPing失敗時に優先度を下げて即座にバックアップ機へ切り替える」**設定を組み込みます。
③ ストレージ:リアルタイムミラーリング
GlusterFS を採用。Mjolnir にファイルを書き込むと、ネットワーク越しに Gungnir にも同時に書き込まれます。どちらかのSDカードが死んでも、データはもう一方に確実に残ります。
4. ユーザー体験:端末から見た景色
Wi-Fi APに接続したスマホやPCなどのクライアントからは、以下のようなシンプルな設定に見えます。
- Default Gateway:
192.168.1.1(Odin/Friggのどちらかが応答) - DNS Servers:
192.168.1.10,192.168.1.11 - File Server:
192.168.1.200(Mjolnir/Gungnirのどちらかが応答)
裏側でどのラズパイが倒れても、家族は誰も気づかない――それがこの構成のゴールです。
おわりに
この構成は、ラズパイ3の資産を最大限に活用しつつ、家庭内インフラとしての堅牢性を極限まで高めたものです。各ノードのセットアップ手順については、次回の記事で詳解します。