配置

把样例配置拷贝成zoo.cfg

  1. cp zoo_sample.cfg zoo.cfg

注意事项

每个节点zoo.cfg一样,myid不一样。myid中的数值必须是zoo.cfg里server.id中的一个id值。

tickTime

以毫秒为单位。心跳时间,默认情况下最小的会话超时时间为两倍的 tickTime。

initLimit

初始化连接时Leader 与 Follower 之间最长能忍受多少个心跳时间间隔数。当已经超过5个心跳的时间(也就是 tickTime)长度后 Zookeeper服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒

syncLimit

标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒

server.id

server.id=serverhost:leader_listent_port:quorum_port
顾名思义,id是本服务器的id,leader_listen_port是该服务器一旦成为leader之后需要监听的端口,用于接收来自follower的请求,quorum_port是集群中的每一个服务器在最开始选举leader时监听的端口,用于服务器互相之间通信选举leader.
serverid和myid保持一致。

  1. tickTime=2000
  2. dataDir=/foo/zk/data
  3. dataLogDir=/foo/zk/log
  4. clientPort=2181
  5. initLimit=5
  6. syncLimit=2
  7. maxClientCnxns=200000
  8. minSessionTimeout=1000
  9. maxSessionTimeout=180000
  10. server.1=foo1:2888:3888
  11. server.2=foo2:2888:3888
  12. server.3=foo3:2888:3888
  13. server.4=foo4:2888:3888
  14. server.5=foo5:2888:3888
  15. admin.serverPort=8080

dataDir下创建myid文件内容从1开始自增每个机器不一样即可。

  1. 1

启动

  1. bin/zkServer.sh start
  2. # 下面参数返回启动日志,可以用来排查问题
  3. bin/zkServer.sh start-foreground

Kerberos配置

zoo.cfg

  1. authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
  2. jaasLoginRenew=3600000

在conf目录创建如下两个文件
创建jaas.conf文件

  1. Server {
  2. com.sun.security.auth.module.Krb5LoginModule required
  3. useKeyTab=true
  4. keyTab="/opt/apache-zookeeper/conf/zookeeper.keytab"
  5. storeKey=true
  6. useTicketCache=false
  7. principal="zookeeper/krb03.k.com@K.COM";
  8. };

创建java.env文件

  1. export JVMFLAGS="-Djava.security.auth.login.config=/opt/apache-zookeeper/conf/jaas.conf"