zoukankan      html  css  js  c++  java
  • 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单机环境和集群环境的搭建讲解完成。

  • 相关阅读:
    阿里云重磅发布DMS数据库实验室 免费体验数据库引擎
    阿里云移动端播放器高级功能---直播时移
    图解SQL的inner join、left join、right join、full outer join、union、union all的区别
    索引覆盖分析
    case when 性能优化
    Eclipse断点种类
    Eclipse高效率开发技巧
    VS Code编辑器
    正则表达式
    JDBC编程之预编译SQL与防注入式攻击以及PreparedStatement的使用教程
  • 原文地址:https://www.cnblogs.com/chenhg/p/13558651.html
Copyright © 2011-2022 走看看