3x-ui/docs/multi-node-sync.md
2026-04-10 15:33:04 +08:00

1.1 KiB

Multi-Node Shared Control

Roles

  • master: the only node allowed to change shared account definitions
  • worker: rebuilds local Xray config from shared snapshots and flushes traffic deltas

Requirements

  • shared mode requires MariaDB
  • each worker needs a unique nodeId
  • workers keep /etc/x-ui/shared-cache.json for outage survival

Runtime Loops

  • workers poll shared_accounts_version every syncInterval
  • all nodes flush /etc/x-ui/traffic-pending.json every trafficFlushInterval
  • only master runs shared traffic reconciliation that can disable or renew clients

Manual Verification

  1. Start a master node on MariaDB.
  2. Start a worker node on the same MariaDB with a unique nodeId.
  3. Change an inbound or client on master.
  4. Confirm the worker sees a newer shared_accounts_version and rebuilds local Xray.
  5. Generate traffic on both nodes.
  6. Confirm aggregated MariaDB counters increase without overwriting each other.
  7. Stop MariaDB briefly and confirm the worker continues using shared-cache.json.
  8. Restore MariaDB and confirm pending traffic deltas flush successfully.