zookeeper系列(八)zookeeper运维

zookeeper运维

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的不安全配置项

  • skipAC
    (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.

ZooKeeper 4字命令

ZooKeeper支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令。 其中stat、srvr、cons三个命令比较类似:"stat"提供服务器统计和客户端连接的一般信息;"srvr"只有服务的统计信息,"cons"提供客户端连接的更加详细的信息。 
使用方式,在shell终端输入:echo mntr | nc localhost 2181

命令示例描述
confecho conf nc localhost 2181(New in 3.3.0)输出相关服务配置的详细信息。比如端口、zk数据及日志配置路径、最大连接数,session超时时间、serverId等
consecho cons nc localhost 2181(New in 3.3.0)列出所有连接到这台服务器的客户端连接/会话的详细信息。包括“接受/发送”的包数量、session id 、操作延迟、最后的操作执行等信息。
crstecho crst nc localhost 2181(New in 3.3.0)重置当前这台服务器所有连接/会话的统计信息
dumpecho dump nc localhost 2181列出未经处理的会话和临时节点(只在leader上有效)。
enviecho envi nc localhost 2181输出关于服务器的环境详细信息(不同于conf命令),比如host.name、java.version、java.home、user.dir=/data/zookeeper-3.4.6/bin之类信息
ruokecho ruok nc localhost 2181测试服务是否处于正确运行状态。如果正常返回"imok",否则返回空。
srstecho srst nc localhost 2181重置服务器的统计信息
srvrecho srvr nc localhost 2181(New in 3.3.0)输出服务器的详细信息。zk版本、接收/发送包数量、连接数、模式(leader/follower)、节点总数。
statecho stat nc localhost 2181输出服务器的详细信息:接收/发送包数量、连接数、模式(leader/follower)、节点总数、延迟。 所有客户端的列表。
wchsecho wchs nc localhost 2181(New in 3.3.0)列出服务器watches的简洁信息:连接总数、watching节点总数和watches总数
wchcecho wchc nc localhost 2181(New in 3.3.0)通过session分组,列出watch的所有节点,它的输出是一个与 watch 相关的会话的节点列表。如果watches数量很大的话,将会产生很大的开销,会影响性能,小心使用。
wchpecho wchp nc localhost 2181(New in 3.3.0)通过路径分组,列出所有的 watch 的session id信息。它输出一个与 session 相关的路径。如果watches数量很大的话,将会产生很大的开销,会影响性能,小心使用。
mntrecho mntr nc localhost 2181(New in 3.4.0)列出集群的健康状态。包括“接受/发送”的包数量、操作延迟、当前服务模式(leader/follower)、节点总数、watch总数、临时节点总数。

运维中使用JMX

开启JMX监控:
修改zookeeper的启动脚本vim zkServer.sh。找到启动参数ZOOMAIN,修改为下面值。
其中local.only=false,设为false才能在远程建立连接。

ZOOMAIN="-Dcom.sun.management.jmxremote  -Dcom.sun.management.jmxremote.local.only=false
 -Djava.rmi.server.hostname=127.0.0.1
 -Dcom.sun.management.jmxremote.port=9991
 -Dcom.sun.management.jmxremote.ssl=true
 -Dcom.sun.management.jmxremote.authenticate=true
 -Dcom.sun.management.jmxremote.access.file=/data/zookeeper/conf/jmxremote.access
 -Dcom.sun.management.jmxremote.password.file=/data/zookeeper/conf/jmxremote.password
 -Dzookeeper.jmx.log4j.disable=true
 org.apache.zookeeper.server.quorum.QuorumPeerMain"

在/data/zookeeper/conf目录下建立2个访问授权文件, 修改文件权限chmod 600 jmxremote.*

-rw-------  1 deploy deploy  149 Aug  6 13:44 jmxremote.access
-rw-------  1 deploy deploy   40 Aug  6 13:46 jmxremote.password
[deploy@liutp conf]$ pwd
/data/zookeeper/conf
[deploy@liutp conf]$ cat jmxremote.access
monitorRole   readonly
controlRole   readwrite \
              create javax.management.monitor.*,javax.management.timer.* \
              unregister
[deploy@liutp conf]$ cat jmxremote.password
monitorRole  1234567
controlRole  1234567
[deploy@liutp conf]$

重启zookeeper

使用Java自带的JConsole
在命令行输入JConsole,再回车。
在弹出的界面选择“远程进程”,输入“服务器IP:9991”(zookeeper服务器的IP和端口)

监控平台

exhibitor:能够配置zookeeper并且自由浏览、修改节点数据,查看运行状态信息,自动或手动重启;
zabbix:对CPU负载,内存使用,磁盘使用、网络状态做监控;

转载于:https://my.oschina.net/u/164027/blog/1924007

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值