photoncloud-monorepo/docs/por/T032-baremetal-provisioning/diagrams/network-topology.md
centra 5c6eb04a46 T036: Add VM cluster deployment configs for nixos-anywhere
- netboot-base.nix with SSH key auth
- Launch scripts for node01/02/03
- Node configuration.nix and disko.nix
- Nix modules for first-boot automation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-11 09:59:19 +09:00

30 KiB

Network Topology Diagram

Document Version: 1.0 Last Updated: 2025-12-10

Physical Network Layout

┌─────────────────────────────────────────────────────────────────────────┐
│                        Physical Datacenter Layout                        │
└─────────────────────────────────────────────────────────────────────────┘

                            Internet
                               │
                               │
                        ┌──────┴──────┐
                        │  Firewall   │
                        │  Router     │
                        └──────┬──────┘
                               │
                ┌──────────────┴──────────────┐
                │  Core Switch (L3)           │
                │  - VLANs: 10,100,200,300,400│
                │  - Routing between VLANs    │
                │  - 10/25/100 Gbps uplinks   │
                └───────────┬─────────────────┘
                            │
        ┌───────────────────┼───────────────────┬──────────────────┐
        │                   │                   │                  │
  ┌─────┴─────┐      ┌──────┴──────┐      ┌────┴────┐      ┌─────┴─────┐
  │  ToR      │      │  ToR        │      │  ToR    │      │  PXE/Mgmt │
  │  Switch 1 │      │  Switch 2   │      │ Switch 3│      │  Switch   │
  │  (Rack 1) │      │  (Rack 2)   │      │ (Rack 3)│      │           │
  └─────┬─────┘      └──────┬──────┘      └────┬────┘      └─────┬─────┘
        │                   │                   │                  │
    ┌───┴───┐           ┌───┴───┐           ┌───┴───┐      ┌─────┴─────┐
    │node01 │           │node04 │           │node07 │      │PXE Server │
    │node02 │           │node05 │           │node08 │      │10.0.100.10│
    │node03 │           │node06 │           │node09 │      └───────────┘
    │       │           │       │           │       │
    │(BMC)  │           │(BMC)  │           │(BMC)  │
    │10.0.  │           │10.0.  │           │10.0.  │
    │10.5x  │           │10.5x  │           │10.5x  │
    └───────┘           └───────┘           └───────┘

Legend:
  node01-03: Control plane (3-node Raft cluster)
  node04-09: Worker nodes (compute + storage)
  BMC: Baseboard Management Controller (IPMI/iDRAC/iLO)

Logical VLAN Layout

┌─────────────────────────────────────────────────────────────────────────┐
│                         VLAN Segmentation                                │
└─────────────────────────────────────────────────────────────────────────┘

VLAN 10: Management (10.0.10.0/24)
═══════════════════════════════════════════════════════════════════════════
┌────────────────────────────────────────────────────────────────────────┐
│  Purpose: BMC/IPMI access, administrative SSH, monitoring              │
│  Access: Restricted to admin workstations only                         │
└────────────────────────────────────────────────────────────────────────┘

  10.0.10.1       10.0.10.5         10.0.10.10        10.0.10.50-99
  ┌─────────┐     ┌─────────┐       ┌─────────┐       ┌──────────────┐
  │ Gateway │     │Monitoring│       │Admin    │       │ BMC/IPMI     │
  │         │     │ Server   │       │Workstation│      │ (node01-09)  │
  └─────────┘     └─────────┘       └─────────┘       └──────────────┘

VLAN 100: Provisioning (10.0.100.0/24)
═══════════════════════════════════════════════════════════════════════════
┌────────────────────────────────────────────────────────────────────────┐
│  Purpose: PXE boot network, temporary during installation              │
│  Access: Nodes during PXE boot only                                    │
└────────────────────────────────────────────────────────────────────────┘

  10.0.100.1      10.0.100.10       10.0.100.50-99    10.0.100.100-200
  ┌─────────┐     ┌─────────┐       ┌──────────┐      ┌───────────────┐
  │ Gateway │     │PXE Server│       │Static    │      │DHCP Pool      │
  │         │     │DHCP/TFTP │       │Reservations│    │(temp assign)  │
  │         │     │HTTP      │       │          │      │               │
  └─────────┘     └─────────┘       └──────────┘      └───────────────┘

VLAN 200: Production Cluster (10.0.200.0/24)
═══════════════════════════════════════════════════════════════════════════
┌────────────────────────────────────────────────────────────────────────┐
│  Purpose: Inter-node cluster communication, Raft, gossip               │
│  Access: Cluster nodes only, fully isolated                            │
└────────────────────────────────────────────────────────────────────────┘

  10.0.200.1      10.0.200.10-12    10.0.200.20-29    10.0.200.100-199
  ┌─────────┐     ┌──────────┐      ┌──────────┐      ┌──────────────┐
  │ Gateway │     │Control   │      │Worker    │      │Service VIPs  │
  │         │     │Plane     │      │Nodes     │      │(load balanced)│
  │         │     │node01-03 │      │node04-09 │      │              │
  └─────────┘     └──────────┘      └──────────┘      └──────────────┘

