Zookeeper依赖JDK
必须先安装JDK
cd /usr/local/src
tar -zxvf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 /usr/local/zookeeper
cd /usr/local/zookeeper
在目录下新建数据目录和日志目录
mkdir data
mkdir logs
在conf目录下新建zoo.cfg文件,写入以下内容保存:
tickTime=2000
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
clientPort=2181
进入bin目录,启动、停止、重启分和查看当前节点状态(包括集群中是何角色)分别执行:
cd /usr/local/zookeeper/bin
./zkServer.sh start
./zkServer.sh stop
./zkServer.sh restart
./zkServer.sh status
/usr/local/zookeeper/bin/zkServer.sh start
集群配置
1.在集群模式下,所有的zk进程可以使用相同的配置文件(是指各个zk进程部署在不同的机器上面),例如如下配置:
cd /usr/local/zookeeper/conf
vim zoo.cfg
tickTime
=2000
dataDir
= /usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
clientPort
=2181
initLimit
=5
syncLimit
=2server.1=192.168.3.4:2888:3888server.2=192.168.3.5:2888:3888server.3=192.168.3.6:2888:3888
集群配置文件详解
initLimit
ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。
当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间。
syncLimit
配置follower和leader之间发送消息,请求和应答的最大时间长度。
tickTime
tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒。
server.id=host:port1:port2
其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。
host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口。
dataDir
其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。myid文件的内容只有一行,且内容只能为1 - 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id
2.data/myid文件修改
在192.168.3.4机器上修改
echo '1' > /usr/local/zookeeper/data/myid
在192.168.3.5机器上修改
echo '2' > /usr/local/zookeeper/data/myid
在192.168.3.6机器上修改
echo '3' > /usr/local/zookeeper/data/myid
最后使用命令把三个zookeeper都启动即可,启动顺序随意没要求。
在192.168.3.4机器上
/usr/local/zookeeper/bin/zkServer.sh start
在192.168.3.5机器上
/usr/local/zookeeper/bin/zkServer.sh start
在192.168.3.6机器上
/usr/local/zookeeper/bin/zkServer.sh start
产生上述两条Waring信息是因为zookeeper服务的每个实例都拥有全局的配置信息,他们在启动的时候需要随时随地的进行leader选举,此时server1就需要和其他两个zookeeper实例进行通信,但是,另外两个zookeeper实例还没有启动起来,因此将会产生上述所示的提示信息。当我们用同样的方式启动server2和server3后就不会再有这样的警告信息了。
当三台服务器均成功启动后切换至server1/bin/目录下执行以下命令:
bash zkServer.sh status
终端出现以下提示信息:
说明server1服务器此时处于follower模式,切换至server2/bin目录下执行相同的命令,返回如下结果:
说明server2被选举为leader。
server3也可以看到是
follower
可以手动停止一台的Zookeeper,看leader变化情况
目录功能
bin目录 :zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。其中,.sh是Linux环境下的脚本,.cmd是Windows环境下的脚本。
conf目录 :配置文件目录。zoo_sample.cfg为样例配置文件,需要修改为自己的名称,一般为zoo.cfg。log4j.properties为日志配置文件。
lib 目录:zk依赖的包。
contrib目录 :一些用于操作zk的工具包。
recipes目录 :zk某些用法的代码示例