Zookeeper 简单配置

发布于 2023-01-09 12:51:06 字数 2517 浏览 67 评论 0

本文只关注分布式模式的 zookeeper,因为这也是在生产环境的唯一部署方式,单机的 zookeeper 可以在测试和开发环境使用,但是单机环境的 zookeeper 就不再是 zookeeper 了。

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

配置 zoo.cfg

这是 zookeeper 的主要配置文件,因为 Zookeeper 是一个集群服务,集群的每个节点都需要这个配置文件。为了避免出差错,zoo.cfg 这个配置文件里没有跟特定节点相关的配置,所以每个节点上的这个 zoo.cfg 都是一模一样的配置。这样就非常便于管理了,比如我们可以把这个文件提交到版本控制里管理起来。

其实这给我们设计集群系统的时候也是个提示:集群系统一般有很多配置,应该尽量将通用的配置和特定每个服务的配置(比如服务标识)分离,这样通用的配置在不同服务之间 copy 就 ok 了,下面来介绍一些配置点:

clientPort=2181

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

dataDir=/data
dataLogDir=/datalog

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

下面是集群中服务的列表

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。

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

还有像 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的大小也是有意义的。

上面就是配置的讲解了,现在我们可以启动 zookeeper 集群了。进入到 bin 目录,执行 ./zkServer.sh start 即可。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

流星番茄

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文