Zookeeper的安装配置和简单使用-yellowcong
折腾了一下zookeeper,Zookeeper是由Apache Handoop的子项目发展而来, ZooKeeper本质上是一个分布式的小文件存储系统,zookeeper仿照了google的chubby,因为google的chubby是不开源的。可以用于分布式系统的文件配置,服务发现,类似的还有Etcd,Etcd可以说是zookeeper的简化版本,类是的服务发现项目还有Consul、dooze
折腾了一下zookeeper,Zookeeper是由Apache Handoop的子项目发展而来, ZooKeeper本质上是一个分布式的小文件存储系统,zookeeper仿照了google的chubby,因为google的chubby是不开源的。可以用于分布式系统的文件配置,服务发现,类似的还有Etcd,Etcd可以说是zookeeper的简化版本,类是的服务发现项目还有Consul、doozer。Doozer在国外是比较火的,我们在做项目中, 比较常用的是Etcd,zookeeper和consul三个项目
下载安装
官方下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/,用户可以自行选择一个速度较快的镜像来下载即可。
#下载安装包,我下载的是3.4.10版本的
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
#解压zookeeper,就完成了安装操作
tar -zxvf zookeeper-3.4.10.tar.gz
目录结构
- bin目录
zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。其中,.sh是Linux环境下的脚本,.cmd是Windows环境下的脚本。 - conf目录
配置文件目录。zoo_sample.cfg为样例配置文件,需要修改为自己的名称,一般为zoo.cfg。log4j.properties为日志配置文件。 - lib
zk依赖的包。 - contrib目录
一些用于操作zk的工具包。 - recipes目录
zk某些用法的代码示例
各个目录下的文件,如下图
Zookeeper启动
启动前,需要添加一个zoo.cfg的配置文件,在Windows环境下,直接双击zkServer.cmd即可。在Linux环境下,进入bin目录,执行命令
#启动前,需要添加一个zoo.cfg的配置文件
cp zoo_sample.cfg zoo.cfg
#直接启动
./zkServer.sh start
#启动的时候,查看后台信息
./zkServer.sh start-foreground
#查看zookeeper 运行状态
ps -ef |grep zookeeper
这个启动中,报错了,说zoo.cfg配置文件没有找到的情况
正常启动
grep: /usr/local/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg: 没有那个文件或目录
配置文件没有,所以导致了启动报错的情况,启动前,需要添加一个zoo.cfg的配置文件
#启动前,需要添加一个zoo.cfg的配置文件
cp zoo_sample.cfg zoo.cfg
配置文件说明
需要将conf目录下的,conf目录下提供了配置的样例zoo_sample.cfg,要将zk运行起来,需要将其名称修改为zoo.cfg。
- tickTime
- 时长单位为毫秒,为zk使用的基本时间度量单位。例如:
- 1 、tickTime是客户端与zk服务端的心跳时间
- 2、 tickTime是客户端会话的超时时间。
- 3、 tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。
- 时长单位为毫秒,为zk使用的基本时间度量单位。例如:
- clientPort
- zk服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
- dataDir
- 无默认配置,必须配置,用于配置存储快照文件的目录。如果没有配置
- dataLogDir 那么事务日志也会存储在此目录。
- initLimit 用来配置客户端初始化,可以接受多少个心跳监测
- 比如配置的是10 ,10*tickTime (2000默认),默认20s没有连接上集群的配置,就不尝试了,连接失败
- syncLimit 用来配置Leader和follwer之间,允许多少个请求应答长度
- 比如默认配置是5、 5*tickTime (2000默认),表示默认10s钟,Leader和Follwer之间如果消息5次没有发送成功就不尝试了
- server.NUM=IP:port1:port2 (server.1=127.0.0.1:2222:2225)
- NUM表示本机为第几号服务器;IP为本机ip地址;
- port1为leader与follower通信端口;
- port2为参与竞选leader的通信端口
- 多个实例的端口配置不能重复
#zoo_sample.cfg配置文件
# 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=/tmp/zookeeper
#日志目录
dataLogDir=/xxxx/xx
# 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.NUM=IP:port1:port2 NUM表示本机为第几号服务器;IP为本机ip地址;
#port1为leader与follower通信端口;port2为参与竞选leader的通信端口
#多个实例的端口配置不能重复
server.1=127.0.0.1:2222:2225
server.2=127.0.0.1:3333:3335
server.3=127.0.0.1:4444:4445
登录zookeeper
./zkCli.sh -server 127.0.0.1:2181
拒绝连接
由于iptables使用的是2181端口,可能是端口没有开放问问题导致没有连接上
解决办法
#添加规则
iptables -I INPUT -p tcp -m tcp --dport 2181 -m state --state NEW,ESTABLISHED -j ACCEPT
#保存
service iptables save
#重启生效
service iptables restart
#登录成功后,会有提示是zk: xxx connected
./zkCli.sh -server 127.0.0.1:2181
简单操作
#创建节点
create /test test1
#获取节点数据
get /test
#更新节点
set /test test2
#删除节点
delete /test
#递归删除数据,将子目录的数据也删除掉
rmr /test
#查看节点
ls /
#查看输入过的命令
history
具体的api操作,说实话,功能还不少
使用ZooKeeper四字命令
zooKeeper 四字命令 | 功能描述 |
---|---|
conf | 输出相关服务配置的详细信息。 |
cons | 列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。 |
dump | 列出未经处理的会话和临时节点。 |
envi | 输出关于服务环境的详细信息(区别于 conf 命令)。 |
reqs | 列出未经处理的请求 |
ruok | 测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应。 |
stat | 输出关于性能和连接的客户端的列表。 |
wchs | 列出服务器 watch 的详细信息。 |
wchc | 通过 session 列出服务器 watch 的详细信息,它的输出是一个与watch 相关的会话的列表。 |
wchp | 通过路径列出服务器 watch 的详细信息。它输出一个与 session相关的路径。 |
使用命令的方法
#查看配置信息
echo conf|en localhost 2181
#查看连接信息
echo cons|en 192.168.1.1 2181
更多推荐
所有评论(0)