2

这是我第一次尝试 ZooKeeper,虽然我可以轻松地将它设置为在单台机器上运行,但让它在两台机器的集群中运行根本不起作用。我认为这可能是我的配置有问题,但看起来我找不到它。

这是服务器 1 的日志

这是服务器 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 上运行,但仍然遇到同样的问题。

4

2 回答 2

1

问题是我有偶数个节点,你需要奇数个节点才能进行选举(显然)。应该更新文档以涵盖这一点,因为基本示例显示正好配置了 2 个服务器。

于 2012-12-13T17:04:50.727 回答
1

您的配置无效,特别是

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

如果您在同一主机上运行两个实例,则每个实例都需要不同的端口号,最好是类似

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

请注意,您应该有相同的 server.# config 用于两个服务器的配置文件。

另一种选择是使用 zkconf 之类的东西为您生成所有这些:http: //bit.ly/aQP9Yi

于 2012-12-14T01:44:49.517 回答