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倍。

10. 管理Apache ZooKeeper配置的更多相关文章

  1. Mac Apache ZooKeeper 配置

    1.配置准备工作 1)配置 ZooKeeper 准备工作 下载相关软件 apache-zookeeper-v3.4.10.zip ZooKeeper 官网 ZooKeeper 配置软件下载地址,密码: ...

  2. Apache ZooKeeper在Kafka中的角色 - 监控和配置

    1.目标 今天,我们将看到Zookeeper在Kafka中的角色.本文包含Kafka中需要ZooKeeper的原因.我们可以说,ZooKeeper是Apache Kafka不可分割的一部分.在了解Zo ...

  3. 在 Linux 多节点安装配置 Apache Zookeeper 分布式集群

    规划: 三台物理服务器就形成了(法定人数).对于高可用性集群,您可以使用高于3的任何奇数.例如,如果设置5台服务器,则集群可以处理两个故障节点等. 物理服务器需要开启的端口 2888 , 3888 和 ...

  4. 线上zk节点报org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:187) at java.lang.Thread.run(libgcj.so.10)

    线上zk做配置管理,最近突然发现两个节点一直在刷下边 java.nio.channels.CancelledKeyException    at gnu.java.nio.SelectionKeyIm ...

  5. win 10下Apache和PHP的安装配置

    一.下载Apache 官网下载:https://httpd.apache.org/ 或者百度网盘链接:https://pan.baidu.com/s/17zVFNSfzzwDgFti_fboUSA 提 ...

  6. 2.动手实操Apache ZooKeeper

    Tips 做一个终身学习的人! 日拱一卒,功不唐捐. 在本节中,我们将讲解如何下载并安装Apache ZooKeeper,以便我们可以直接开始使用ZooKeeper. 本部分旨在通过提供详细的安装和使 ...

  7. Apache ZooKeeper 单机、集群部署文档

    简介: Apache ZooKeeper 是一个分布式应用的高性能协调服务,功能包括:配置维护.统一命名.状态同步.集群管理.仲裁选举等. 下载地址:http://apache.fayea.com/z ...

  8. Apache ZooKeeper Getting Started Guide 翻译

    ZooKeeper 開始向导 開始:用zookeeper协调分布式程序 单例操作 管理zookeeper存储 连接zookeeper 执行zookeeper 以复制模式执行zookeeper 其他优化 ...

  9. Zookeeper 配置和原理探究

    一 Zookeeper是什么? 服务集群对外提供服务的过程中,有很多的配置需要随时更新,服务间需要协调工作,那么这些信息如何推送到各个节点?并且保证信息的一致性和可靠性?我们知道分布式协调服务很难正确 ...

随机推荐

  1. web容器启动后自动执行程序的几种方式比较

    1.       背景 1.1.       背景介绍 在web项目中我们有时会遇到这种需求,在web项目启动后需要开启线程去完成一些重要的工作,例如:往数据库中初始化一些数据,开启线程,初始化消息队 ...

  2. Emgu.CV(三)

    像素交换 private void btn_Exchange_Click(object sender, EventArgs e) { if (imageBox1.Image != null) { va ...

  3. 自学 Python 3 最好的 入门 书籍 推荐(附 免费 在线阅读 下载链接)

    请大家根据自己的实际情况对号入座,挑选适合自己的 Python 入门书籍: 完全没有任何编程基础:01 号书 少量编程基础,不求全,只希望能以最快的速度入门:02 号书 少量编程基础,有一定的英文阅读 ...

  4. UVW源码漫谈(四)

    十一假期后就有点懒散,好长时间都没想起来写东西了.另外最近在打LOL的S赛.接触LOL时间不长,虽然平时玩的比较少,水平也相当菜,但是像这种大型的赛事有时间还是不会错过的.主要能够感受到选手们对竞技的 ...

  5. 【ASP.NET MVC 学习笔记】- 20 ASP.NET Web API

    本文参考:http://www.cnblogs.com/willick/p/3441432.html 1.ASP.NET Web API(本文简称Web API),是基于ASP.NET平台构建REST ...

  6. Android 自定义View实现QQ运动积分抽奖转盘

    因为偶尔关注QQ运动, 看到QQ运动的积分抽奖界面比较有意思,所以就尝试用自定义View实现了下,原本想通过开发者选项查看下界面的一些信息,后来发现积分抽奖界面是在WebView中展示的,应该是在H5 ...

  7. 树莓派.使用Node.js控制GPIO

    树莓派上的40个GPIO是最好玩的东西 它们可以被C,/C++, Python, Java等语言直接控制 现在就来看看怎么用Node.js做到同样的事情 在试验之前, 请先安装好Node.js, 具体 ...

  8. co源码分析及其实践

    本文始发于我的个人博客,如需转载请注明出处. 为了更好的阅读体验,可以直接进去我的个人博客看. 前言 知识储备 阅读本文需要对Generator和Promise有一个基本的了解. 这里我简单地介绍一下 ...

  9. 一、JAVA环境变量配置详解——JavaWeb点滴

    JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLASSPATH.PATH. JAVA_HOME 指向 ...

  10. JAVA提高十一:LinkedList深入分析

    上一节,我们学习了ArrayList 类,本节我们来学习一下LinkedList,LinkedList相对ArrayList而言其使用频率并不是很高,因为其访问元素的性能相对于ArrayList而言比 ...