ZooKeeper的安装与配置

 

ZooKeeper的安装与配置


安装

1,从官网下安装包
http://www.apache.org/dyn/closer.cgi/zookeeper/
假设我下到的包是zookeeper-3.5.1-alpha.tar.gz
2,解压和改权限,第二行可根据情况换需要的归属或省略之
tar -zxvf zookeeper-3.5.1-alpha.tar.gz
chown -R hadoop:hadoop zookeeper-3.5.1-alpha
3,设置环境变量
export ZOOKEEPER_HOME= (刚才解压的路径)
export PATH=$PATH:ZOOKEEPER_HOME/bin
export CLASSPATH=$PATH:ZOOKEEPER_HOME/lib
4,修改配置文件
cd $ZOOKEEPER_HOME/conf
vi zoo.cfg
具体有哪些参数值得改后面会说
5,运行
cd $ZOOKEEPER_HOME
bin/zkServer.sh start   (关闭的话换为stop即可kk)


配置

最小配置:以下三个配置是配置文件中必须存在的“最低消费”:
  • ClientPort:zk服务器监听的端口,客户端通过该端口建立连接,每台zk服务器也允许设置为不同的值。默认配置文件设定的是2181,除非你有什么难言之隐否则不需要修改
  • dataDir:zk用于保存内存数据库的快照的目录,除非设置了dataLogDir,否则这个目录也用来保存更新数据库的事务日志。在生产环境使用的zk集群,强烈建议设置dataLogDir,让dataDir只存放快照,因为写快照的开销很低,这样dataDir就可以和其他日志目录的挂载点合设
  • tickTime:前面已提到过,zk使用的基本时间单位是tick,这个参数用于配置一个tick的长度,单位为毫秒,默认配置文件设定的是3000,除非你有什么难言之隐否则不需要修改

高级配置:以下配置都是可选的,但如果要用好zk,有些几乎是一定要设的,那些业余教程绝对不会告诉你:
  • dataLogDir:生产环境必须要设,注意,因为zk写事务日志是顺序地、阻塞地,所以这个目录一定要单独划盘,禁止和其他高写操作的目录合设,否则严重影响性能。我们自己的生产环境都是用RAID10的挂载点的。
  • globalOutstandingLimit:因为zk服务器是需要对请求队列化的,当客户端很多,提交的写操作很频繁时,zk服务器可能在来得及处理前就OOM了。这个参数用于限制系统中还未处理的请求数阈值,默认为1000,目前还未遇到过需要修改该值的变态集群。
  • preAllocSize:用于设置预分配的事务日志文件大小,单位为KB,默认值为64M。这个值明显太大,因为每次快照后都会生成一个新的事物日志文件,且一次的事务数是用snapCount限定住的,所以需要的日志文件大小可以准确估计,我使用时snapCount默认,单个事务大小不超过100字节,因此该值设为10240够了。
  • snapCount:用于设置每次快照之间的事务数,默认为100000。因为写快照是消耗性能的,也没有必要频繁写,虽然该值看起来很大,一般不需要修改该值。
  • traceFile:如果设置了该路径,将持续跟踪zk的操作并写入一个名为traceFile.year.month.day的跟踪日志中,该选项比较消耗性能,只在debug环境可以开启,生产环境不能开
  • maxClientCnxns:单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60,如果设置为0,那么表明不作任何限制。请注意这个限制的使用范围,仅仅是单台客户端机器与单台zk服务器之间的连接数限制,不是针对指定客户端IP,也不是zk集群的连接数限制,也不是单台zk对所有客户端的连接数限制。如果你的集群下游是一帮不懂多线程开发的逗逼(就像我现在的公司一样),建议改小这个值。
  • clientPortAddress:用于配置zk的端口监听在本机哪个IP上生效,用于服务器有多块网卡的情况,尤其是既有外网地址又有内网地址的集群,只要开放内网地址即可。
  • minSessionTimeout:客户端和zk服务器间的最小超时时间,单位为tickTime的倍数,默认为2。
  • maxSessionTimeout:客户端和zk服务器间的最大超时时间,单位为tickTime的倍数,默认为20。客户端一般有自己的连接管理参数,如果客户端的参数不在minSessionTimeout--maxSessionTimeout这个范围内,会被强制设为最接近的那个值。
  • fsync.warningthresholdms:用于设置触发警告的存储同步时间阈值,单位为毫秒,默认为1000,因为只是一个警告而已,无需修改。
  • autopurge.snapRetainCount:3.4.0及之后版本zk提供了自动清理快照文件和事务日志文件的功能,该参数指定了保留文件的个数,默认为3,一般无需修改。
  • autopurge.purgeInterval:和上一个参数配合使用,设置自动清理的频率,单位为小时,默认为0表示不清理,建议设为6或12之类的值,否则总有一天系统管理员会吼的。
  • syncEnabled:3.4.6之后新加的参数,在集群使用observer时,设置其是否像leader和follower一样将快照和事务日志写到硬盘,默认为true。我是没开observer的,如果你的集群开了,建议配成false,因为没有必要。

