Newbie Question: Clustering

I was wondering if someone could help me in getting documentation on how to create an Eventstore clustered environment.

  1. My plan is to create multiple instances of Eventstore where instance is active at a time and also others are passively getting updated. Also, I’m wondering if is there a way where we can switch nodes based on time

e.g Node 1, Node 2, Node 3, Node 4

Morning -> Users will point to Node 1

Afternoon -> Node 2

Evening -> Node 3

Ngiht -> Node 4.

This is not how the clustering works at this point though we have considered adding time preferences to it (relatively small change). As of now the clustering will write to n nodes where n is greater than 50% of the cluster before acking a request (eg write to a quorum of nodes). This model assures consistency including when there are failures. The model you suggest has some failure modes in its operation where problems can happen. The problem in particular is known as split brain. What would you want to do if node 1 went down in the morning? Would all clients move to node 2?

Setting up what you are discussing would not be hard I just want to make sure its understood that it has failure modes that need to be considered before going through how it could be setup.



Yes I would like all my clients to move to another active node if node 1 fails in morning. Also, node 2, 3 and 4 wont be offline. They will just be replicating data I just want them to run on different times is because they are located at different physical locations. e.g node 1 probably US. node 4 - Sydney.

I’m sorry if I have confused you.

“Yes I would like all my clients to move to another active node if node 1 fails in morning.”

There is a problem with this. Let’s say that you have the first node in sydney. Then half of your clients think this node is dead but half think its still alive (say a network partition). Half of your clients decide another node is the active node. This is known as a split brain scenario. In this case your active vs active nodes will not end up with the same data and obviously the clients can make inconsistent writes as they are not seeing each others writes.

In terms of dealing with reading from various nodes there is generally not a problem but writing can be a bit trickier. How many requests/second are being discussed and what if anything are latency requirements?