はじめに

「自宅サーバーを構築したが、1台落ちただけで家族全員のネットが止まった」 そんな苦い経験(特にDNS/DHCP周りでの同期失敗)を経て、今回はRaspberry Pi 6台(+α)を駆使した「高可用性(HA)」に特化した自宅ネットワークを再設計します。

今回のコンセプトは「速度よりも、止まらないこと」。 北欧神話の神々の名を冠した6台のラズパイによる、3層の冗長化レイヤーを構築します。


1. ネットワーク全体像

上位ルーターとはWi-Fiで接続し、内部ネットワークは有線L2スイッチを中心に構成します。物理的に役割を分離することで、障害時の原因切り分けを容易にしています。

階層化の設計案

  1. Edge層 (L1): インターネットへの門番。KeepalivedでゲートウェイIPを共有。
  2. Core層 (L2): DHCPやDNS、認証など、NWの頭脳となる機能を同期。
  3. 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の資産を最大限に活用しつつ、家庭内インフラとしての堅牢性を極限まで高めたものです。各ノードのセットアップ手順については、次回の記事で詳解します。