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也是非常重要的(在上面的主从复制示例中,在单个主机上运行,你仍然需要三个配置文件)。

Zookeeper学习记录(二):使用以及配置的更多相关文章

  1. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

  2. ZooKeeper学习笔记二:API基本使用

    Grey ZooKeeper学习笔记二:API基本使用 准备工作 搭建一个zk集群,参考ZooKeeper学习笔记一:集群搭建. 确保项目可以访问集群的每个节点 新建一个基于jdk1.8的maven项 ...

  3. Material Calendar View 学习记录(二)

    Material Calendar View 学习记录(二) github link: material-calendarview; 在学习记录一中简单翻译了该开源项目的README.md文档.接下来 ...

  4. JavaScript学习记录二

    title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  5. 2.VUE前端框架学习记录二

    VUE前端框架学习记录二:Vue核心基础2(完结)文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baid ...

  6. zookeeper学习记录第二篇-----安装、配置、启动

    搭建zk集群,起码保证3台虚拟机的配置,本人使用的虚拟机环境为wm14+centos7+jdk1.8 下载地址 zk的tar包下载地址:http://mirror.bit.edu.cn/apache/ ...

  7. Spring学习记录(二)---容器和bean属性配置

    下载spring包,在eclipse搭建spring环境. 这步我在eclipse中无法导入包,看网上的: http://sishuok.(和谐)com/forum/blogPost/list/242 ...

  8. ELK学习记录二 :elasticsearch、logstash及kibana的安装与配置

    注意事项: 1.ELK版本要求5.X以上,本人使用版本:elasticsearch-6.0.0.kibana-6.0.0-linux-x86_64.logstash-6.0.0.tar 2.Elast ...

  9. (转)zookeeper学习记录--附browser

    转自:http://agapple.iteye.com/blog/1111377 背景 前段时间看了S4流计算引擎,里面使用到了zookeeper进行集群管理,所以也就花了点时间研究了下zookeep ...

随机推荐

  1. mysql rowid实现

    ) a, b b表是数据表

  2. Druid的Segment Balance及其代价计算函数分析

    Balance $Cost(X, Y) $ $$ J_\alpha(x) = \sum_{m=0}^\infty \frac{(-1)^m}{m! \Gamma (m + \alpha + 1)} { ...

  3. poj2528 Mayor's posters【线段树】

    The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign h ...

  4. POJ 3580 - SuperMemo - [伸展树splay]

    题目链接:http://poj.org/problem?id=3580 Your friend, Jackson is invited to a TV show called SuperMemo in ...

  5. UVA - 11624 Fire! bfs 地图与人一步一步先后搜/搜一次打表好了再搜一次

    UVA - 11624 题意:joe在一个迷宫里,迷宫的一些部分着火了,火势会向周围四个方向蔓延,joe可以向四个方向移动.火与人的速度都是1格/1秒,问j能否逃出迷宫,若能输出最小时间. 题解:先考 ...

  6. CodeForces - 586C Gennady the Dentist 模拟(数学建模的感觉)

    http://codeforces.com/problemset/problem/586/C 题意:1~n个孩子排成一排看病.有这么一个模型:孩子听到前面的哭声自信心就会减弱:第i个孩子看病时会发出v ...

  7. PHP之curl扩展

    curl抓取远程文件 curl_init(); curl_setopt(); curl_exec(); curl_close(); 参数: //是curl收到HTTP response中的set-co ...

  8. 【mlflow】执行import mlflow 报错:ImportError: No module named 'pkg_resources'

    命令行运行 python -c “import mlflow” 的时候报错: ImportError: No module named 'pkg_resources' 结果发现是因为本地有一个文件夹叫 ...

  9. 【PyQt5-Qt Designer】QComboBox(下拉列表框) 使用模板

    import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * ###### ...

  10. Chart控件的使用实例

    ChartTest.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&quo ...