分散システムの負荷分散をリアルタイムで可視化・学習するためのサンドボックス環境です。
Network Sandbox は、ロードバランサー、マルチ言語ワーカー、モニタリングスタックを組み合わせた教育・実験用プラットフォームです。様々な負荷分散アルゴリズムの動作を視覚的に理解し、カスタム実装を簡単にテストできます。
- 4種類の負荷分散アルゴリズム: ラウンドロビン、最小接続、重み付け、ランダム
- マルチ言語ワーカー: Go, Rust, Python 実装
- リアルタイムUI: WebSocket による即時更新
- サーキットブレーカー: 障害時の自動切り離し
- Prometheus/Grafana: フルモニタリングスタック
- スワップ可能アーキテクチャ: カスタム実装との簡単な入れ替え
# リポジトリをクローン
git clone https://github.com/Hiroki-org/network-sandbox.git
cd network-sandbox
# 起動
docker-compose up -d
# アクセス
# - クライアントUI: http://localhost:3000
# - Grafana: http://localhost:3001 (admin/admin123)
# - Prometheus: http://localhost:9090network-sandbox/
├── client/ # React フロントエンド
├── load-balancer/ # Go ロードバランサー
├── workers/
│ ├── go/ # Go ワーカー
│ ├── rust/ # Rust ワーカー
│ └── python/ # Python ワーカー
├── grafana/ # Grafana ダッシュボード設定
├── prometheus/ # Prometheus 設定
├── docker-compose.yml # サービス定義
├── docker-compose.override.yml.example # カスタマイズ例
└── .env.example # 環境変数テンプレート
cp .env.example .env
# .env を編集してカスタマイズこのプロジェクトは スワップ可能なアーキテクチャ を採用しています。自作のロードバランサーやワーカーを簡単に組み込めます。
cp docker-compose.override.yml.example docker-compose.override.yml# docker-compose.override.yml
services:
# 自作ロードバランサーに差し替え
load-balancer:
build:
context: ./my-custom-load-balancer
dockerfile: Dockerfile
environment:
- MY_CUSTOM_CONFIG=value
# 自作ワーカーを追加
my-worker:
build:
context: ./my-workers/custom
dockerfile: Dockerfile
environment:
- PORT=8090
- WORKER_NAME=my-worker-1
- WORKER_COLOR=#FF00FF# .env
LB_IMAGE=your-registry/my-load-balancer:latest
WORKER_GO_IMAGE=your-registry/my-go-worker:latestCustom Worker Guide を参照してください。
必須エンドポイント:
GET /health- ヘルスチェックPOST /task- タスク処理GET /metrics- Prometheus メトリクスGET /status- ステータス情報
http://localhost:3001 でアクセス:
- Load Balancer Overview: リクエスト数、レイテンシ、アルゴリズム状態
- Worker Health: 各ワーカーの負荷、キュー深度、ヘルス状態
ロードバランサー:
lb_requests_total- 総リクエスト数lb_request_duration_ms- レイテンシ分布lb_worker_health- ワーカー健全性
ワーカー:
worker_requests_total- 処理リクエスト数worker_active_requests- アクティブリクエスト数worker_processing_time_ms- 処理時間
クライアントUI (http://localhost:3000) で以下を制御できます:
- 負荷生成: リクエストレートとタスク重み調整
- アルゴリズム選択: リアルタイムで切り替え
- 統計表示: 成功/失敗数、平均応答時間
- ワーカー状態: 各ワーカーの負荷とヘルス
| アルゴリズム | 説明 | 適用シーン |
|---|---|---|
| Round Robin | 順番に振り分け | 均一負荷のワーカー |
| Least Connections | 最も空いているワーカーへ | 可変処理時間 |
| Weighted | 重みに基づいて振り分け | 異なる性能のワーカー |
| Random | ランダム選択 | シンプルな分散 |
# ログを確認
docker-compose logs -f load-balancer
docker-compose logs -f worker-go-1
# 再ビルド
docker-compose build --no-cache
docker-compose up -d- Prometheus ターゲット確認: http://localhost:9090/targets
- ワーカーメトリクス確認:
curl http://localhost:8081/metrics
MIT License
