動的エッジディスカバリ (Signal/Relay)
従来の NetBird では、Signal サーバーや Relay サーバー(STUN/TURN)のアドレスは設定ファイル(management.json)内に静的に記述されていました。この構成では、特定のエッジが過負荷になった際や障害発生時の切り替えに再起動や手動設定変更が必要でした。
AegisMesh は、「動的エッジディスカバリ基盤」 を実装し、クライアントへ常に最適なエッジアドレスを自律的に配信します。
1分周期ハートビートと動的ルーティング
sequenceDiagram autonumber participant Edge as エッジ拠点 (東京/大阪/シンガポール) participant Mgmt as AegisMesh 管理サーバー (DB) participant Client as クライアント端末 (PC)
loop 1分周期 Edge->>Mgmt: POST /api/internal/edges/heartbeat (CPU負荷, 帯域使用率) Mgmt->>Mgmt: Edge テーブルのタイムスタンプと負荷スコアを更新 end
Client->>Mgmt: 端末チェックイン (gRPC Sync) Note over Mgmt: 直近3分以内に生存 & 最も低負荷なエッジを選定 Mgmt-->>Client: 最適な Signal / Relay アドレスを動的プッシュ自動フェイルオーバー(Soft Delete)の仕組み
- 各エッジサーバー(
docker-compose.edge.yml)で動作する監視エージェントが、1分周期 で自身の負荷情報(CPU利用率・ネットワーク帯域)を管理サーバーへ送信(POST /api/internal/edges/heartbeat)。 - 管理サーバー(
management/server/store/sql_store.go)は、直近3分間ハートビートが途絶えたエッジ を自動的に配信対象外(Inactive)としてマーク。 - クライアントが次回チェックイン(または再接続)する際、ダウンしたエッジは除外され、正常稼働中の別エッジが自動割り当てされます。
- これにより、クラウド拠点の計画メンテナンスや突発的なネットワーク障害時でも、人手を介さず無停止で通信が継続されます。