Zookeeper学习记录(二):使用以及配置

来源:互联网 发布:c十十语言范磊视频教程 编辑:程序博客网 时间:2024/06/08 18:33

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

下载

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

单机操作

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

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

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

1 tickTime=20002 dataDir=/var/lib/zookeeper3 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:21812 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 enabled6 [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 acl10        stat path [watch]11        listquota path12        history13        setAcl path acl14        getAcl path15        sync path16        redo cmdno17        addauth scheme auth18        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_data2 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 = 010 aclVersion = 011 ephemeralOwner = 012 dataLength = 713 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 = 010 ephemeralOwner = 011 dataLength = 412 numChildren = 013 [zkshell: 15] get /zk_test14 junk15 cZxid = 516 ctime = Fri Jun 05 13:57:06 PDT 200917 mZxid = 618 mtime = Fri Jun 05 14:01:52 PDT 200919 pZxid = 520 cversion = 021 dataVersion = 122 aclVersion = 023 ephemeralOwner = 024 dataLength = 425 numChildren = 0
复制代码

最后,让我们delete节点:

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

运行主从复制的Zookeeper

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

注意:

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

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

复制代码
1 tickTime=20002 dataDir=/var/lib/zookeeper3 clientPort=21814 initLimit=55 syncLimit=26 server.1=zoo1:2888:38887 server.2=zoo2:2888:38888 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也是非常重要的(在上面的主从复制示例中,在单个主机上运行,你仍然需要三个配置文件)。

0 0
原创粉丝点击