BrandMeister Server supports several ways to make server clusters in a datacenter. In fact each cluster node is separate brandmeister process and can runs as a normal node but the main topic is how to reach zero-latency if we have more than one node close each to the next one.
We may have several reasons to think about clustering:
Process of brandmeister reached performance of single CPU core. BrandMeister Server implements single-threaded event-based model ("Actor Model") to handle all actions. So the limit is a performance of a single CPU core.
Security reasons. On some cases different masters managed by different administration teams can be hosted at the same DC as well as on the same hypervisor.
BrandMeister Server supports this option. This can solve a problem of reached performance of single CPU core. Each server process may utilize separate core. At the same time Tarantool and Mosquitto can be shared. You can balance load of different protocol stacks by this way, for example move "HyteraPTT RoIP" to separate process.
Each node needs to have it's unique configuration file at /opt/BrandMeister/Instances with unique node ID (for example, network=25011 and network=250012)
Each node have to be registered at systemd via setup.sh
Each node have to be registered at global Registery Database
Regular transport for cummunications between nodes of BrandMeister Server is FastForward on top of UDP. This makes a traffic globally routed, but... it has no guaranies of delivery, packets can be reordered, we have to use jitter buffer.
How to have reliable delivery with zero latency if we can be sure of environment availability for this?
FastForward supports several options for that:
Shared memory communications on the same host
vSockets, when hosts are running at the same hypervisor (supported by KVM and vmWare)
RDMA-based transport on top of InfiniBand, RoCEv1 or RoCEv2 when your hardware and DC has support of it
All these options cn be used at the same time by defining records at the space OverriddenNodes at local Registry.