设为首页 收藏本站
查看: 835|回复: 0

[经验分享] ZooKeeper学习之配置【1】基本配置

[复制链接]

尚未签到

发表于 2017-4-19 10:54:39 | 显示全部楼层 |阅读模式
  ZooKeeper的设计对开发人员来说很友好,但同时也对运维人员友好。当集群越来越大时,管理操作也便得复杂起来,稳妥的管理也变得重要起来。ZooKeeper应该是一个标准的分布式系统组件,一个运维团队可以轻松的学习并管理它。虽说ZooKeeper很容易跑起来,但对于一些配置选项必须牢记在心。你应该很熟悉你的ZooKeeper服务,并使用一些管理工具方便的管理它。
  为了让一个ZooKeeper服务正确工作,必须正确的配置好它,只有这样,基于ZooKeeper工作的其他分布式产品才能正常工作。例如,所有的ZooKeeper投票服务器必须拥有一致的配置。这是很多人的经验之谈,不一致的配置是普遍发生的问题的原因。
   
  想要配置得好,需要理解一些基本概念,其实不难掌握,关键是要理解它们是什么,是如何工作的。 
   
本文开始陆续的详细讲解所有的配置选项,大部分配置项一般都有一个默认的值,很多都应该根据实际情况进行优化。因为ZooKeeper的设计很容易使用,有一些在不明白具体的配置项就开始使用,一开始工作得还好,但后续很可能会出问题。所以你需要花些时间来深入学习配置项,你会发现你将可以得到更好的性能,并能更容易的诊断问题。本文会带你了解每个配置项的含义,为什么会需要使用它们。
 
每一个ZooKeeper进程启动的时候会去读一个名为zoo.cfg的配置文件。担任不同角色(如leader,follower后者observer)的server共享一些基本的配置。在数据目录的myid文件用来区分各个server。每一个数据目录必须是独立的,所以myid文件需要放在数据目录中。myid存放的是server id,用来在配置文件中标识每一个server。当然,如果组建集群的话,每一个server必须有一个自己专属的配置文件。
 
配置选项一般都在配置文件中设置。每一个选项也可以通过Java system property进行设置,通常以zookeeper.property的形式使用。在启动server的使用使用-D选项来指定。下文中如果可以通过这种方式启动的话,会在圆括号中标明。在配置文件中的选项会比Java system property有更高的优先权。
基本配置
有一些配置选项没有默认值,所以必须配置它们:
 
clientPort
一个TCP端口,提供client来连接。默认会监听所有的网络接口,除非设置了clientPortAddress配置。这个端口可以随意设置,只要不与其他端口冲突,默认端口为2181.
 
dataDir和dataLogDir
dataDir目录用来存放快照文件。如果当前的server是集群的一部分,则id文件也放在这个目录。此目录不需要放在一个专用的设备。因为是使用一个后台线程去写这个文件的,不需要锁住放在内存中的data tree,当完成快照之前,写操作的数据不会sync到磁盘(不会落地)。
 
如果没有设置dataLogDir,事务日志也会放到这个目录。事务日志所在的设备最好是专用的。server会试图对事务日志做顺序的写操作,因为在server对一个事务进行ack之前数据必须sync到磁盘。同一个设备的其他磁盘操作,比如生成快照,会显著的影响写操作,在sync期间把磁盘的磁头调到别的地方去。所以,最佳实践是为事务日志设置一个专用的设备,并把dataLogDir配到这个设备的一个目录上。
 
tickTime
指明一个tick的长度,单位是毫秒。tick是时间的一个基本度量,它决定了session超时的bucket的size(前文的文章有提过)。
 
超时时间就是根据以tick为单位进行设置的。这意味着,超时时间的下限就是1个tick的时间,因为最小只能设置为1个tick。最小的cilent的session超时时间是2个tick。
 
默认的tickTime为3000毫秒。调低这个值会减少超时时间。但是也会引起网络流量(心跳)和CPU时间(session bucket处理)的增加。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-366294-1-1.html 上篇帖子: zookeeper3.3学习笔记6:HBase中的zookeeper 下篇帖子: ZooKeeper与Diamond有什么不一样
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表