Zookeeper Quorum and the Non- Quorum
up vote
1
down vote
favorite
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 ?
apache-zookeeper quorum
add a comment |
up vote
1
down vote
favorite
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 ?
apache-zookeeper quorum
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
– cricket_007
Nov 9 at 15:32
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
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 ?
apache-zookeeper quorum
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 ?
apache-zookeeper quorum
apache-zookeeper quorum
edited Nov 9 at 15:30
cricket_007
76.4k1042106
76.4k1042106
asked Nov 8 at 17:46
Jared.T
62
62
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
– cricket_007
Nov 9 at 15:32
add a comment |
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
– cricket_007
Nov 9 at 15:32
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
– cricket_007
Nov 9 at 15:32
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
– cricket_007
Nov 9 at 15:32
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
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.
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 ?
– Jared.T
Nov 9 at 9:27
Quorum cannot be an even number. I've updated the post to not useceil
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 9 at 9:56
1
I also recommend going over zookeeper.apache.org/doc/r3.4.13/zookeeperInternals.html as I think it covers your questions very well.
– Mickael Maison
Nov 9 at 9: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 ?
– Jared.T
Nov 9 at 10:23
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
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.
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 ?
– Jared.T
Nov 9 at 9:27
Quorum cannot be an even number. I've updated the post to not useceil
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 9 at 9:56
1
I also recommend going over zookeeper.apache.org/doc/r3.4.13/zookeeperInternals.html as I think it covers your questions very well.
– Mickael Maison
Nov 9 at 9: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 ?
– Jared.T
Nov 9 at 10:23
add a comment |
up vote
0
down vote
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.
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 ?
– Jared.T
Nov 9 at 9:27
Quorum cannot be an even number. I've updated the post to not useceil
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 9 at 9:56
1
I also recommend going over zookeeper.apache.org/doc/r3.4.13/zookeeperInternals.html as I think it covers your questions very well.
– Mickael Maison
Nov 9 at 9: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 ?
– Jared.T
Nov 9 at 10:23
add a comment |
up vote
0
down vote
up vote
0
down vote
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.
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.
edited Nov 9 at 9:53
answered Nov 8 at 19:39
Mickael Maison
6,39232428
6,39232428
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 ?
– Jared.T
Nov 9 at 9:27
Quorum cannot be an even number. I've updated the post to not useceil
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 9 at 9:56
1
I also recommend going over zookeeper.apache.org/doc/r3.4.13/zookeeperInternals.html as I think it covers your questions very well.
– Mickael Maison
Nov 9 at 9: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 ?
– Jared.T
Nov 9 at 10:23
add a comment |
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 ?
– Jared.T
Nov 9 at 9:27
Quorum cannot be an even number. I've updated the post to not useceil
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 9 at 9:56
1
I also recommend going over zookeeper.apache.org/doc/r3.4.13/zookeeperInternals.html as I think it covers your questions very well.
– Mickael Maison
Nov 9 at 9: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 ?
– Jared.T
Nov 9 at 10:23
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 ?
– Jared.T
Nov 9 at 9:27
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 ?
– Jared.T
Nov 9 at 9: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 9 at 9:56
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 9 at 9:56
1
1
I also recommend going over zookeeper.apache.org/doc/r3.4.13/zookeeperInternals.html as I think it covers your questions very well.
– Mickael Maison
Nov 9 at 9:57
I also recommend going over zookeeper.apache.org/doc/r3.4.13/zookeeperInternals.html as I think it covers your questions very well.
– Mickael Maison
Nov 9 at 9: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 ?
– Jared.T
Nov 9 at 10:23
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 ?
– Jared.T
Nov 9 at 10:23
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53213411%2fzookeeper-quorum-and-the-non-quorum%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
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
– cricket_007
Nov 9 at 15:32