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

[经验分享] 10. 管理Apache ZooKeeper配置

[复制链接]

尚未签到

发表于 2017-12-24 14:45:47 | 显示全部楼层 |阅读模式
  Tips
  有关ZooKeeper部署和管理的详细说明,请参阅官方文档http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html。
1. 配置ZooKeeper服务
  ZooKeeper服务器中包含各种配置参数。这些参数在zoo.cfg的配置文件中定义。如果它们被配置为相同的应用程序,部署在ZooKeeper服务中的服务器可以共享一个文件。myid文件将服务器和其他服务器区分开来。虽然该配置文件中的默认选项通常为应用程序的评估或测试提供最常见的用例,但在生产环境中,这些参数的值被正确地设置为适当的推理是非常重要的。
  还可以在 Java 系统属性中使用zookeeper.propertyName设置许多配置参数。这些属性在启动服务器时使用-D选项设置。然而,在配置文件中定义的参数优先于在Java命令行中使用-D选项设置的参数。
2. 最小配置
  这里提到了每个ZooKeeper服务器的配置文件中必须定义的基本配置参数。 这些参数不是预定义的,必须在配置文件中设置才能运行ZooKeeper实例。

  • clientPort:这是客户端连接到服务器的TCP端口。 客户端口可以设置为任意数字,不同的服务器可以配置为监听不 同的端口。 默认端口是2181。
  • dataDir:这是ZooKeeper存储内存数据库快照的目录。 如果没有单独定义dataLogDir参数,则更新到数据库的事务日志也将存储在此目录中。 如果此服务器是ensemble的成员,则myid文件也将存储在此目录中。 如果数据目录对性能不敏感,事务日志存储在不同的位置,则不需要在专用设备中进行配置。
  • tickTime:这是用毫秒表示的单次标记的长度。Tick是ZooKeeper用来确定心跳和会话超时的基本时间单位。默认的tickTime参数是2000毫秒。降低tickTime参数可以实现更快的超时,但增加了网络流量(心跳)和对ZooKeeper服务器的处理开销。
3. 存储配置
  下面是用于配置ZooKeeper服务的存储选项的高级参数:

  • dataLogDir:这是存储ZooKeeper事务日志的目录。 服务器使用同步写入刷新事务日志。 因此,使用专用事务日志设备非常重要,这样ZooKeeper服务器的事务日志记录就不会受到系统中其他进程的I/O活动的影响。 拥有一个专用的日志设备可以提高总体吞吐量,并为请求分配稳定的等待时间。
  • preAllocSize:zookeeper.preAllocSize Java系统属性设置块大小预先分配给事务日志文件。 默认块大小是64 MB。 预先分配事务日志会使磁盘搜索最小化。 如果经常使用快照,则事务日志可能不会增长到64 MB。 在这种情况下,我们可以调整此参数来优化存储使用情况。
  • snapCount:zookeeper.snapCount Java系统属性提供了两个连续快照之间的事务数。在snapCoun指定的时间后,事务被写入到一个logfile文件,会启动一个新的快照,并创建一个新的事务日志文件。快照是一个性能敏感的操作,因此,对snapCount有一个较小的值可能会对ZooKeeper的性能产生负面影响。snapCount参数的默认值为100,000。
  • traceFile:requestTraceFile Java系统属性设置此选项以启用将请求记录到traceFile.year.month.day的跟踪文件。 这个选项对调试很有用,但是会影响ZooKeeper服务器的整体性能。
  • fsync.warningthresholdms:这是以毫秒为单位的时间;它定义了允许刷新事务日志,预写日志(write-ahead log——WAL)的所有未完成写入的最长时间的阈值。 只要同步操作的时间超过此值,它就会向调试日志发出警告消息。 默认值是1,000。
  • autopurge.snapRetainCount:指的是分别保存在目录dataDir和dataLogDir中的快照数和相应的事务日志数。 默认值是3。
  • autopurge.purgeInterval:这是指以小时为单位的时间间隔来清除旧的快照和事务日志。 默认值为0,表示默认情况下禁用自动清除功能。可以将此选项设置为正整数(1或更高)以启用自动清除。 如果禁用(设置为0),则默认情况下,清除不会自动发生。 手动清除可以通过运行ZooKeeper发行版bin目录下的zkCleanup.sh脚本来完成。
  • syncEnabled:这个配置选项是在3.4.6及更高版本的ZooKeeper中新引入的。 它使用Java系统属性zookeeper.observer.syncEnabled来设置,以使observer能够记录事务并将快照写入磁盘,默认情况下就像follower一样。 observer不像follower一样参与投票过程,而是提交领导者的建议。 启用此选项可减少重新启动时观察者的恢复时间。 默认值是true。
4. 网络配置
  以下配置参数与客户端与ZooKeeper服务器的交互有关:

  • globalOutstandingLimit:该参数定义ZooKeeper中未完成请求的最大数量。 在现实中,客户端可能比ZooKeeper能够更快地提交请求。 如果有大量的客户端,就会发生这种情况。 此参数使ZooKeeper能够通过限制客户端来执行流量控制。 这是为了防止ZooKeeper由于排队的请求而耗尽内存。 一旦达到globalOutstandingLimit,ZooKeeper服务器将开始限制客户端请求。 默认限制是1000个请求。  (Java系统属性:zookeeper.globalOutstandingLimit)
  • maxClientCnxns:这是单个客户机和ZooKeeper服务器之间并发套接字连接的最大数量。客户机由其IP地址标识。设置TCP连接是一种资源密集型操作,此参数用于防止服务器超载。它还用于防止某些类型的DoS攻击,包括文件描述符用尽。默认值是60。将此设置为0完全消除了并发连接的限制。
  • clientPortAddress:这是监听客户端连接的IP地址。默认情况下,ZooKeeper服务器绑定到接受客户端连接的所有接口。
  • minSessionTimeout:这是服务器允许客户端协商的最小会话超时时间(以毫秒为单位)。 默认值是tickTime参数的两倍。 如果此超时设置为非常低的值,则可能由于错误地检测到客户端故障而导致误报。 将此超时设置为更高的值将会延迟对客户端故障的检测。
  • maxSessionTimeout:这是服务器允许客户端协商的最大会话超时时间(以毫秒为单位)。 默认情况下,它是tickTime参数的20倍。

运维网声明 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-427532-1-1.html 上篇帖子: Apache localhost和局域网ip地址访问 下篇帖子: 花醉红尘
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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