zoukankan      html  css  js  c++  java
  • Zookeeper学习记录(二):使用以及配置

      zookeeper已经介绍了它的原理设计以及实现方式,我们接下来介绍zookeeper的使用方法以及简单配置。

    下载

    获取Zookeeper的发布包,从Apache下载映像中下载一个最新稳定版本。

    单机操作

    安装Zookeeper的单机模式非常简单。服务包含在一个单独的压缩文件中,所以安装只需要创建配置文件。

    下载了Zookeeper稳定的发布版本之后,解压并进入根目录。

    启动Zookeeper之前需要一个配置文件。 conf/zoo.cfg是一个实例文件:

    1 tickTime=2000
    2 dataDir=/var/lib/zookeeper
    3 clientPort=2181

    这个文件本来可以叫任何名字,此时我们叫它conf/zoo.cfg。修改dataDir的值为一个已经存在的(空的开始)文件夹。下面是每个字段的含义:

    • tickTime:Zookeeper使用的以毫秒为单位的基本时间单位。它用于心跳机制和最小的session超时时间为两倍心跳时间。
    • dataDir:保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。
    • clientPort:监听客户端连接的端口。

    创建了配置文件之后,就可以启动Zookeeper了:

    1 bin/zkServer.sh start

    管理Zookeeper存储

    长时间运行的生产系统上的Zookeeper存储必须要在外部管理(datadir 和 logs),查看 管理员指南的maintenance部分获取更多信息。

    连接Zookeeper

    1 bin/zkCli.sh -server 127.0.0.1:2181

    一旦连接上了,你应对会看到这些信息:

    1 Connecting to localhost:2181
    2 log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
    3 log4j:WARN Please initialize the log4j system properly.
    4 Welcome to ZooKeeper!
    5 JLine support is enabled
    6 [zkshell: 0]

    从shell脚本输入help,可以获取客户端可执行的命令列表,如:

     1 [zkshell: 0] help
     2 ZooKeeper host:port cmd args
     3        get path [watch]
     4        ls path [watch]
     5        set path data [version]
     6        delquota [-n|-b] path
     7        quit
     8        printwatches on|off
     9        createpath data acl
    10        stat path [watch]
    11        listquota path
    12        history
    13        setAcl path acl
    14        getAcl path
    15        sync path
    16        redo cmdno
    17        addauth scheme auth
    18        delete path [version]
    19        setquota -n|-b val path

     第一,通过发行的列表命令开始,像ls :

    1 [zkshell: 8] ls /
    2 [zookeeper]

    下一步,通过运行create /zk_test my_data,创建一个新的znode。这将创建一个新的znode节点和一个相关联的字符串"my_data"。你应该看到:

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

    使用ls / 命令查看目录:

    1 [zkshell: 11] ls /
    2 [zookeeper, zk_test]

    注意 zk_test目录现在已经创建了。

    接下来,使用 get 命令验证数据是否与znode关联上了:

     1 [zkshell: 12] get /zk_test
     2 my_data
     3 cZxid = 5
     4 ctime = Fri Jun 05 13:57:06 PDT 2009
     5 mZxid = 5
     6 mtime = Fri Jun 05 13:57:06 PDT 2009
     7 pZxid = 5
     8 cversion = 0
     9 dataVersion = 0
    10 aclVersion = 0
    11 ephemeralOwner = 0
    12 dataLength = 7
    13 numChildren = 0

    我们可以是用set命令改变与zk_test关联的数据:

     1 [zkshell: 14] set /zk_test junk
     2 cZxid = 5
     3 ctime = Fri Jun 05 13:57:06 PDT 2009
     4 mZxid = 6
     5 mtime = Fri Jun 05 14:01:52 PDT 2009
     6 pZxid = 5
     7 cversion = 0
     8 dataVersion = 1
     9 aclVersion = 0
    10 ephemeralOwner = 0
    11 dataLength = 4
    12 numChildren = 0
    13 [zkshell: 15] get /zk_test
    14 junk
    15 cZxid = 5
    16 ctime = Fri Jun 05 13:57:06 PDT 2009
    17 mZxid = 6
    18 mtime = Fri Jun 05 14:01:52 PDT 2009
    19 pZxid = 5
    20 cversion = 0
    21 dataVersion = 1
    22 aclVersion = 0
    23 ephemeralOwner = 0
    24 dataLength = 4
    25 numChildren = 0

    最后,让我们delete节点:

    1 [zkshell: 16] delete /zk_test
    2 [zkshell: 17] ls /
    3 [zookeeper]
    4 [zkshell: 18]

    运行主从复制的Zookeeper

    运行Zookeeper的独立模式方便评估、开发和测试。但是在生产中,你要运行Zookeeper的主从复制模式。相同应用中服务器主从复制组叫做 quorum , 并且在主从复制模式中,在quorum中的所有服务器有相同的配置文件副本。

    注意:

    对于主从模式,三台服务器是最小的要求,并强烈建议有基数个服务器。如果你只有两台服务器,其中的一个故障的时候,没有足够的机器形成多数quorum。在本质上两台服务比单台服务更不稳定,因为有两个单点。

    配置文件和使用独立模式相似,但有一点点的区别,这是一个实例:

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

      新的条目,initLimit 是Zookeeper用它来限定quorum中的Zookeeper服务器连接到Leader的超时时间。syncLimit限制了一个服务器从Leader多长时间超时。

    使用这两种超时,你指定的时间单位使用tickTime.在这个例子中,initLimit的超时时间是5个标记号,2000毫秒一个标记,就是10秒。

    条目server.x列出了构成Zookeeper服务的服务器。当服务启动时,它通过查找data目录中的myid文件知道是哪个服务。这个myid个文件包含了服务编号,用ASCII.

      最后,注意每个服务器名称后面的两个端口号:"2888"和"3888"。服务器节点使用前面的端口连接到其他节点。这样的一个连接非常重要,以便于同事之间可以通讯,例如,对更新的顺序取得统一的意见。更具体的说,一个Zookeeper的服务器用这个端口连接follower到leader。当一个新的leader产生时,follower使用这个端口打开一个TCP连接,连接到leader。因为默认的leader选举也使用TCP。我们现在需要另一个端口用来leader选举。这是在服务器条目的第二个端口。

      注意:如果你想在一台机器上测试多台服务器,在服务器配置文件为每个server.x指定servername为localhost,和独有的quorum & leader选举端口(也就是 2888:3888, 2889:3889, 2890:3890在上面的示例中)。当然分开dataDir和不同的clientPort也是非常重要的(在上面的主从复制示例中,在单个主机上运行,你仍然需要三个配置文件)。

  • 相关阅读:
    mobileSelect学习
    使用qrcode生成二维码
    点点点右边有内容
    搜索框search
    input样式和修改
    art-template模板引擎高级使用
    Nodejs中的路径问题
    异步编程(回调函数,promise)
    在nodejs中操作数据库(MongoDB和MySQL为例)
    MongoDB数据库
  • 原文地址:https://www.cnblogs.com/wangb0402/p/6268418.html
Copyright © 2011-2022 走看看