分布式系统专题二:Zookeeper介绍

Apache ZooKeeper是Apache软件基金会的一个软件项目,他为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。ZooKeeper曾经是Hadoop的一个子项目,但现在是一个独立的顶级项目。

一、下载与安装

下载地址:https://zookeeper.apache.org/

  1. 解压
    在这里插入图片描述
  2. 配置
    进入到conf文件夹,找到zoo_sample.cfg文件,并复制为zoo.cfg
    在这里插入图片描述
  3. 配置文件解释

1)tickTime:Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。该参数用来定义心跳的间隔时间,zookeeper的客户端和服务端之间也有和web开发里类似的session的概念,而zookeeper里最小的session过期时间就是tickTime的两倍。

2)initLimit:Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在 initLimit 时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了。默认为10。

3)syncLimit:在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题。

4)dataDir:存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能。

5)clientPort:客户端连接服务器的端口
6)maxClientCnxns
7)autopurge.snapRetainCount
8)autopurge.purgeInterval
简化一下文件:
initLimit=10和syncLimit=5分别代表10个和5个tickTime的时间,tickTime为Zookeeper定义的单位时间;
这里tickTime是2秒,所以initLimit为20秒,syncLimit为10秒

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181

二、启动服务端

进入到bin目录下:
在这里插入图片描述将zkServer.sh和zkCli.sh加入到环境变量,以方便运行,不然每次都得进入到bin目录之后再启动。
打开命令行工具运行;
bash zkServer.sh status
运行成功后显示
在这里插入图片描述

三、停止服务端

bash zkServer.sh stop
运行成功后显示
在这里插入图片描述

四、使用客户端

bash zkCli.sh
运行成功会显示启动日志,最后可以在命令行内看到如下控制台
在这里插入图片描述

五、启动时遇到的坑

(一)错误: 找不到或无法加载主类 org.apache.zookeeper.ZooKeeperMain在这里插入图片描述

解决方案:
原来从目前的最新版本3.5.5开始,带有bin名称的包才是我们想要的下载可以直接使用的里面有编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包无法直接使用。
所以同学们,如果下载3.5.5以后的版本的Zookeeper安装包,我们乖乖的下载带有bin标识的包就不会有问题了。

(二)Error contacting service. It is probably not running.

在这里插入图片描述
查看日志:./zkServer.sh start-foreground

在这里插入图片描述
解决方式关闭占用 8080 端口的服务

Zookeeper集群搭建

以上均为鲁班学院学习资料,欢迎大家报班学习,真心推荐!

发布了143 篇原创文章 · 获赞 49 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/weixin_36586564/article/details/104162600