Zookeeper-Zookeeper的配置

前面两篇文章介绍了Zookeeper是什么和能够干什么,那么接下来咱们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大致的感觉,后面再描述某些地方的时候也能在大脑中有具体的印象。本文只关注分布式模式的zookeeper,由于这也是在生产环境的惟一部署方式,单机的zookeeper能够在测试和开发环境使用,可是单机环境的zookeeper就再也不是zookeeper了。服务器

安装配置很简单,官网也有介绍,这里就只对后面的文章有提到的点说明下。session

配置-zoo.cfg数据结构

这是zookeeper的主要配置文件,由于Zookeeper是一个集群服务,集群的每一个节点都须要这个配置文件。为了不出差错,zoo.cfg这个配置文件里没有跟特定节点相关的配置,因此每一个节点上的这个zoo.cfg都是如出一辙的配置。这样就很是便于管理了,好比咱们能够把这个文件提交到版本控制里管理起来。其实这给咱们设计集群系统的时候也是个提示:集群系统通常有不少配置,应该尽可能将通用的配置和特定每一个服务的配置(好比服务标识)分离,这样通用的配置在不一样服务之间copy就ok了。ok,下面来介绍一些配置点:分布式

clientPort=2181性能

client port,顾名思义,就是客户端链接zookeeper服务的端口。这是一个TCP port。测试

dataDir=/data设计

dataLogDir=/datalog版本控制

dataLogDir若是没提供的话使用的则是dataDir。zookeeper的持久化都存储在这两个目录里。dataLogDir里是放到的顺序日志(WAL)。而dataDir里放的是内存数据结构的snapshot,便于快速恢复。为了达到性能最大化,通常建议把dataDir和dataLogDir分到不一样的磁盘上,这样就能够充分利用磁盘顺序写的特性。日志

下面是集群中服务的列表server

server.1=127.0.0.1:20881:30881
server.2=127.0.0.1:20882:30882
server.3=127.0.0.1:20883:30883

在上面的例子中,我把三个zookeeper服务放到同一台机器上。上面的配置中有两个TCP port。后面一个是用于Zookeeper选举用的,而前一个是Leader和Follower或Observer交换数据使用的。咱们还注意到server.后面的数字。这个就是myid(关于myid是什么下一节会介绍)。

上面这几个是一些基本配置。

还有像 tickTime,这是个时间单位定量。好比tickTime=1000,这就表示在zookeeper里1 tick表示1000 ms,全部其余用到时间的地方都会用多少tick来表示。

好比 syncLimit = 2 就表示fowller与leader的心跳时间是2 tick。

maxClientCnxns -- 对于一个客户端的链接数限制,默认是60,这在大部分时候是足够了。可是在咱们实际使用中发现,在测试环境常常超过这个数,通过调查发现有的团队将几十个应用所有部署到一台机器上,以方便测试,因而这个数字就超过了。

minSessionTimeout, maxSessionTimeout -- 通常,客户端链接zookeeper的时候,都会设置一个session timeout,若是超过这个时间client没有与zookeeper server有联系,则这个session会被设置为过时(若是这个session上有临时节点,则会被所有删除,这就是实现集群感知的基础,后面的文章会介绍这一点)。可是这个时间不是客户端能够无限制设置的,服务器能够设置这两个参数来限制客户端设置的范围。

autopurge.snapRetainCount,autopurge.purgeInterval -- 客户端在与zookeeper交互过程当中会产生很是多的日志,并且zookeeper也会将内存中的数据做为snapshot保存下来,这些数据是不会被自动删除的,这样磁盘中这样的数据就会愈来愈多。不过能够经过这两个参数来设置,让zookeeper自动删除数据。autopurge.purgeInterval就是设置多少小时清理一次。而autopurge.snapRetainCount是设置保留多少个snapshot,以前的则删除。

不过若是你的集群是一个很是繁忙的集群,而后又碰上这个删除操做,可能会影响zookeeper集群的性能,因此通常会让这个过程在访问低谷的时候进行,可是遗憾的是zookeeper并无设置在哪一个时间点运行的设置,因此有的时候咱们会禁用这个自动删除的功能,而在服务器上配置一个cron,而后在凌晨来干这件事。

以上就是zoo.cfg里的一些配置了。下面就来介绍myid。

配置-myid

在dataDir里会放置一个myid文件,里面就一个数字,用来惟一标识这个服务。这个id是很重要的,必定要保证整个集群中惟一。zookeeper会根据这个id来取出server.x上的配置。好比当前id为1,则对应着zoo.cfg里的server.1的配置。

2. 并且在后面咱们介绍leader选举的时候,这个id的大小也是有意义的。

OK,上面就是配置的讲解了,如今咱们能够启动zookeeper集群了。进入到bin目录,执行 ./zkServer.sh start便可。

相关文章
相关标签/搜索