我可以在我的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 回答
因为默认情况下,zkEnv.cmd将使用zoo.cfg作为默认配置文件 . 如果执行命令
c:\opt\zookeeper\bin>zkServer.cmd
,则只有一个实例启动配置zoo.cfg所以如果你想启动三个实例:
要么你复制三个zookeeper包,每个都有自己的zoo.cfg,并为每个
c:\opt\zookeeper1\bin>zkServer.cmd
,c:\opt\zookeeper2\bin>zkServer.cmd
,c:\opt\zookeeper3\bin>zkServer.cmd
执行以下命令或者你可以修改zkEnv.cmd,并使其接受参数作为配置文件,你可以执行
zkServer.cmd ../conf/zoo.cfg
,zkServer.cmd ../conf/zoo2.cfg
,zkServer.cmd ../conf/zoo3.cfg
对于备选#2,您还需要更新log4j配置,因此每个实例可以有不同的日志文件,所以只需复制3个文件夹,然后修改每个zoo.cfg
检查代码:
zkEnv.cmd
谷歌有答案
你可以按照detail instruction,我无法复制/粘贴整篇文章,因此附上了图片
您可能没有在所有zookeeper实例的dataDir中创建myid文件 .
为所有zookeeper实例创建此文件,并为第一个实例写入相应的服务器ID,例如1,第二个实例为2,第三个实例为3 .
保存所有文件并首先重新启动所有三个实例,然后检查其状态 .