I'm thinking of adding multiple relay-node instances behind a load-balancer to avoid downtime during maintenance windows, updates, restarts, etc.

From the outside world (public network), this would be seen as a single relay (single IP address / single DNS record), but internally, each instance would be an independent node, performing its own sync procedure. There's a chance for these instances to be slightly out of sync between each other (eg: after a restart of one).

My question: is there any problem from the protocol perspective (Ouroboros, topology updater, etc) with having multiple round robin nodes answering as the same relay?

  • Do you have more details on how you plan on handling your topology inside the network? Nov 2, 2021 at 1:30
  • This would be a cloud setup. Each relay-node instance would be connected to two subnets (1 public, 1 private). A single BP node would be running in the private subnet. Relay instances would point their topology config to the BP node + other peer relays downloaded from api.clio.one (cron job). The BP node would have a static topology file pointing only to the relay instances through the private subnet.
    – santi
    Nov 2, 2021 at 11:44

1 Answer 1


Short Answer: No there is not any technical limitations from the protocol or topology updater preventing you from doing this.

Considerations: Starting external and working in, we need to consider the DNS vs Public IP side of this. In my opinion a Public IP should be avoided because if it changes, you have to resubmit your stake-pool registration.

Excluding a public IP, we are left with DNS. There are 2 main ways you can setup the DNS: just an A Record or an SRV Record. It is worth noting that the SRV record doesn't know if a network is down/a-server-is-down, so it will not replace your load balancer for those type of services.

Either decision, the next step is your load balancer(s). I haven't actually set one of up for this use case but my initial thought would be this is where you run the topology-updater script. As well as, you know, balance the load. For the topology updater, make your valency equal to the number of relays you have (if using DNS, otherwise this won't work). Doing this allows more than one connection per peer. This is important because you are using a load balancer which could potentially create a situation where there are no incoming peers to a relay. You will still want to run a topology pull script to set your relay nodes' topology.

I hope this helps!

Example of Load Balancer Diagram

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.