集群配置:用于zk集群模式的高级配置,单机模式是不需要管的。当然,没几个人会用单机的zk:
  • electionAlg:群首选举算法,默认为3代表FastLeaderElection,前面章节已经说过,除了这种算法外其余3种都已经被标注为deprecated了,除非你自作孽,否则不要改。
  • initLimit:follower首次与leader连接并同步的超时值,因为集群启动或新leader选举完成后,follower需要从leader拉最新的数据,如果需要同步的数据很大还是可能超时的,单位为tickTime的倍数,没有默认值。
  • leaderServes:默认为yes,此时leader也会接受客户端的连接提供读写服务。如果设置为no,则leader不会和客户端连接,只负责处理follower转发的写操作请求以及集群协调事务。改写该参数需要小心,有可能会从leader很忙变成follower很忙,如果集群台数不多,leader的CPU和IO也不高的话,就使用默认值。
  • server.x=[hostname]:nnnnn[:nnnnn][:observer]:这里的x是一个数字,与myid文件中的id是一致的。接着可以配置两个端口,第一个端口用于leader和follower之间的数据同步和其它通信,第二个端口用于leader选举过程中投票通信。另外可以在最后加上:observer标记,用于表示该服务器以observer模式运行。
  • syncLimit:follower后续与leader同步的超时值,单位为tickTime的倍数。该参数与initLimit不同之处是,与数据量大小关系不大,只取决于网络质量,因此还起到心跳作用,如果follower超时了,leader就认为该follower落后太多需要放弃。如果网络为高延迟环境,可适当增加该值,但不宜加得太大,否则会掩盖某些故障。
  • group.x=nnnnn[:nnnnn]:第一讲已经说过,仲裁时除了默认的按每机1票计算,还有加权的方法和分组的方法,这个参数就是用来设置分组方法的。
  • weight.x=nnnnn:见上一行。
  • cnxTimeout:用于设置群首选举时打开一个新的连接的超时值,单位为毫秒,默认值为5000,不需要修改。
  • standaloneEnabled:3.5.0及以后才有,默认为true,是为了向后兼容的目的。如果设为false,单个server可以以集群模式启动,一个集群可以通过重新配置降回单个node,也可以从单个node升回一个集群。


认证配置:只有一项,kerberos认证必须通过其他参数配,这里不提:
  • zookeeper.DigestAuthenticationProvider.superDigest:用于设置super用户的密码摘要信息,以super身份认证的客户端会跳过所有ACL检查。不配置时该功能是禁用的。


非安全配置:只做介绍,生产环境不要启用这些配置:
  • forceSync:用于设置是否在事务同步到存储设备后才应答,默认为yes,如果设置为no,则事务写入内存即会应答,虽然可提高吞吐率,但在掉电时会丢失事务数据,这在生产环境是不能忍的。
  • jute.maxbuffer:只能在Java系统属性中设置,用于设置一个请求或响应的最大字节数,默认值为0xfffff,少于1MB的。不建议修改该值,因为zk不是用来设计存储大量数据的。
  • skipACL:默认为no,如果设为yes,则会关闭所有的ACL检查,虽然可提高一点性能但会牺牲安全。
  • quorumListenOnAllIPs:默认为false,如果设为true,zk服务器会监听所有可达IP上的连接,而不仅限于server list中配置的IP,这会影响ZAB协议和

    另外有几个3.5.0后引入的参数,如3个性能调优参数(zookeeper.nio.numSelectorThreads,zookeeper.nio.numWorkerThreads,zookeeper.commitProcessor.numWorkerThreads),3个AdminServer参数(admin.enableServer,admin.serverport,admin.commandURL),不重要,略过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值