zookeeper的一系列基础知识,如果,你还不清楚zookeeper的基本架构,或者工作原理,那么,建议看一下散仙的上篇文章。本篇,散仙来介绍下怎么安装部署zookeeper,其实散仙在Hbase的安装部署里,已经介绍过独立的zookeeper的安装部署,本次除了zookeeper的集群安装外,还会额外介绍一下,怎么在zookeeper3.3.0之后的版本里,安装观察者角色(Observer),以便使我们的集群能够获取更好的扩展性,与稳定性。
zookeeper的安装模式也有三种,分别是单机模式,伪分布模式,和完全分布式模式,
本篇,散仙要介绍的是完全分布式模式。
我们需要先下载好zookeeper的安装包,然后解压后,配置zookeeper,修改其config目录下zoo_simple.cfg重命名为zoo.cfg,并在其data目录(自己手动创建)下,新建一个myid文件,server.x后面的x数字一直即可,修改其内容如下:
- //tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 毫秒时间就会发送一个心跳。
- tickTime=2000
- //initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
- //当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
- initLimit=10
- //syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒
- syncLimit=5
- //dataLogDir:日志文件保存的位置
- dataDir=/root/zookeeper/data
- //客户端的端口号
- clientPort=2181
- //server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
- //如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
- server.1=10.2.143.5:2887:3887
- server.2=10.2.143.36:2888:3888
- server.3=10.2.143.37:2889:3889
//tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 毫秒时间就会发送一个心跳。 tickTime=2000 //initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。 //当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。 initLimit=10 //syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒 syncLimit=5 //dataLogDir:日志文件保存的位置 dataDir=/root/zookeeper/data //客户端的端口号 clientPort=2181 //server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。 //如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。 server.1=10.2.143.5:2887:3887 server.2=10.2.143.36:2888:3888 server.3=10.2.143.37:2889:3889
注意,如上的配置是在3台节点非观察者角色的配置,下面我们来看下,观察者角色的配置内容:
- //tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 毫秒时间就会发送一个心跳。
- tickTime=2000
- //initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
- //当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
- initLimit=10
- //syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒
- syncLimit=5
- //dataLogDir:日志文件保存的位置
- dataDir=/root/zookeeper/data
- //客户端的端口号
- clientPort=2181
- //server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
- //如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
- //此处声明表示作为一个观察者角色存在
- peerType=observer
- server.1=10.2.143.5:2887:3887
- server.2=10.2.143.36:2888:3888
- server.3=10.2.143.37:2889:3889
- //注意观察者角色的末尾,需要拼接上observer
- server.4=10.2.143.38:2886:3886:observer
//tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 毫秒时间就会发送一个心跳。 tickTime=2000 //initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。 //当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。 initLimit=10 //syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒 syncLimit=5 //dataLogDir:日志文件保存的位置 dataDir=/root/zookeeper/data //客户端的端口号 clientPort=2181 //server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。 //如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。 //此处声明表示作为一个观察者角色存在 peerType=observer server.1=10.2.143.5:2887:3887 server.2=10.2.143.36:2888:3888 server.3=10.2.143.37:2889:3889 //注意观察者角色的末尾,需要拼接上observer server.4=10.2.143.38:2886:3886:observer
通过,以上信息,我们发现,观察者角色的配置还是比较简单的,只在原来的配置中增加了,两处改动,然后我们就可可以启动集群信息,通过查看节点状态,我们可以发现观察者角色的状态为observer,观察者角色,并不会参入投票过程,所以在高并发的情况下,大大的增强了系统的可扩展性和吞吐率。另外需要注意的在启动zookeeper集群的时候,需要把系统的防火墙给关闭,除非你已经对外开放了zookeeper的客户端端口号,否则将有可能导致启动失败。
相关推荐
2. 节点(Znode):Zookeeper的数据存储结构类似文件系统,由一系列节点组成。每个节点称为Znode,包含数据和元数据,如创建时间、最后修改时间、版本号等。Znode分为持久节点和临时节点,前者在创建后不会因客户端...
Zookeeper提供了诸如命名服务、配置管理、集群同步、分组服务等一系列基础服务,是许多大型分布式系统背后的关键组件。其设计目标是简化分布式环境中的数据一致性问题,使得开发者可以专注于业务逻辑,而不用过于...
3.4.9版本是ZooKeeper的一个稳定版本,提供了一系列增强功能和性能优化。在本文中,我们将深入探讨如何在Windows和Linux操作系统上安装、配置和使用ZooKeeper 3.4.9。 一、ZooKeeper基础 1.1 ZooKeeper的角色:...
【Zookeeper基础知识】 Zookeeper,源自雅虎,是Google Chubby的开源实现,是一个高度可靠的分布式协调服务。它的设计初衷是简化分布式环境中的复杂一致性问题,通过提供一系列简单易用的接口,帮助开发者构建...
`ZooKeeper`提供了事务操作接口,如`multi`方法,可以批量执行一系列原子操作,保证了操作的事务性。 8. **同步与异步操作**: Zookeeper API提供了同步和异步两种操作方式。同步操作会阻塞直到操作完成,异步...
《Zookeeper入门到精通》教学视频及文档涵盖了分布式协调...通过学习《Zookeeper入门到精通》的教学视频和文档,你将全面掌握Zookeeper的基础知识,并能灵活运用到实际的分布式系统开发和运维中,提升你的IT技能水平。
4. **操作API**:ZooKeeper提供了一系列的操作API,包括创建、删除、更新、读取ZNode,以及设置和取消watcher等。 5. **原子性**:ZooKeeper保证所有操作都是原子的,即一次操作要么全部完成,要么全部不完成,不会...
Zookeeper的数据模型类似于文件系统,由一系列的路径标识符组成,每个路径称为Znode。Znode可以存储数据,并且具有版本号,支持多版本控制。 **三、Zookeeper角色** 1. **Leader**: 负责处理写请求,维护全局的...
### Zookeeper基础知识详解 #### 1. Zookeeper概述 Zookeeper是一个开源的分布式协调服务,由Apache基金会维护和支持。它的主要目标是简化分布式应用程序的开发和管理,通过提供一系列的基础服务来帮助解决分布式...
通过这些知识点的学习,我们不仅了解了如何在 Linux 环境下安装配置 zookeeper,并且还掌握了基本的操作命令和数据模型的基础知识。这对于深入理解 zookeeper 的工作原理及应用场景非常有帮助。
#### 一、引言与基础知识 ##### 自序 在深入了解Zookeeper之前,我们不妨先从一位实践者的视角出发。最初接触到Zookeeper时,很多人可能会感到困惑,尤其是当其与Kafka这样的分布式消息系统结合使用时。例如,对于...
关于Zookeeper-3.3.6的深入学习,可以参考博客《Zookeeper详解》(http://blog.csdn.net/u011877584/article/details/78443651),该博客详细介绍了Zookeeper的基础知识和实践案例,对于初学者来说是一份不错的参考...
由于提供的链接无法直接访问,无法详细解读具体的文章内容,但上述内容涵盖了Zookeeper的基础知识和常见应用场景。在实际学习过程中,结合具体的代码示例和实际操作,将有助于更深入地理解Zookeeper的工作原理和使用...
Zookeeper的数据模型类似于文件系统,由一系列的节点(ZNode)组成,每个节点可以包含数据和子节点。ZNode分为临时节点和持久节点,临时节点在创建它的会话结束时自动删除,而持久节点在被显式删除前一直存在。此外...
通过这些基础功能,ZooKeeper能够帮助开发者解决一系列分布式系统中常见的问题,例如一致性保证、组管理、Leader选举等。 **1.1 命名服务(Naming Service)** 命名服务是指在分布式环境中为资源和服务提供统一的...
首先,Spring Dubbo是一款由阿里巴巴开发的高性能、轻量级的Java RPC框架,它提供了服务治理的一系列功能,包括服务注册、服务发现、负载均衡、容错机制等。而Zookeeper是Apache的一个开源项目,它是一个分布式的,...