Enis Soztutar created ZOOKEEPER-2386:
----------------------------------------
Summary: Cannot achieve quorum when middle server (in a q of 3) is
unreacable
Key: ZOOKEEPER-2386
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2386
Project: ZooKeeper
Issue Type: Bug
Reporter: Enis Soztutar
Recently, we've observed a curious case where a quorum was not reached for days
in a cluster of 3 nodes (zk0, zk1, zk2) and the middle node zk1 is unreachable
from network.
The leader election happens, and both zk0 and zk2 starts the vote. Then each
server sends notifications to every other server including itself. The problem
is that, zk1 vm is unavailable, so when we are trying to open up a socket to
connect to that server with socket timeout of 5 seconds, it delays the
notification processing of the vote sent from zk2 to zk2 (itself). The vote
eventually comes after 5 sec, but by that time, the follower (zk0) already
converted to the follower state. On the follower state, the follower try to
connect to leader 5 times with 1 second timeout (5 sec in total). Since the
leader does not start its peer port for 5 seconds after the follower starts,
the follower always times out connecting to the leader. This cycle is repeating
for hours / days even after restarting the servers several times.
I believe this is related to the default timeouts (5 sec socket timeout) and
follower to leader connection timeout (5 tries with 1 second timeout). Only
after setting the {{zookeeper.cnxTimeout}} to 1 second, the quorum was
operating.
More logs coming shortly.
zoo.cfg:
{code}
server.3=zk2-hostname:2889:3889
server.2=zk1-hostname:2889:3889
server.1=zk0-hostname:2889:3889
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)