2012-12-13 23 views
2

这是我第一次尝试ZooKeeper,虽然我可以轻松地将它设置为在单台机器上运行,但让它在两台机器的集群中运行并不是一切工作。我认为这可能是我的配置有问题,但看起来不像我能找到它。ZooKeeper集群无法正常工作,没有发生选举

Here are the logs for server 1

Here are the logs for server 2

而且我的配置是两个服务器如下:

# The number of milliseconds of each tick 
tickTime=2000 
# The number of ticks that the initial 
# synchronization phase can take 
initLimit=10 
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement 
syncLimit=5 
# the directory where the snapshot is stored. 
dataDir=/var/lib/zookeeper 
# the port at which the clients will connect 
clientPort=2181 
server.1=redis1:2888:3888 
server.2=redis2:2888:3888 

什么问题可能是任何想法?

我在运行OpenJDK 7的Ubuntu Linux中运行ZooKeeper 3.4.5。试图在OpenJDK 6上运行,但仍然遇到同样的问题。

回答

0

而问题是,我有一个甚至数量的节点,你需要一个数量的节点能够进行一次大选(显然)。应该更新文档以涵盖该文档,因为基本示例显示正好配置了2台服务器。

+0

你应该能够有偶数个节点的一次大选。有了2个节点,两个节点都必须选举完成。 – sbridges

+0

由于日志显示,两个节点都已启动并正在运行,而选举从未发生过。一旦我得到第三个节点,选举就发生了,现在我的群集运行良好。 –

+1

如果你杀死了当前的领导者,那么其他节点是否就新的领导者达成一致? – sbridges

1

你的配置是无效的,特别是

server.1=redis1:2888:3888 
server.2=redis1:2888:3888 

如果你运行你需要为每个不同的端口号在同一台主机上的两个实例,更会像

server.1=localhost:3181:4181 
server.2=localhost:3182:4182 

注意你应该有相同的服务器。#config配置两个服务器的配置文件。

另一种选择是只使用类似zkconf产生这一切都为你:http://bit.ly/aQP9Yi

+0

只是对真实主机名的一个不好的改变,在真实的配置文件中两个主机名都是不同的。 –