一、下载安装
ZK官网:Apache ZooKeeper
X.1准备三台机器
通过 VMware ,我们安装了三台虚拟机,用来搭建 zookeeper 集群,虚拟机网络地址如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL5MjMhVzYwYTZiFDOlZWNhVzY2QTYkNDN2EDNyAzY1UzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
zookeeper 集群通常是用来对用户的分布式应用程序提供协调服务的,为了保证数据的一致性,对 zookeeper 集群进行了这样三种角色划分:leader、follower、observer分别对应着总统、议员和观察者。
- 总统(leader):负责进行投票的发起和决议,更新系统状态。
- 议员(follower):用于接收客户端请求并向客户端返回结果以及在选举过程中参与投票
- 观察者(observer):也可以接收客户端连接,将写请求转发给leader节点,但是不参与投票过程,只同步leader的状态。通常对查询操作做负载。
X.2安装JDK
详见linux
X.3为什么zk配置奇数节点?
X.4下载安装zk
官网下载地址:http://mirror.bit.edu.cn/apache/zookeeper/
在 /usr/local 目录下新建 software 目录,然后将 zookeeper 压缩文件上传到该目录中,然后通过如下命令解压:
tar -zxvf zookeeper-3.3.6.tar.gz
修改zoo.cfg
将zookeeper压缩文件解压后,我们进入到 conf 目录:
- 将 zoo_sample.cfg 文件复制并重命名为 zoo.cfg 文件。
cp zoo_sample.cfg zoo.cfg
- 然后通过 vim zoo.cfg 命令对该文件进行修改:
面红色框住的内容即是我们修改的内容:
①、tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime
②、dataDir:存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影像系统性能。
③、client:监听客户端连接的端口。
④、initLimit:允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
⑤、syncLimit:表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
⑥、server.A=B:C:D
A:其中 A 是一个数字,表示这个是服务器的编号;
B:是这个服务器的 ip 地址;
C:Zookeeper服务器之间的通信端口;
D:Leader选举的端口。
我们需要修改的第一个是 dataDir ,在指定的位置处创建好目录。第二个需要新增的是 server.A=B:C:D 配置,其中 A 对应下面我们即将介绍的myid 文件。B是集群的各个IP地址,C:D 是端口配置。
参考官方文档:ZooKeeper: Because Coordinating Distributed Systems is a Zoo