专栏首页sktjZookeeper 配置详解

Zookeeper 配置详解

Zookeeper是通过一个***.cfg配置文件来进行配置管理的,默认使用zoo.cfg文件进行配置。下面我们将仔细介绍Zookeeper的配置项及该配置项的主要作用。

一、ZK的最小配置

最小配置是指Zookeeper运行所需的最小配置,Zookeeper只需要配置这些项就可以正常的运行Zookeeper。

clientPort

配置ZK监听客户端连接的端口

dataDir

内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上。

tickTime

心跳基本时间单位,毫秒级,ZK基本上所有的时间都是这个时间的整数倍。

二、ZK的高级配置(可选)

高级配置是指有的需要直接通过系统属性进行设置)

dataLogDir

将事务日志存储在该路径下,比较重要,这个日志存储的设备效率会影响ZK的写吞吐量。

globalOutstandingLimit

(Java system property: zookeeper.globalOutstandingLimit)默认值是1000,限定了所有连接到服务器上但是还没有返回响应的请求个数(所有客户端请求的总数,不是连接总数),这个参数是针对单台服务器而言,设定太大可能会导致内存溢出。

preAllocSize

(Java system property: zookeeper.preAllocSize)默认值64M,以KB为单位,预先分配额定空间用于后续transactionlog 写入,每当剩余空间小于4K时,就会又分配64M,如此循环。如果SNAP做得比较频繁(snapCount比较小的时候),那么请减少这个值。

snapCount

(Java system property: zookeeper.snapCount)默认值100,000,当transaction每达到snapCount/2+rand.nextInt(snapCount/2)时,就做一次SNAPSHOT,默认情况下是50,000~100,000条transactionlog就会做一次,之所以用随机数是为了避免所有服务器可能在同一时间做snapshot.

traceFile (Java system property: requestTraceFile)

maxClientCnxns

默认值是10,一个客户端能够连接到同一个服务器上的最大连接数,根据IP来区分。如果设置为0,表示没有任何限制。设置该值一方面是为了防止DoS攻击。

clientPortAddress

与clientPort匹配,表示某个IP地址,如果服务器有多个网络接口(多个IP地址),如果没有设置这个属性,则clientPort会绑定到所有IP地址上,否则只绑定到该设置的IP地址上。

minSessionTimeout

最小的session time时间,默认值是2个tick time,客户端设置的session time 如果小于这个值,则会被强制协调为这个最小值。

maxSessionTimeout

最大的session time 时间,默认值是20个tick time. ,客户端设置的session time 如果大于这个值,则会被强制协调为这个最大值。

三、ZK的集群配置选项

electionAlg

领导选举算法,默认是3(fast leader election,基于TCP),0表示leader选举算法(基于UDP),1表示非授权快速选举算法(基于UDP),2表示授权快速选举算法(基于UDP),目前1和2算法都没有应用,不建议使用,0算法未来也可能会被干掉,只保留3(fast leader election)算法,因此最好直接使用默认就好。

initLimit

tickTime的个数,表示在leader选举结束后,followers与leader同步需要的时间,如果followers比较多或者说leader的数据灰常多时,同步时间相应可能会增加,那么这个值也需要相应增加。当然,这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout)

syncLimit

tickTime的个数,这时间容易和上面的时间混淆,它也表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。

leaderServes

(Java system property: zookeeper.leaderServes) 如果该值不是no,则表示该服务器作为leader时是需要接受客户端连接的。为了获得更高吞吐量,当服务器数三台以上时一般建议设置为no。

cnxTimeout

(Java system property: zookeeper.cnxTimeout) 默认值是5000,单位ms 表示leaderelection时打开连接的超时时间,只用在算法3中。

四、ZK的不安全配置项

skipACL

(Java systemproperty: zookeeper.skipACL) 默认值是no,忽略所有ACL检查,相当于开放了所有数据权限给任何人。

forceSync

(Java systemproperty: zookeeper.forceSync) 默认值是yes, 表示transactionlog在commit时是否立即写到磁盘上,如果关闭这个选项可能会在断电时丢失信息。

jute.maxbuffer

(Java system property: jute.maxbuffer)默认值0xfffff,单位是KB,表示节点数据最多1M。如果要设置这个值,必须要在所有服务器上都需要设置。

授权认证配置项

DigestAuthenticationProvider.superDigest

(Java system property only: zookeeper.DigestAuthenticationProvider.superDigest) 设置这个值是为了确定一个超级用户,它的值格式为

super:<base64encoded(SHA1(idpassword))> ,一旦当前连接addAuthInfo超级用户验证通过,后续所有操作都不会checkACL.


zk常用配置

时间参数

tickTime=2000 initLimit=10 syncLimit=5

镜像相关参数 文件数量

autopurge.snapRetainCount=48 autopurge.purgeInterval=1

数据目录

dataDir=/usr/local/zookeeper/data

端口

clientPort=51903

user_name = dna_root, password = xxxx

superDigest=dna_root:xxx

zk服务器地址

server.1=127.0.0.1:51904:51905 server.2=127.0.0.79:51904:51905 server.3=127.0.0.80:51904:51905

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Prometheus:pushgateway

    1、安装 2、启动 pushgateway --web.listen-address="0.0.0.0:9091"

    用户5760343
  • python 读写压缩文件

    import gzip with gzip.open('somefile.gz', 'rt') as f: text = f.read()

    用户5760343
  • python3 画五子棋

    board = [] def initBoard() : # 把每个元素赋为"╋",用于在控制台画出棋盘 for i in range(BOARD_SIZ...

    用户5760343
  • 【经验分享】NVIDIA Nsight Profiler新手入门

    GPUS Lady
  • 扩展Zuul实现敏捷开发的小小技巧

    你在开发工作的是否遇到这个问题,微服务模块划分过细,基础模块依赖的比较多? 比如你要进行微服务开发则需要启动以下基础模块

    冷冷
  • 扩展Zuul实现敏捷开发的小小技巧

    重写网关的转发规则,其实就是重写ribbon的路由规则,根据客户端不同的用户请求(可以根据入参不同区分)路由到对应的微服务上,所以对应的微服务上要打上标签。b...

    冷冷
  • 神器Termux的使用记录

    Termux是一个Android终端模拟器和Linux环境应用程序,可以直接使用,无需root或设置。自动安装最小基本系统 - 使用APT包管理器可以使用其他软...

    用户2470778
  • Linux 运维必备的 13 款实用工具,拿好了

    IOZone 是一款 Linux 文件系统性能测试工具 可以测试不同的操作系统中文件系统的读写性能。

    lyb-geek
  • SpringCloud之zuul源码解析 原

        zuul各版本实现存在一些微小的变化,总的实现思想未改变,以spring-cloud-netflix-core-1.3.6.RELEASE为例

    用户2603479
  • mybatis 3.x 缓存Cache的使用

    mybatis 3.x 已经支持cache功能了,使用很简单,在mappper的xml文件里添加以下节点: 1 <mapper namespace="com....

    菩提树下的杨过

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动