ZooKeeper入门实战教程(二)-安装和使用(单机和集群环境)

1、下载

首先我们下载最新稳定版本的zookeeper

http://apache.fayea.com/zookeeper/stable/

2、解压

下载完成后,我们解开压缩包

3、创建配置文件

解压后的路径下找到conf文件夹,进入conf文件夹复制zoo_sample.cfg,命名为zoo.cfg

  1.  
    # 每个tick的毫秒数。后面的initLimit和syncLimit都以tick为单位
  2.  
    tickTime=2000
  3.  
     
  4.  
    #初始化同步阶段时长
  5.  
    initLimit=10
  6.  
     
  7.  
    # 同步确认时长
  8.  
    syncLimit=5
  9.  
     
  10.  
    # 快照存储路径,不要使用/tmp。这里使用只是为了示例
  11.  
    dataDir=/tmp/zookeeper
  12.  
     
  13.  
    # 客户端端口好
  14.  
    clientPort=2181
  15.  
     
  16.  
    #可连接的client的最大数
  17.  
    #如果需要处理更多的clinet,请增加此数量
  18.  
    #maxClientCnxns=60
  19.  
    #
  20.  
    # Be sure to read the maintenance section of the
  21.  
    # administrator guide before turning on autopurge.
  22.  
    #
  23.  
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
  24.  
    #
  25.  
    # The number of snapshots to retain in dataDir
  26.  
    #autopurge.snapRetainCount=3
  27.  
    # Purge task interval in hours
  28.  
    # Set to "0" to disable auto purge feature
  29.  
    #autopurge.purgeInterval=1

对于学习来说,一般无需做修改。生产环境,需要修改dataDir。其他参数后续调优。

4、单机启动ZooKeeper

在ZooKeeper根目录下执行 bin/zkServer.sh start

  1.  
    ➜ zookeeper-3.4.12 bin/zkServer.sh start
  2.  
    ZooKeeper JMX enabled by default
  3.  
    Using config: /Users/yimingli/dev/tool/zookeeper-3.4.12/bin/../conf/zoo.cfg
  4.  
    Starting zookeeper ... STARTED

5、通过客户端连接ZooKeeper

➜  zookeeper-3.4.12 bin/zkCli.sh

6、通过客户端执行基本命令

1、创建znode,名为/my_test,携带数据testData

[zk: localhost:2181(CONNECTED) 0] create /my_test testData

2、查看znode信息

[zk: localhost:2181(CONNECTED) 2] get /my_test

返回如下:

  1.  
    testData
  2.  
    cZxid = 0x2e9
  3.  
    ctime = Mon Oct 29 10:50:46 CST 2018
  4.  
    mZxid = 0x2e9
  5.  
    mtime = Mon Oct 29 10:50:46 CST 2018
  6.  
    pZxid = 0x2e9
  7.  
    cversion = 0
  8.  
    dataVersion = 0
  9.  
    aclVersion = 0
  10.  
    ephemeralOwner = 0x0
  11.  
    dataLength = 8
  12.  
    numChildren = 0

3、修改znode数据

[zk: localhost:2181(CONNECTED) 3] set /my_test testDataV2

4、创建子znode

[zk: localhost:2181(CONNECTED) 0] create /my_test/tester1 testData

5、列出子znode

  1.  
    [zk: localhost:2181(CONNECTED) 5] ls /my_test
  2.  
    [tester1]

6、删除znode

有子节点的znode不能直接删除,否则会报错。

  1.  
    [zk: localhost:2181(CONNECTED) 6] delete /my_test
  2.  
    Node not empty: /my_test

我们删除/my_test/tester1。

[zk: localhost:2181(CONNECTED) 8] delete /my_test/tester1

再次查看该znode。

  1.  
    [zk: localhost:2181(CONNECTED) 9] get /my_test/tester1
  2.  
    Node does not exist: /my_test/tester1

已经被成功删除了。

7、集群配置和启动

我们配置和启动一个三台server的集群。

1、修改zoo.cfg文件

  1.  
    tickTime=2000
  2.  
    dataDir=/var/lib/zookeeper
  3.  
    clientPort=2181
  4.  
    initLimit=5
  5.  
    syncLimit=2
  6.  
    server.1=ip1:2888:3888
  7.  
    server.2=ip2:2888:3888
  8.  
    server.3=ip3:2888:3888

initLimit,zookeeper用来限制zookeeper服务器连接到leader的时长。

syncLimit,一个服务器多久在leader那里过期。

以上两种过期时间,单位都是tickTime,

本例initLimit时长为5个tickTime=5*2000ms=10秒

server.x列出了所有的zookeeper服务。集群启动它通过查看data下面的myid来知道自己是哪台服务器。

2888用来连接其它server。3888用来leader选举。

2、复制2份zookeeper到另外两台server上。

3、在配置的dataDir路径下创建myid文件,文件内容为对应自己的server.x的x值。比如zoo1这台sever,myid文件中内容为1.

4、启动每个zookeeper

5、查看本机状态,是leader还是follower

➜  zookeeper-3.4.12 bin/zkServer.sh status

至此我们已经把zookeeper集群启动起来了,并且做了验证,有一台是leader,另外两台是follower。

我们还可以做个实验,看zookeeper集群是否工作正常。

1、连接其中一台server,创建一个znode。

  1.  
    ➜ zookeeper-3.4.12 bin/zkCli.sh -server ip1:2181
  2.  
    [zk: ip1:2181(CONNECTED) 10] create /zk_test my_data

2、连接另外一台server,列出所有根节点下znode。

  1.  
    ➜ zookeeper-3.4.12 bin/zkCli.sh -server ip2:2181
  2.  
    [zk: ip2:2181(CONNECTED) 10] ls /

输出如下:

[zk_test]

可以看到集群已经能够正常工作,server间可以正常进行数据的复制。

客户端连接集群方法如下:

➜  zookeeper-3.4.12 bin/zkCli -server ip1:2181,ip2:2181,ip3:2181

客户端会自动随机选择集中一台连接。

小结:至此,ZooKeeper单机环境和集群环境的搭建讲解完成。

posted @ 2020-08-25 11:24  Mr陈二  阅读(165)  评论(0编辑  收藏  举报