首页 文章

多个zookeeper服务器启动问题

提问于
浏览
1

我可以在我的Windows机器上运行单个zookeeper实例 . 但在单台Windows机器上设置多个zookeeper实例取得成功 .

根据指南,我做了以下步骤:

  • 在conf文件夹中创建多个zoo.conf文件 . 结构如下

zookeeper_home --- | conf-- | zoo.cfg zoo_2.cfg zoo_3.cfg

  • zoo.cfg

tickTime = 2000
initLimit = 10
syncLimit = 5
DATADIR = C:/选择/动物园管理员/数据
CLIENTPORT = 2181
server.1 =本地主机:2888:3888
server.2 =本地主机:2889:3889
server.3 =本地主机:2890:3890

  • zoo_2.cfg

tickTime = 2000
initLimit = 10
syncLimit = 5
DATADIR = C:/选择/动物园管理员/ DATA2
CLIENTPORT = 2182
server.1 =本地主机:2888:3888
server.2 =本地主机:2889:3889
server.3 =本地主机:2890:3890

  • zoo_3.cfg

tickTime = 2000
initLimit = 10
syncLimit = 5
DATADIR = C:/选择/动物园管理员/ DATA3
CLIENTPORT = 2183
server.1 =本地主机:2888:3888
server.2 =本地主机:2889:3889
server.3 =本地主机:2890:3890

  • 由于每个文件都有dataDir,我创建了文件夹为

c:/ opt / zookeeper / data c:/ opt / zookeeper / data2 c:/ opt / zookeeper / data3

还在上面的每个文件夹中创建了myid文件,编号分别为1,2,3 . 现在,每当我尝试启动服务器为 c:\opt\zookeeper\bin>zkServer.cmd 时,它都会抛出错误

无法在选举地址localhost / 127.0.0.1打开通道2:3889无法在选举地址localhost / 127.0.0.1打开通道3:3890 java.net.ConnectException:连接被拒绝:连接

看起来服务器没有启动,但我如何平行启动这些服务器?或者我必须使用任何其他方法 .

3 回答

  • 1

    因为默认情况下,zkEnv.cmd将使用zoo.cfg作为默认配置文件 . 如果执行命令 c:\opt\zookeeper\bin>zkServer.cmd ,则只有一个实例启动配置zoo.cfg

    所以如果你想启动三个实例:

    • 要么你复制三个zookeeper包,每个都有自己的zoo.cfg,并为每个 c:\opt\zookeeper1\bin>zkServer.cmdc:\opt\zookeeper2\bin>zkServer.cmdc:\opt\zookeeper3\bin>zkServer.cmd 执行以下命令

    • 或者你可以修改zkEnv.cmd,并使其接受参数作为配置文件,你可以执行 zkServer.cmd ../conf/zoo.cfgzkServer.cmd ../conf/zoo2.cfgzkServer.cmd ../conf/zoo3.cfg

    对于备选#2,您还需要更新log4j配置,因此每个实例可以有不同的日志文件,所以只需复制3个文件夹,然后修改每个zoo.cfg

    检查代码:

    zkEnv.cmd

    设置ZOOCFG =%ZOOCFGDIR%\ zoo.cfg

  • 2

    谷歌有答案
    enter image description here

    你可以按照detail instruction,我无法复制/粘贴整篇文章,因此附上了图片

  • 0

    您可能没有在所有zookeeper实例的dataDir中创建myid文件 .
    为所有zookeeper实例创建此文件,并为第一个实例写入相应的服务器ID,例如1,第二个实例为2,第三个实例为3 .
    保存所有文件并首先重新启动所有三个实例,然后检查其状态 .

相关问题