zookeeper第三天:

下载

下载zookeeper地址:https://www.apache.org/dyn/closer.cgi/zookeeper/

我下载的是zookeeper-3.4.10。
下载之后解压到目录下。我的目录:

E:\zookeeper-3.4.10

配置文件

打开conf文件夹
zookeeper第三天:_第1张图片
我们要根据zoo_sample.cfg这个模板文件,可以重命名为zoo.cfg,也可以新建一个zoo.cfg文件。当启动zookeeper的时候,会加载zoo.cfg文件。
文件中的参数是什么作用,在我的上篇文章中有介绍
下面我们配置zoo.cfg文件。你可以按照样板的例子进行复制,也可以像我一样懒,极简模式:

tickTime=2000    
dataDir=E:/zookeeper-3.4.10/zookeeper/data  
dataLogDir=E:/zookeeper-3.4.10/zookeeper/logs
clientPort=4180 

此时你已经完成了单机模式的创建。
运行E:\zookeeper-3.4.10\bin下的zkServer.cmd,此时zookeeper成功运行。

如果想配置伪集群的话,那么你还需要以下步骤
1.创建.cfg文件
打开conf文件夹,复制zoo_sample.cfg三份,名分别为:zoo1.cfg、zoo2.cfg、zoo3.cfg。
这个zoo1.cfg的配置文件。2和3只是在clientPort地方不同,依次 + 1 就好。

# 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.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=E:\\zookeeper-3.4.10\\zookeeper\\data\\1
dataLogDir=E:\\zookeeper-3.4.10\\zookeeper\\logs\\1
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389

2.添加data和log文件夹
这是我的目录结构:
zookeeper第三天:_第2张图片
在zookeeper目录下创建名为zookeeper的文件夹,在该文件夹内创建名为data和log的文件夹。在其中创建名为1、2、3的文件夹。
最重要的:分别在data\1,data\2,data\3下创建文件 myid(去掉后缀名),并分别添加内容 1、2、3。
zookeeper第三天:_第3张图片
3.添加启动文件
在E:\zookeeper-3.4.10\bin文件夹下复制zkServer.cmd三份,名为zkServer-1.cmd、zkServer-2.cmd、zkServer-3.cmd。更改其中的配置内容。
这是我zkServer-1.cmd的配置内容。2和3只需要更改其中的zoo1.cfg为zoo2.cfg,zoo3.cfg就好。

@echo off
REM Licensed to the Apache Software Foundation (ASF) under one or more
REM contributor license agreements.  See the NOTICE file distributed with
REM this work for additional information regarding copyright ownership.
REM The ASF licenses this file to You under the Apache License, Version 2.0
REM (the "License"); you may not use this file except in compliance with
REM the License.  You may obtain a copy of the License at
REM
REM     http://www.apache.org/licenses/LICENSE-2.0
REM
REM Unless required by applicable law or agreed to in writing, software
REM distributed under the License is distributed on an "AS IS" BASIS,
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
REM See the License for the specific language governing permissions and
REM limitations under the License.

setlocal
call "%~dp0zkEnv.cmd"

set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
set ZOOCFG=..\conf\zoo1.cfg
echo on
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*

endlocal

OK,这个时候你可以启动zkServer-1.cmd,zkServer-2.cmd,zkServer-3.cmd了。
启动第一个时候会报错:
zookeeper第三天:_第4张图片
这是因为,zookeeper集群采用的是选举算法,当集群中的其他节点还没有启动的时候,选举算法就会出现异常,因为至少三台能选举出一个leader,2n+1台机器,可以选举n个leader,当全部启动起来后,就不会报异常,所以上述的报错是可以忽略的,尽管启动这三个节点即可。
这样在一台机器上搭建了zookeeper伪集群,并且启动成功。

遇见错误:

1:运行zkServer.cmd闪退
2:运行失败,提示myid文件不存在。
这两个问题都需要仔细检查zoo1.cfg中data以及log的文件路径是否正确。我也是试了很多次才成功的。

你可能感兴趣的:(zookeeper,java,zookeeper入门)