两台服务器上的zookeeper集群配置

3
我希望使用zookeeper构建一个集群,但我只有两台服务器(A和B)。如果我在A服务器上安装了两个zookeepers(z1z2),并在B服务器上安装了一个(z3),这个集群可以工作吗?
实际上,我已经按照这种方式配置了我的服务器。 z2 可以启动,但我无法检查其状态。而且z1z3是独立模式。如何进行配置?谢谢。
1个回答

1

这个集群可以工作吗?

是的,您可以在两台服务器上安装三个实例。只需为 z1 和 z2 配置不同的配置即可。

请使用以下配置来设置 z1。

# z1 configuration
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/z1
clientPort=2181
server.1=A:2888:3888
server.2=A:2889:3889
server.3=B:2888:3888

这是关于z2的内容。
# z2 configuration
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/z2
clientPort=2182
server.1=A:2888:3888
server.2=A:2889:3889
server.3=B:2888:3888

在z3配置中,您需要添加这些行,以便z3意识到z1和z2的存在。如果您不添加这些行,z1和z2将会独立运行。
server.1=A:2888:3888
server.2=A:2889:3889
server.3=B:2888:3888

要检查节点的状态,只需查看 dataDir 下的 zookeeper.out 文件。它会打印足够的有关状态的信息。

谢谢你的回答。我有一个问题。在apache.zookeeper.org上,他们要求“群集中的所有服务器都拥有相同的配置文件副本”。这句话是什么意思?如果我在一台服务器上安装了两个ZooKeeper,它们的配置不能相同吗? - Talia Hu
你说得对。在同一台主机上的每个实例中,都需要具有不同的 dataDir 和 clientPort 值。Zookeeper 文档中的这句话旨在提醒您,配置文件中的某些条目定义了 zookeeper 实例的工作方式。像 tickTime、initLimit、syncLimit 和 server.X 这样的条目非常重要,zookeeper 使用它们进行领导者选举、容错等操作。当使用不同的值时,每个实例将会表现出不同的行为,因此您的集群可能无法正常工作。 - taner
还要记住,zookeeper文档建议每个主机只安装一个zookeeper实例。如果您在不同的服务器上安装所有节点,则可以使用完全相同的配置。我猜“仲裁中的所有服务器都有相同的配置文件副本”这句话假定您的zookeeper实例安装在不同的服务器上。 - taner
感谢您的回答。如果我在服务器A上安装了两个ZooKeeper,以及一个ZooKeeper在服务器B上。在配置后,我发现这两个在服务器A上的ZooKeeper是一个集群,但无法工作。而服务器B上的ZooKeeper是独立的。我猜想如果我想要构建一个由三个ZooKeeper组成的集群,它们应该安装在三台服务器上,而不是两台服务器上。 - Talia Hu
服务器数量不是构建zk集群的限制。我在一台服务器上使用5个zk实例进行测试。你能否发布你的zk配置,这样我就可以看看是否存在配置错误? - taner
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接