VLAN 300: Client Access (10.0.300.0/24)
═══════════════════════════════════════════════════════════════════════════
┌────────────────────────────────────────────────────────────────────────┐
│  Purpose: External client access to APIs (IAM, PlasmaVMC, etc.)        │
│  Access: External clients, applications                                │
└────────────────────────────────────────────────────────────────────────┘

  10.0.300.1      10.0.300.10-19    10.0.300.100
  ┌─────────┐     ┌──────────┐      ┌──────────┐
  │ Gateway │     │FiberLB   │      │Client    │
  │NAT      │     │(L4/L7 LB)│      │VIP       │
  └─────────┘     └──────────┘      └──────────┘

VLAN 400: Storage (10.0.400.0/24)
═══════════════════════════════════════════════════════════════════════════
┌────────────────────────────────────────────────────────────────────────┐
│  Purpose: iSCSI, NFS, block storage traffic                            │
│  Access: Worker nodes and storage nodes only                           │
└────────────────────────────────────────────────────────────────────────┘

  10.0.400.1      10.0.400.10-19    10.0.400.20-29
  ┌─────────┐     ┌──────────┐      ┌──────────┐
  │ Gateway │     │Storage   │      │Worker    │
  │         │     │Nodes     │      │Nodes     │
  └─────────┘     └──────────┘      └──────────┘

Node Network Interface Layout

┌─────────────────────────────────────────────────────────────────────────┐
│                      Control Plane Node (node01)                         │
└─────────────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────────────┐
│  Physical Server                                                         │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │  BMC Port (IPMI/iDRAC/iLO)                                         │ │
│  │  ├─ 10.0.10.50 (VLAN 10)                                           │ │
│  │  └─ Dedicated management network                                   │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │  eth0 (1 GbE or 10 GbE)                                            │ │
│  │  ├─ 10.0.100.50 (VLAN 100, untagged) - PXE boot only              │ │
│  │  └─ Removed after provisioning or reassigned                       │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │  eth1 (10 GbE or 25 GbE) - PRODUCTION                              │ │
│  │  ├─ VLAN 200: 10.0.200.10/24 (cluster communication)              │ │
│  │  ├─ VLAN 300: 10.0.300.10/24 (client access)                      │ │
│  │  └─ 802.1Q trunking enabled                                        │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │  eth2 (10 GbE or 25 GbE) - STORAGE (optional)                     │ │
│  │  └─ VLAN 400: 10.0.400.10/24 (storage traffic)                    │ │
│  └────────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────┐
│                        Worker Node (node04)                              │
└─────────────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────────────┐
│  Physical Server                                                         │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │  BMC Port                                                           │ │
│  │  └─ 10.0.10.54 (VLAN 10)                                           │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │  eth0 (1 GbE or 10 GbE)                                            │ │
│  │  └─ 10.0.100.60 (VLAN 100, PXE boot only)                          │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │  eth1 (25 GbE or 100 GbE) - PRODUCTION                             │ │
│  │  ├─ VLAN 200: 10.0.200.20/24 (cluster communication)              │ │
│  │  └─ VLAN 300: 10.0.300.20/24 (client workload traffic)            │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │  eth2 (25 GbE or 100 GbE) - STORAGE                               │ │
│  │  └─ VLAN 400: 10.0.400.20/24 (iSCSI, NFS)                         │ │
│  └────────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘

Traffic Flow Patterns

┌─────────────────────────────────────────────────────────────────────────┐
│                      Traffic Flow by Service                             │
└─────────────────────────────────────────────────────────────────────────┘

Chainfire Raft Replication (VLAN 200)
═══════════════════════════════════════════════════════════════════════════

┌──────────┐  Raft heartbeats   ┌──────────┐  Raft log      ┌──────────┐
│  node01  │  (2380) every 50ms │  node02  │  replication   │  node03  │
│ (Leader) ├───────────────────>│(Follower)│<───────────────┤(Follower)│
│          │<───────────────────┤          │────────────────>│          │
└──────────┘  ACK responses     └──────────┘  Vote requests  └──────────┘

Client API Requests (VLAN 300 → VLAN 200)
═══════════════════════════════════════════════════════════════════════════

┌──────────┐  HTTPS (8080)      ┌──────────┐  Internal     ┌──────────┐
│  Client  ├──────────────────>│  FiberLB │  routing      │  IAM     │
│          │  10.0.300.100:8080 │          ├──────────────>│(node01)  │
└──────────┘                    └──────────┘  10.0.200.10  └──────────┘

Gossip Protocol (VLAN 200)
═══════════════════════════════════════════════════════════════════════════

All nodes exchange cluster membership and health status
┌─────┐        ┌─────┐        ┌─────┐        ┌─────┐
│node01│◄──────┤node02│◄──────┤node03│◄──────┤node04│
└──┬──┘        └──┬──┘        └──┬──┘        └──┬──┘
   │              │              │              │
   └──────────────┴──────────────┴──────────────┘
   UDP port 2381, multicast or unicast gossip

