安装配置 JAVA 开发环境
下载 ZOOKEEPER
zookeeper 下载地址 http://mirrors.shu.edu.cn/apache/zookeeper/
在下载的 zookeeper 目录里创建 3 个文件, zk1,zk2,zk3, 用意存放每个集群的数据文件.
并在三个目录下创建 data 和 logs 目录
配置配置文件
将 conf 目录下的 zoo-sample.cfg 更改为 zoo1.cfg , zoo2.cfg ,zoo3.cfg
配置如下
- # The number of milliseconds of each tick
- # 心跳检测时间
- tickTime=2000
- # The number of ticks that the initial
- # synchronization phase can take
- # 心跳检测失败最大次数
- initLimit=10
- # The number of ticks that can pass between
- # sending a request and getting an acknowledgement
- syncLimit=5
- # the directory where the snapshot is stored.
- # do not use /tmp for storage, /tmp here is just
- # example sakes.
- # 内存数据库保存的模糊快照的目录, 如果某个服务器为集群中的一台, 则 id 文件也保存在该目录下
- # 快照异步写入, 不会阻塞
- dataDir= ../zk1/data
- dataLogDir= ../zk1/logs
- # the port at which the clients will connect
- # TCP 监听端口
- clientPort=2181
- # the maximum number of client connections.
- # increase this if you need to handle more clients
- #maxClientCnxns=60
- #
- # Be sure to read the maintenance section of the
- # administrator guide before turning on autopurge.
- #
- # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
- #
- # The number of snapshots to retain in dataDir
- #autopurge.snapRetainCount=3
- # Purge task interval in hours
- # Set to "0" to disable auto purge feature
- #autopurge.purgeInterval=1
- # server.myid=IP:PORT1;PORT2
- #PORT1: 服务器与集群中的 LEADER 服务器交换信息的端口
- #PORT2: 万一集群中的 LEADER 挂了, 需要一个端口来重新进行宣讲 选出新的 LEADER
- server.1=127.0.0.1:2881:3881
- server.2=127.0.0.1:2882:3882
- server.3=127.0.0.1:2883:3883
三个文件的区别是这三个配置
- zoo1.cfg
- dataDir= ../zk1/data
- dataLogDir= ../zk1/logs
- clientPort=2181
- zoo2.cfg
- dataDir= ../zk2/data
- dataLogDir= ../zk2/logs
- clientPort=2182
- zoo3.cfg
- dataDir= ../zk3/data
- dataLogDir= ../zk3/logs
- clientPort=2183
tickTime: 基本事件单元, 以毫秒为单位. 这个时间是作为 zookeeper 服务器之间或客户端与服务器间维持心跳的时间. 也就是每隔 tickTime 时间就会发送一个心跳
dataDir: 存储内存中数据库快照的位置, 就是 zookeeper 保存数据的目录, 默认情况下, zookeeper 将数据的日志问也保存在这个目录里
clientPort: 客户端连接 zookeeper 服务器的端口, 默认是 2181,zookeeper 会监听这个端口, 接收客户端的访问请求
initLimit: 这个配置项是用来配置 zookeeper 接收客户端初始化连接能忍受多少个心跳时间间隔数. 当已经超过 10 个心跳的时间 (tickTime) 长度后, zookeeper 服务器还没有接收到客户端的返回信息, 那么表明这个客户端连接失败. 总的时间长度就是 10*2000 = 20 秒
syncLimit: 这个配置项标识 Leader 和 Follower 之间发送消息, 请求和应答的长度, 最长不能超过多少个 tickTime 的时间长度, 总的时间长度就是 5 * 2000 = 10 秒
server.myid=IP:Port1:Port2, myid 是服务器的编号, 一个正整数, 一般是 0,1,2,3 等待, port1 表示的是服务器与集群中的 Leader 服务器交换信息的端口, Port2 表示的是万一集群中的 Leader 服务器宕机了, 需要一个端口来重新进行宣讲, 选出一个新的 Leader, 如果是不同的机器, 可以选用相同的端口, 由于本次测试是在单机上进行, 因此选用不同的端口.
创建 myid 文件
在每个目录下的 data 目录里创建 myid 文件, 文件内容分别为 1,2,3.
启动服务
- lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh start ../conf/zoo1.cfg
- ZooKeeper JMX enabled by default
- Using config: ../conf/zoo1.cfg
- Starting zookeeper ... STARTED
- lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh start ../conf/zoo2.cfg
- ZooKeeper JMX enabled by default
- Using config: ../conf/zoo2.cfg
- Starting zookeeper ... STARTED
- lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh start ../conf/zoo3.cfg
- ZooKeeper JMX enabled by default
- Using config: ../conf/zoo3.cfg
- Starting zookeeper ... STARTED
查看服务状态
- lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo1.cfg
- ZooKeeper JMX enabled by default
- Using config: ../conf/zoo1.cfg
- Mode: follower
- lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo2.cfg
- ZooKeeper JMX enabled by default
- Using config: ../conf/zoo2.cfg
- Mode: leader
- lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo3.cfg
- ZooKeeper JMX enabled by default
- Using config: ../conf/zoo3.cfg
- Mode: follower
可以看到, ZK2 选举成为了 leader, 另外两个为 follower.
客户端连接测试
- lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkCli.sh -server 127.0.0.1:2181
- lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkCli.sh -server 127.0.0.1:2182
- lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkCli.sh -server 127.0.0.1:2183
分别连接三个集群节点
在任何一个集群节点进行操作, 其他集群也会同步更新.
在 zk2 创建节点
- [zk: 127.0.0.1:2182(CONNECTED) 1] create /test1 ""
- Created /test1
在 zk1 查看节点
- [zk: 127.0.0.1:2181(CONNECTED) 1] ls /
- [zookeeper, test1]
来源: http://www.bubuko.com/infodetail-2990233.html