3

Zookeeper Experts.

The question that I am asking might be basic to you, but I am new to ZK, and I haven't mastered the tool yet so forgive me. With that in mind here is my question.

Suppose I have a ZK Cluster of 5 Servers, and I have a quorum of 3. Now this guarantees that the servers won't go into split-brain scenarios, if they are located into two physically separate DC or machines right.

However, what I want to know is if the Quorum is set to three it means that the Leader server, will need to wait until at least 2 server replicate the written data, total of 3 replicated data. But what if a client connects to the server that is not part of the Quorum any of the 2 servers, isn't that means it gets the old data ?

OneCricketeer
  • 179,855
  • 19
  • 132
  • 245
Derayt.
  • 31
  • 5
  • Typically, you don't deploy ZK in two physically separate DCs due to network latency between them. For example, a single cluster across US and Europe wouldn't work very well – OneCricketeer Nov 09 '18 at 15:32

1 Answers1

0

First, you cannot "set" the quorum. It is automatically calculated from the configuration, using N/2+1 (the majority) where N is the number of zookeeper server *.

A Zookeeper server that is not part of a Quorum become unavailable and cannot server data to clients so no risk of seeing old data.

Mickael Maison
  • 25,067
  • 7
  • 71
  • 68
  • Sure, if the quorum is calculated, then you could potentially have an even number of servers resulting in split-brain, i.e 4 server quorum = 2, And if I understand your answer correctly, are you saying that during the replication process, the nodes not-part-of-the-quorum they become unavailable ? But whaI about the Watch mechanism in ZK, shouldn't the not-part-of-the-quorum make use of it, or is only reserved for nodes in the quorum ? – Derayt. Nov 09 '18 at 09:27
  • Quorum cannot be an even number. I've updated the post to not use `ceil` but instead `+1` to clarify but both are the same. Yes you understood correctly, when not in a quorum, ZK nodes are not available. Not sure I understand your last question – Mickael Maison Nov 09 '18 at 09:56
  • 1
    I also recommend going over http://zookeeper.apache.org/doc/r3.4.13/zookeeperInternals.html as I think it covers your questions very well. – Mickael Maison Nov 09 '18 at 09:57
  • Thanks, Mickael, It's beginning to make sense now. Except for one thing. I understand my question is vague. A cluster of ZK Nodes of 5 = Ensemble And the 3 Nodes are = Quorum When a client send a write operation, to the master, then you have to have the three Quorum, up-and-runnning in order to write the data. But what if a client reads from the non Quorum, which means the data is outdated ? Because the data is not propagated to the remaining two, which are not part of the Quorum. How is this handled ? – Derayt. Nov 09 '18 at 10:23