当前位置: 代码迷 >> 综合 >> zookeeper读书笔记二 zookeeper环境搭建
  详细解决方案

zookeeper读书笔记二 zookeeper环境搭建

热度:80   发布时间:2023-10-13 18:31:20.0

1、启动单台zookeeper

  • 创建conf/zoo.cfg文件,并如下配置
//单位ms, zookeeper的心跳时间,session timeout这个时间的的2倍
tickTime=2000//持久化快照文件的保存目录,如果transaction log保存的目录没有指定,也会保存在这个目录中
dataDir=/var/lib/zookeeper//客户端连接端口
clientPort=2181

tickTime:  Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位,最小的session过期时间就是tickTime的两倍。

  • 启动zookeeper
bin/zkServer.sh start

2、操作zookeeper

  • 连接zookeeper
$ bin/zkCli.sh -server 127.0.0.1:2181
  • 获取帮助信息

[zkshell: 0] help
ZooKeeper host:port cmd argsget path [watch]ls path [watch]set path data [version]delquota [-n|-b] pathquitprintwatches on|offcreate path data aclstat path [watch]listquota pathhistorysetAcl path aclgetAcl pathsync pathredo cmdnoaddauth scheme authdelete path [version]deleteall pathsetquota -n|-b val path
  • 常用命令

//zookeeper是预留的目录
[zkshell: 8] ls /
[zookeeper]

创建znode 

[zkshell: 9] create /zk_test my_data
Created /zk_test

查询znode的数据

[zkshell: 12] get /zk_test
my_data
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 5
mtime = Fri Jun 05 13:57:06 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0
dataLength = 7
numChildren = 0

修改znode的数据

[zkshell: 14] set /zk_test junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0
[zkshell: 15] get /zk_test
junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0

 删除znode

[zkshell: 16] delete /zk_test
[zkshell: 17] ls /
[zookeeper]
[zkshell: 18]

3、启动一个zookeeper集群

  • 注意:一个集群至少要求三台机器,因为一个包含n台机器的集群提供服务的最低要求是至少有n/2 + 1台机器是启动的。所以一个只有2台机器的集群,任何一台机器挂掉,整个集群就会直接挂掉,可用性还不如单台zookeeper。所以最好集群包含的机器个数是奇数,一个有2n+1台机器的集群,最多可以允许有n台机器挂掉。
  • 建立/conf/zoo.cfg文件,并配置如下
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181//集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)。
此配置表示,允许 follower (相对于 leader 而言的“客户端”)连接 并同步到  leader 的初始化连接时间,它以 tickTime 的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败。
如果在设定的时间段内,半数以上的跟随者未能完成同步,领导者便会宣布放弃领导地位,进行另一次的领导选举。如果zk集群环境数量确实很大,同步数据的时间会变长,因此这种情况下可以适当调大该参数。默认为10。
initLimit=5//集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)。
此配置表示, leader 与 follower 之间发送消息,请求 和 应答 时间长度。如果 follower 在设置的时间内不能与leader 进行通信,那么此 follower 将被丢弃。所有关联到这个跟随者的客户端将连接到另外一个follower。
syncLimit=2//下面三行表示这个集群包含的机器信息,格式server.x=ip:cport:leaderElectPort,
其中 x表示机器的id只要不重复即可。
cport表示follower连接leader的端口,每当新的leader出现时,follower就会使用连接leader的这个端口。
leaderElectPort表示选举leader的端口
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

 

  • 在dataDir配置的目录下建立myid文件,文件内容就是server.x中的x。机器启动的时候需要知道自己是配置文件中的哪台机器,就会去读取myid文件中的内容确定。

 

 

  相关解决方案