我可以在我的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:/opt/zookeeper/data clientPort=2181 server.1=localhost:2888:3888 server.2=localhost:2889:3889 server.3=localhost:2890:3890
tickTime=2000 initLimit=10 syncLimit=5 dataDir=c:/opt/zookeeper/data2 clientPort=2182 server.1=localhost:2888:3888 server.2=localhost:2889:3889 server.3=localhost:2890:3890
tickTime=2000 initLimit=10 syncLimit=5 dataDir=c:/opt/zookeeper/data3 clientPort=2183 server.1=localhost:2888:3888 server.2=localhost:2889:3889 server.3=localhost:2890:3890
c:/ opt / zookeeper / data
c:/ opt / zookeeper / data2
C:/选择/动物园管理员/ DATA3
还在上面每个文件夹中创建了myid文件,编号分别为1,2,3。
现在每当我尝试以c:\opt\zookeeper\bin>zkServer.cmd
启动服务器时
它正在抛出一个错误
无法在选举地址localhost / 127.0.0.1:3889
打开频道2无法在选举地址localhost / 127.0.0.1:3890
打开频道3java.net.ConnectException:连接被拒绝:连接
看起来服务器没有启动,但我如何平行启动这些服务器?或者我必须使用任何其他方法。
答案 0 :(得分:2)
因为默认情况下,zkEnv.cmd将使用zoo.cfg作为默认配置文件。如果执行命令c:\opt\zookeeper\bin>zkServer.cmd
,则只有一个实例启动配置zoo.cfg
所以如果你想启动三个实例:
c:\opt\zookeeper1\bin>zkServer.cmd
,c:\opt\zookeeper2\bin>zkServer.cmd
,c:\opt\zookeeper3\bin>zkServer.cmd
zkServer.cmd ../conf/zoo.cfg
,zkServer.cmd ../conf/zoo2.cfg
,zkServer.cmd ../conf/zoo3.cfg
对于备选#2,您还需要更新log4j配置,这样您就可以为每个实例提供不同的日志文件,所以只需复制3个文件夹,然后修改每个zoo.cfg
检查代码:
zkEnv.cmd
设置ZOOCFG =%ZOOCFGDIR%\ zoo.cfg
答案 1 :(得分:1)
你可以按照detail instruction,我无法复制/粘贴整篇文章,因此附上了图片
答案 2 :(得分:0)
可能您还没有在所有zookeeper实例的dataDir中创建myid文件。
为所有zookeeper实例创建此文件并写入相应的服务器ID,例如1表示第一个实例,2表示第二个实例,3表示第三个实例。
保存所有文件,然后首先重新启动所有三个实例,然后检查它们的状态。