zoo.cfg

  1. # The number of milliseconds of each tick
  2. tickTime=2000
  3. # The number of ticks that the initial
  4. # synchronization phase can take
  5. initLimit=10
  6. # The number of ticks that can pass between
  7. # sending a request and getting an acknowledgement
  8. syncLimit=5
  9. # 存储快照位置和事务日志,一般分开存储
  10. # do not use /tmp for storage, /tmp here is just
  11. # example sakes.
  12. dataDir=/tmp/zookeeper
  13. # the port at which the clients will connect
  14. clientPort=2181
  15. # the maximum number of client connections.
  16. # increase this if you need to handle more clients
  17. #maxClientCnxns=60
  18. #
  19. # Be sure to read the maintenance section of the
  20. # administrator guide before turning on autopurge.
  21. #
  22. # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
  23. #
  24. # The number of snapshots to retain in dataDir
  25. #autopurge.snapRetainCount=3
  26. # Purge task interval in hours
  27. # Set to "0" to disable auto purge feature
  28. #autopurge.purgeInterval=1

基本命令

  1. # 查看结点
  2. [zk: 127.0.0.1:2181(CONNECTED) 0] ls /
  3. [zookeeper]
  4. # 创建一个结点
  5. [zk: 127.0.0.1:2181(CONNECTED) 1] create /test "content"
  6. [zookeeper, test]
  7. # 获取结点内容
  8. [zk: 127.0.0.1:2181(CONNECTED) 2] get /test
  9. test
  10. cZxid = 0x4
  11. ctime = Tue Feb 18 11:28:15 CST 2020
  12. mZxid = 0x4
  13. mtime = Tue Feb 18 11:28:15 CST 2020
  14. pZxid = 0x4
  15. cversion = 0
  16. dataVersion = 0
  17. aclVersion = 0
  18. ephemeralOwner = 0x0
  19. dataLength = 4
  20. numChildren = 0
  21. # 删除结点
  22. [zk: 127.0.0.1:2181(CONNECTED) 3] delete /test

集群配置

如果是三台 zookeeper 组成的集群

1、配置三个 zoo.cfg

**
指定不同的 clientPort 端口号,指定每台机器不同的 dataDir 位置

  1. # zoo1.cfg
  2. tickTime=2000
  3. initLimit=10
  4. syncLimit=5
  5. dataDir=/home/eric/zookeeper-3.4.14/data/data_1
  6. clientPort=2181
  7. server.1=localhost:2887:3887
  8. server.2=localhost:2888:3888
  9. server.3=localhost:2889:3889
  1. # zoo2.cfg
  2. tickTime=2000
  3. initLimit=10
  4. syncLimit=5
  5. dataDir=/home/eric/zookeeper-3.4.14/data/data_2
  6. clientPort=2182
  7. server.1=localhost:2887:3887
  8. server.2=localhost:2888:3888
  9. server.3=localhost:2889:3889
  1. # zoo3.cfg
  2. tickTime=2000
  3. initLimit=10
  4. syncLimit=5
  5. dataDir=/home/eric/zookeeper-3.4.14/data/data_3
  6. clientPort=2183
  7. server.1=localhost:2887:3887
  8. server.2=localhost:2888:3888
  9. server.3=localhost:2889:3889

2、建立 myid 文件

分别在不同的 dataDir 下建立 myid 文件,并指定不同的值

  1. $ echo "1" > data_1/myid
  2. $ echo "2" > data_2/myid
  3. $ echo "3" > data_3/myid

3、分别启动每个服务

由于是 3 台机器组成的集群,起始只要有两台启动成功了,客户端就可以进行连接了

  1. $ zkServer.sh start ~/zookeeper-3.4.14/conf/zoo1.cfg
  2. $ zkServer.sh start ~/zookeeper-3.4.14/conf/zoo2.cfg
  3. $ zkServer.sh start ~/zookeeper-3.4.14/conf/zoo3.cfg

由于是依次启动 zoo1.cfg,zoo2.cfg,zoo3.cfg 所以 leader 就是 zoo2 这台服务器了

**

4、添加 observer

observer 配置

**

  1. # zoo-observer.cfg
  2. tickTime=2000
  3. initLimit=10
  4. syncLimit=5
  5. dataDir=/home/eric/zookeeper-3.4.14/data/data_ob
  6. clientPort=2184
  7. peerType=observer
  8. server.1=localhost:2887:3887
  9. server.2=localhost:2888:3888
  10. server.3=localhost:2889:3889
  11. server.4=localhost:2890:3890:observer
  1. # 写入标识符到 myid
  2. echo 4 > /home/eric/zookeeper-3.4.14/data/data_ob/myid

follower 配置(修改)

  1. # zoo1.cfg 添加
  2. server.4=localhost:2890:3890:observer
  1. # zoo2.cfg 添加
  2. server.4=localhost:2890:3890:observer
  1. # zoo3.cfg 添加
  2. server.4=localhost:2890:3890:observer

启动 observer

  1. $ zkServer.sh status ~/zookeeper-3.4.14/conf/zoo-observer.cfg
  2. ZooKeeper JMX enabled by default
  3. Using config: /home/eric/zookeeper-3.4.14/conf/zoo-observer.cfg
  4. Mode: observer