系统要求

支持的平台

ZooKeeper由多个组件组成。某些组件得到广泛支持,其他组件仅在较小的平台上受支持。

  • 客户端是Java客户端库,应用程序使用它连接到ZooKeeper集合。
  • Server是在ZooKeeper集合节点上运行的Java服务器。
  • Native Client是一个用C实现的客户端,类似于Java客户端,应用程序使用它连接到ZooKeeper集合。
  • Contrib是指多个可选的附加组件。

以下矩阵描述了为在不同操作系统平台上运行每个组件而提交的支持级别。

支持矩阵
操作系统 客户 服务器 原生客户端 的Contrib
GNU / Linux的 开发和生产 开发和生产 开发和生产 开发和生产
的Solaris 开发和生产 开发和生产 不支持 不支持
FreeBSD的 开发和生产 开发和生产 不支持 不支持
视窗 开发和生产 开发和生产 不支持 不支持
Mac OS X. 仅限发展 仅限发展 不支持 不支持

对于矩阵中未明确提及的任何操作系统,组件可能有效,也可能无效。ZooKeeper社区将修复针对其他平台报告的明显错误,但没有完全支持。

必备软件

ZooKeeper在Java中运行,1.7或更高版本(JDK 7或更高版本,FreeBSD支持需要openjdk7)。它作为ZooKeeper服务器的集合运行。三个ZooKeeper服务器是整体的最小建议大小,我们还建议它们在不同的机器上运行。在Yahoo!,ZooKeeper通常部署在专用的RHEL盒子上,具有双核处理器,2GB RAM和80GB IDE硬盘。

独立操作(单机)

在独立模式下设置ZooKeeper服务器非常简单。服务器包含在单个JAR文件中,因此安装包括创建配置。

下载完一个稳定的ZooKeeper版本后,将其解压缩并cd到root

要启动ZooKeeper,您需要一个配置文件。这是一个示例,在conf / zoo.cfg中创建它:

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181

这个文件可以直接被引用,但为了这个目的,请将其命名为conf / zoo.cfg。更改dataDir的值以指定现有(从空开始)目录。以下是每个字段的含义:

  • tickTime:ZooKeeper使用的基本时间单位(以毫秒为单位)。它用于做心跳,最小会话超时将是tickTime的两倍。

  • dataDir:存储内存数据库快照的位置,除非另有说明,否则为数据库更新的事务日志。

  • clientPort:侦听客户端连接的端口

现在您已创建配置文件,您可以启动ZooKeeper:

bin/zkServer.sh start

ZooKeeper使用log4j记录消息 - 更多详细信息,请参阅Programmer's Guide 的Logging部分。您将看到日志消息进入控制台(默认)和/或日志文件,具体取决于log4j配置。

此处列出的步骤在独立模式下运行ZooKeeper。没有复制,因此如果ZooKeeper进程失败,服务将关闭。这适用于大多数开发情况,但要在复制模式下运行ZooKeeper,请参阅运行Replicated ZooKeeper

管理ZooKeeper存储

对于长期运行的生产系统,必须在外部管理ZooKeeper存储(dataDir和logs)。有关详细信息,请参阅维护部分。

连接到ZooKeeper

$ bin/zkCli.sh -server 127.0.0.1:2181

这使您可以执行简单的文件操作。

连接后,您应该看到类似的内容:

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

在shell中,键入help以获取可从客户端执行的命令列表,如:

[zkshell: 0] help
ZooKeeper host:port cmd args
get path [watch]
ls path [watch]
set path data [version]
delquota [-n|-b] path
quit
printwatches on|off
create path data acl
stat path [watch]
listquota path
history
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
deleteall path
setquota -n|-b val path

从这里,您可以尝试一些简单的命令来感受这个简单的命令行界面。首先,从发出list命令开始,如ls:,产生:

[zkshell: 8] ls /
[zookeeper]

接下来,通过运行创建一个新的znode create /zk_test my_data。这将创建一个新的znode并将字符串“my_data”与节点相关联。你应该看到:

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

发出另一个ls /命令以查看目录的外观:

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

请注意,现在已创建zk_test目录。

接下来,通过运行get命令验证数据是否与znode相关联,如下所示:

[zkshell: 12] get /zk_test
my_data
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 5
mtime = Fri Jun 05 13:57:06 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0
dataLength = 7
numChildren = 0

我们可以通过发出set命令来更改与zk_test关联的数据,如下所示:

[zkshell: 14] set /zk_test junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0
[zkshell: 15] get /zk_test
junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0

(注意我们get在设置数据之后做了一次,确实改变了。

最后,让我们delete通过发出以下节点:

[zkshell: 16] delete /zk_test
[zkshell: 17] ls /
[zookeeper]
[zkshell: 18]

这就是现在。要了解更多信息,请继续阅读本文档的其余部分,并参阅“ 程序员指南”

编程到ZooKeeper

ZooKeeper具有Java绑定和C绑定。它们在功能上是等价的。C绑定有两种变体:单线程和多线程。这些仅在消息传递循环的完成方式上有所不同。有关更多信息,请参阅ZooKeeper程序员指南中编程示例,了解使用不同API的示例代码。

运行复制的ZooKeeper(集群)

在独立模式下运行ZooKeeper便于评估,开发和测试。但在生产中,您应该以复制模式运行ZooKeeper。同一应用程序中的复制服务器组称为仲裁,在复制模式下,仲裁中的所有服务器都具有相同配置文件的副本。

注意

对于复制模式,至少需要三台服务器,强烈建议您使用奇数个服务器。如果您只有两台服务器,那么您处于这样的情况:如果其中一台服务器出现故障,则没有足够的机器来构成多数仲裁。两台服务器本质上不如单一服务器稳定,因为有两个单点故障。

复制模式所需的conf / zoo.cfg文件类似于独立模式中使用的文件,但有一些差异。这是一个例子:

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

新条目initLimit是暂停ZooKeeper用于限制仲裁中ZooKeeper服务器连接到领导者的时间长度。条目syncLimit限制服务器与领导者的过期时间。

使用这两个超时,您可以使用tickTime指定时间单位。在这个例子中,initLimit的超时是2000个milleseconds(滴答)或10秒的5个滴答。

表单server.X的条目列出构成ZooKeeper服务的服务器。当服务器启动时,它通过在数据目录中查找文件myid来知道它是哪个服务器。该文件包含服务器编号,ASCII格式。

最后,记下每个服务器名称后面的两个端口号:“2888”和“3888”。对等方使用以前的端口连接到其他对等方。这种连接是必要的,以便对等方可以进行通信,例如,就更新的顺序达成一致。更具体地说,ZooKeeper服务器使用此端口将关注者连接到领导者。当新的领导者出现时,跟随者使用此端口打开与领导者的TCP连接。由于默认的领导者选举也使用TCP,我们目前需要另一个端口进行领导者选举。这是服务器条目中的第二个端口。

 设置日志路径

修改 bin/zkEnv.sh 文件

依次启动后通过查看状态可见

注意

如果要在一台计算机上测试多个服务器,请将servername指定为localhost,并为该服务器中的每个server.X 指定唯一的仲裁和领导者选举端口(即上例中的2888:3888,2889:3889,2890:3890)。配置文件。当然,单独的_dataDir_s和distinct _clientPort_s也是必需的(在上面复制的例子中,在单个localhost上运行,你仍然会有三个配置文件)。

请注意,在一台计算机上设置多台服务器不会产生任何冗余。如果发生导致机器死亡的事情,所有zookeeper服务器都将脱机。完全冗余要求每台服务器都有自己的机器。它必须是完全独立的物理服务器。同一物理主机上的多个虚拟机仍然容易受到该主机的完全故障的影响。

其他优化

还有一些其他配置参数可以大大提高性能:

  • 要在更新时获得较低的延迟,请务必拥有专用的事务日志目录。默认情况下,事务日志与数据快照和myid文件放在同一目录中。dataLogDir参数指示用于事务日志的不同目录。

安装zkui

1.下载项目https://github.com/DeemOpen/zkui

2.使用maven编译jar包

3.上传生成的两个jar包中的 zkui-2.0-SNAPSHOT-jar-with-dependencies.jar,和最外层目录下的文件 config.cfg 到服务器,这两个文件要放在一起。(或者直接在linux上打包需要安装maven环境)

4.直接正常启动 java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar

5.修改config.cfg文件

6.启动完成后,直接通过浏览器 ip:9090 查看对应ip下的zk情况

效果图

linux安装zookeeper,安装zkui,zookeeper可视化的更多相关文章

  1. 在 Linux 多节点安装配置 Apache Zookeeper 分布式集群

    规划: 三台物理服务器就形成了(法定人数).对于高可用性集群,您可以使用高于3的任何奇数.例如,如果设置5台服务器,则集群可以处理两个故障节点等. 物理服务器需要开启的端口 2888 , 3888 和 ...

  2. Linux Zookeeper 安装, 带视频

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 面试必备+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并发 ...

  3. Linux下zookeeper安装及运行

    zookeeper下载地址:http://archive.apache.org/dist/zookeeper/ 安装 第一步:安装 jdk(此步省略,我给大家提供的镜像已经安装好JDK) 第二步:把 ...

  4. Linux环境ZooKeeper安装配置及使用

    Linux环境ZooKeeper安装配置及使用 一.ZooKeeper 1.1 zookeeper作用 1.2 zookeeper角色 1.3 zookeeper功能 二.集群规划 三.安装流程 (1 ...

  5. Linux系统Ubuntu安装zookeeper

    1. 下载zookeeper二进制安装包 下载地址:http://apache.dataguru.cn/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz ...

  6. Linux环境下安装mysql(远程连接),zookeeper,java,tomcat.

    环境阿里云centos7.5 64位 + FinalShell + Navicat Permium 12 用到的压缩包(版本看后缀) 注意:安装均在/usr/local目录下,下面代码中#号不要复制上 ...

  7. linux 上zookeeper安装

    一.zookeeper 的安装及配置 .Zookeeper下载 wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.3.6/zooke ...

  8. Zookeeper在linux上的安装

    1:进入 cd  /usr/local目录下 2:创建zookeeper目录  midir zookeeper 3:将压缩包复制到zookeeper目录下  cp /root/zookeeper/zo ...

  9. 物联网架构成长之路(27)-Docker练习之Zookeeper安装

    0. 前言 准备了解一下消息队列MQ,对比了一些开源的中间件,最后选择Kafka作为以后用到的消息队列,消息队列的应用场景及Kafka与其他消息队列的优缺点这里就不细说了,具体的可以参考其他博客说明. ...

随机推荐

  1. ABAP DEMO 下拉框

    效果展示: *&---------------------------------------------------------------------* *& Report YCX ...

  2. 常用OID(SNMP)

    系统参数(1.3.6.1.2.1.1) OID 描述 备注 请求方式 .1.3.6.1.2.1.1.1.0 获取系统基本信息 SysDesc GET .1.3.6.1.2.1.1.3.0 监控时间 s ...

  3. 动态调用webservice时 ServiceDescriptionImporter类在vs2010无法引用的解决方法 (转)

    本文转自:http://blog.csdn.net/limlimlim/article/details/8647038 [导读]ServiceDescriptionImporter是创建Web Ser ...

  4. Linux使用sleep进行延迟实验

    sleep命令可以延迟脚本执行一段时间(以秒为单位).下面的命令使用tput和sleep从0开始计时到40秒: #/bin/bash echo Count: tput sc # 循环40s for c ...

  5. 【Leetcode_easy】1037. Valid Boomerang

    problem 1037. Valid Boomerang 参考 1. Leetcode_easy_1037. Valid Boomerang; 完

  6. APP排查内存泄漏最简单和直观的方法

        内存泄漏无疑会严重影响用户体验,一些本应该废弃的资源和对象无法被释放,导致手机内存的浪费,app使用的卡顿,那么如何排查内存泄漏呢? 当然,首先我们有google的官方文档可以参考,大部分博客 ...

  7. Python之可变参数,*参数,**参数,以及传入*参数,进行解包

    1.定义了一个需要两个参数的函数 def print_str(first, second): print first print second if __name__ == "__main_ ...

  8. mysql 排除系统库的全部备份

    前言: 有些时候,我们要对数据库进行备份的时候,由于GTID的缘故,导出系统库后,再次导入其他环境的数据库时,就会出问题.所以,我们需要排掉一些系统库,排除GTID对于数据库迁移的影响.   方法: ...

  9. Duration和Period的区别--通俗易懂

    在jdk1.8以后,对表示日期时间的类型进行了重新分类,这里出现了2个新的类,Duraction 和Period Duraction表示:时间的区间,用来度量秒和纳秒之间的时间值 Period表示:一 ...

  10. c++ 编译 curl 报错 数组‘__curl_rule_01__’的大小为负 解决方法

    背景:在原有的项目GCC编译环境下(arm-linux 32位),增加x86-linux 64位的编译环境,编译curl库的时候发生错误. 其他:编译服务器为64位Centos 编译错误提示 /inc ...