Storage Traffic (VLAN 400)
═══════════════════════════════════════════════════════════════════════════

┌──────────┐  iSCSI (3260)      ┌──────────┐
│  Worker  ├──────────────────>│  Storage │
│  Node    │  Block I/O         │  Node    │
│(node04)  │<───────────────────┤(node01)  │
└──────────┘  10.0.400.20       └──────────┘
              <─> 10.0.400.10

VM-to-VM Overlay Network (VXLAN on VLAN 200)
═══════════════════════════════════════════════════════════════════════════

┌──────────────────────────────────────────────────────────────────────────┐
│  VM on node04         VXLAN Tunnel (4789)        VM on node05           │
│  ┌────────┐           ────────────────────────   ┌────────┐             │
│  │VM-101  │  Overlay: 10.100.0.10               │VM-102  │             │
│  │10.100. │◄─────────────────────────────────────┤10.100. │             │
│  │  0.10  │  Underlay: 10.0.200.20 → 10.0.200.21 │  0.20  │             │
│  └────────┘           UDP encapsulation          └────────┘             │
└──────────────────────────────────────────────────────────────────────────┘

Bandwidth Allocation

┌─────────────────────────────────────────────────────────────────────────┐
│                   Bandwidth Reservation by VLAN                          │
└─────────────────────────────────────────────────────────────────────────┘

Control Plane Node (25 GbE total on eth1)
═══════════════════════════════════════════════════════════════════════════
│
├─ VLAN 200 (Cluster): 15 Gbps reserved
│  ├─ Raft replication: 5 Gbps
│  ├─ Gossip protocol: 1 Gbps
│  └─ Inter-service communication: 9 Gbps
│
├─ VLAN 300 (Client): 10 Gbps reserved
│  ├─ API requests: 8 Gbps
│  └─ Ingress traffic: 2 Gbps
│
└─ Burst capacity: Up to 25 Gbps (shared)

Worker Node (100 GbE total on eth1 + eth2)
═══════════════════════════════════════════════════════════════════════════
│
├─ eth1 (25 GbE):
│  ├─ VLAN 200 (Cluster): 10 Gbps
│  └─ VLAN 300 (Client): 15 Gbps (VM traffic)
│
└─ eth2 (25 GbE):
   └─ VLAN 400 (Storage): 25 Gbps (iSCSI, block I/O)

Firewall Zones

┌─────────────────────────────────────────────────────────────────────────┐
│                         Firewall Zone Model                              │
└─────────────────────────────────────────────────────────────────────────┘

                    Internet (Untrusted)
                           │
                           │ Firewall + NAT
                           │ (stateful inspection)
                           v
                ┌──────────────────────┐
                │  DMZ / Edge Zone     │
                │  (VLAN 300)          │
                │  • FiberLB           │
                │  • Public APIs       │
                │  • Rate limiting     │
                └──────────┬───────────┘
                           │
                           │ Internal Firewall
                           │ (API gateway, mTLS)
                           v
      ┌────────────────────┴────────────────────┐
      │         Internal Zone (Trusted)         │
      │         (VLAN 200)                      │
      │  • Control plane                        │
      │  • Worker nodes                         │
      │  • Cluster communication                │
      │  • No direct external access            │
      └─────────────┬───────────────────────────┘
                    │
                    │ Storage Firewall
                    │ (port-based ACLs)
                    v
      ┌─────────────────────────────────┐
      │  Storage Zone (Isolated)        │
      │  (VLAN 400)                     │
      │  • iSCSI targets                │
      │  • NFS servers                  │
      │  • Only accessible from workers │
      └─────────────────────────────────┘

Management Zone (Separate)
════════════════════════════════════
┌─────────────────────────────────┐
│  VLAN 10: Management            │
│  • BMC/IPMI (out-of-band)       │
│  • Admin SSH (bastion host)     │
│  • Monitoring agents            │
│  • Isolated from production     │
└─────────────────────────────────┘

Multi-Site Topology (Advanced)

┌─────────────────────────────────────────────────────────────────────────┐
│                     Multi-Datacenter Topology                            │
└─────────────────────────────────────────────────────────────────────────┘

Site A (Primary)                 Site B (Secondary)               Site C (DR)
┌────────────────┐              ┌────────────────┐              ┌──────────┐
│ node01-03      │              │ node04-06      │              │ node07-09│
│ Control Plane  │◄────────────┤ Worker Nodes   │◄─────────────┤ Backup   │
│ 10.0.200.10-12 │  WAN Link   │ 10.1.200.20-22 │  WAN Link    │ 10.2.200.│
└────────────────┘  (10 Gbps)  └────────────────┘  (10 Gbps)   └──────────┘
        │                               │                             │
        │ Raft sync (async)             │ Raft sync (async)           │
        └───────────────────────────────┴─────────────────────────────┘
                      Global Cluster State
                      (distributed consensus)

Considerations:
• Latency: <5ms for synchronous replication, <100ms for async
• Bandwidth: Dedicated inter-site links for cluster traffic
• Failure modes: Site failure triggers leader election in remaining sites
• Split-brain prevention: Requires odd number of sites (3/5/7)

Document End