ZooKeeper入门教程二在单机和集群环境下的安装搭建及使用

 更新时间:2022年01月28日 14:44:31   作者:爱码叔(稀有气体)  
本文是ZooKeeper入门系列教程,涵盖ZooKeeper的安装使及单机集群环境搭建,通过实例和大量图表,结合实战,帮助学习者理解和运用,有需要的朋友可以借鉴参考下

通过本篇学习掌握zookeeper环境的搭建,为后续学习做好准备

1、下载

首先我们下载最新稳定版本的zookeeper

https://www.jb51.net/softs/578345.html

2、解压

下载完成后,我们解开压缩包

3、创建配置文件

解压后的路径下找到conf文件夹,进入conf文件夹复制zoo_sample.cfg,命名为zoo.cfg

# 每个tick的毫秒数。后面的initLimit和syncLimit都以tick为单位
tickTime=2000
#初始化同步阶段时长
initLimit=10
# 同步确认时长
syncLimit=5
# 快照存储路径,不要使用/tmp。这里使用只是为了示例
dataDir=/tmp/zookeeper
# 客户端端口好
clientPort=2181

#可连接的client的最大数
#如果需要处理更多的clinet,请增加此数量
#maxClientCnxns=60
# Be sure to read the maintenance section of the 
#
# administrator guide before turning on autopurge.
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

对于学习来说,一般无需做修改。生产环境,需要修改dataDir。其他参数后续调优。

4、单机启动ZooKeeper

在ZooKeeper根目录下执行 bin/zkServer.sh start

➜  zookeeper-3.4.12 bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /Users/yimingli/dev/tool/zookeeper-3.4.12/bin/../conf/zoo.cfg
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

返回如下:

testData
cZxid = 0x2e9
ctime = Mon Oct 29 10:50:46 CST 2018
mZxid = 0x2e9
mtime = Mon Oct 29 10:50:46 CST 2018
pZxid = 0x2e9
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
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

[zk: localhost:2181(CONNECTED) 5] ls  /my_test
[tester1]

6、删除znode

有子节点的znode不能直接删除,否则会报错。

[zk: localhost:2181(CONNECTED) 6] delete /my_test
Node not empty: /my_test

我们删除/my_test/tester1。

[zk: localhost:2181(CONNECTED) 8] delete /my_test/tester1

再次查看该znode。

[zk: localhost:2181(CONNECTED) 9] get /my_test/tester1
Node does not exist: /my_test/tester1

已经被成功删除了。

7、集群配置和启动

我们配置和启动一个三台server的集群。

1、修改zoo.cfg文件

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=ip1:2888:3888
server.2=ip2:2888:3888
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。

➜  zookeeper-3.4.12 bin/zkCli.sh -server ip1:2181
[zk: ip1:2181(CONNECTED) 10] create /zk_test my_data

2、连接另外一台server,列出所有根节点下znode。

➜  zookeeper-3.4.12 bin/zkCli.sh -server ip2:2181
[zk: ip2:2181(CONNECTED) 10] ls /

输出如下:

[zk_test]

可以看到集群已经能够正常工作,server间可以正常进行数据的复制。

客户端连接集群方法如下:

➜  zookeeper-3.4.12 bin/zkCli -server ip1:2181,ip2:2181,ip3:2181

客户端会自动随机选择集中一台连接。

小结:

至此,ZooKeeper单机环境和集群环境的搭建讲解完成,更多关于ZooKeeper单机集群环境的安装搭建使用的资料请关注脚本之家其它相关文章!

相关文章

  • java在文件尾部追加内容的简单实例

    java在文件尾部追加内容的简单实例

    下面小编就为大家带来一篇java在文件尾部追加内容的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • java实现上传和下载工具类

    java实现上传和下载工具类

    这篇文章主要为大家详细介绍了java实现上传和下载工具类,文件上传到ftp服务工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • mybatisplus中的xml对象参数传递问题

    mybatisplus中的xml对象参数传递问题

    这篇文章主要介绍了mybatisplus中的xml对象参数传递问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java中&和&&的区别简单介绍

    Java中&和&&的区别简单介绍

    这篇文章主要介绍了Java中&和&&的区别,&&逻辑与||逻辑或  它们都是逻辑运算符,& 按位与|按位或它们都是位运算符,更多详细内容请需要的小伙伴了解下面文章内容
    2022-01-01
  • springboot如何接收get和post请求参数

    springboot如何接收get和post请求参数

    这篇文章主要介绍了springboot如何接收get和post请求参数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Springboot整合log4j2日志全解总结

    Springboot整合log4j2日志全解总结

    这篇文章主要介绍了Springboot整合log4j2日志全解总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • java多次嵌套循环查询数据库导致代码中数据处理慢的解决

    java多次嵌套循环查询数据库导致代码中数据处理慢的解决

    这篇文章主要介绍了java多次嵌套循环查询数据库导致代码中数据处理慢的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java中join方法的理解与说明详解

    java中join方法的理解与说明详解

    这篇文章主要给大家介绍了关于java中join方法的理解与说明的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Kotlin协程与并发深入全面讲解

    Kotlin协程与并发深入全面讲解

    Android官方对协程的定义-协程是一种并发设计模式,您可以在Android平台上使用它来简化异步执行的代码。协程是在版本1.3中添加到Kotlin的,它基于来自其他语言的既定概念
    2022-11-11
  • springboot整合RabbitMQ发送短信的实现

    springboot整合RabbitMQ发送短信的实现

    本文会和SpringBoot做整合,实现RabbitMQ发送短信,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05

最新评论