Architecture

The Two-Site Model

Why AORXI uses two independent site-local failure domains, what the sites share, and why Site A and Site B intentionally use different network and storage designs.

The two sites cooperate at the service layer but remain independent at the infrastructure layer. A WAN outage can interrupt cross-site replication or management without changing local Proxmox quorum, Ceph health, Layer 2 forwarding, or gateway ownership.

The Boundary Model

BoundarySite ASite BCross-site behavior
Address space10.10.0.0/1610.20.0.0/16Prefixes route through WireGuard
WAN routersa-fw-01sb-fw-01Firewalls peer on 10.255.0.0/24
Proxmoxsa-pvesb-pveSeparate clusters and quorum
Corosync10.10.25.0/2410.20.25.0/24Never routed or tunneled
Primary storageZFS on sa-stor-01Ceph across five compute nodesNo shared or stretched storage fabric
BackupPBS-APBS-BPlanned asynchronous replication on VLAN 90
Secretssa-bao-01sb-bao-01Independent Raft stores; planned transit unseal
Layer 2Three-switch UniFi RSTP fabricNetgear core plus UniFi accessNo VLAN or broadcast domain crosses the WAN

A Routed Relationship, Never a Stretched Datacenter

No Proxmox cluster, Corosync network, Ceph pool, OpenBao Raft cluster, broadcast domain, or client VLAN spans both sites. The only inter-site network is routed WireGuard.

Why the Sites Are Independent

WAN Faults Do Not Become Quorum Faults

Corosync expects stable, LAN-like latency. Keeping sa-pve and sb-pve separate prevents an ISP or tunnel interruption from changing cluster membership or quorum at the other site.

Storage Latency Stays Local

Site B Ceph uses dedicated public and cluster networks inside Site B. Stretching writes across the WAN would make latency and tunnel availability part of every storage operation. Cross-site recovery therefore uses PBS replication instead of synchronous Ceph replication.

Network Ownership Stays Obvious

Each OPNsense instance owns one site. Each switch fabric carries local VLANs only. A route across WireGuard is visible and policy-controlled; a hidden Layer 2 dependency across the WAN is not permitted.

Recovery Remains Possible When a Service Is Unavailable

OpenBao instances are independent and retain break-glass recovery. PBS copies are asynchronous. The design avoids a circular requirement where Site A must be healthy to boot Site B, or vice versa.

Deliberate Asymmetry

The sites share principles, not identical hardware.

Design choiceSite ASite BReason
Switchingsa-sw-01/02/03 UniFi L2 RSTP trianglesb-sw-01 Netgear L2 coreUses the hardware and attachment model already assigned to each site
Client edgeOPNsense routes trusted, IoT, and guest networks directlyUSG Pro remains behind OPNsense on VLAN 253Site B preserves its existing user network and accepted double NAT
StorageLocal ZFS mirrorsDistributed Ceph, replication size 3Site A has the storage-heavy 5049A-T; Site B has five OSD-capable nodes
Compute shapeTwo ThinkPad workers plus edge and storage hostsFive Supermicro compute/storage nodes plus edgeSite B is the worker-heavy site
UniFi controlsa-uos-01 manages Site A locallysb-sw-02 is adopted later over WireGuardOne controller is sufficient; no second Site B controller is planned

Do Not Normalize Away the Differences

Site A removes the Gateway Max from its target data path and retires VLAN 253. Site B retains the USG Pro behind OPNsense on VLAN 253. A rule or migration applied uniformly to both sites can break the intentional Site B compatibility boundary.

What the Tunnel Is For

WireGuard joins sa-fw-01 (10.255.0.1) and sb-fw-01 (10.255.0.2). It carries explicitly allowed routed flows after Site B is online:

FlowDirectionPurpose
Site prefixes10.10.0.0/16 ↔ 10.20.0.0/16Controlled management and service reachability
DNS AXFR / NOTIFYsa-dns-01 → sa-dns-02, sb-dns-01, sb-dns-02Replicate core.aorxi.io and reverse zones
PBS replicationPBS-A ↔ PBS-BCross-site backup copies and disaster recovery
OpenBao transitsa-bao-01 ↔ sb-bao-01Planned cross-site transit auto-unseal, not shared storage
UniFi adoptionsa-uos-01 → sb-sw-02Later L3 adoption of Site B UniFi access gear

WireGuard does not carry Corosync, Ceph cluster traffic, Layer 2 frames, or an always-required boot dependency without a documented break-glass path. WireGuard contains the routing and policy detail.

Failure-Domain Consequences

FailureLocal effectOther-site effect
One ISP or WireGuard pathCross-site services and replication pauseLocal cluster, storage, switching, and gateways continue
One OPNsense VM or edge hostRouted gateways, WAN, DHCP, and inter-zone policy fail at that siteOther site remains locally routed
Site A storage hostSite A ZFS-backed services and PBS-A are affectedSite B Ceph remains independent; replicated backups depend on last completed sync
Site B Ceph quorum or OSD failureSite B storage degrades according to Ceph healthSite A ZFS remains independent
One OpenBao instanceLocal secret service uses its recovery/fallback postureOther OpenBao instance retains its own data

Continue with Site roles & systems to see what belongs inside each boundary, then Physical & logical topology to follow traffic through it.