安装
Zookeeper 的运行需要 jdk。使用前 Linux 系统要安装好 jdk.
1、下载安装包
下载地址:https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
由于zookeeper集群的运行需要Java运行环境,所以需要首先安装 JDK
2、上传 解压到指定文件下 修改文件夹名
[root@localhost tools]# rz //上传
[root@localhost tools]# tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /liux/dev
[root@localhost dev]# mv apache-zookeeper-3.7.0-bin/ zookeeper-3.7.0
3、配置文件
在 zookeeper 的 conf 目录下,拷贝样例文件 zoo-sample.cfg 为 zoo.cfg,zookeeper 启动时会读取该文件作为默认配置文件。
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
4、启动
启动 Zookeeper (切换到安装目录的 bin 目录下):./zkServer.sh start
5、关闭
关闭(切换到安装目录的 bin 目录下):./zkServer.sh stop
6、配置环境变量
不是必要操作,只不过如果不配置环境变量,那么每次启动zookeeper需要到安装文件的 bin 目录下去启动。
首先进入到 /etc/profile 目录,添加相应的配置信息:
#set zookeeper environment
export ZK_HOME=/liux/dev/ zookeeper-3.7.0
export PATH=$PATH:$ZK_HOME/bin
shutdown -r now 重启下服务器或者 source /etc/profile 均可使环境变量生效
搭建zookeeper集群
1、集群特点
集群中只要有超过半数的机器是正常工作的,那么整个集群对外就是可用的;也就是说 如果有 2 个 zookeeper,那么只要有 1 个故障了,zookeeper 就不能用了,因为 1 没有过半, 所以 2 个 zookeeper 不是高可用的,不能容忍任何 1 台发生故障; 同理,要是有3个zookeeper,一个故障了,还剩下2个正常的,过半了,所以3个zookeeper 才是高可用的,因为能容忍 1 台发生故障; 总结,Zookeeper 集群中 Zookeeper 节点个数是奇数,保证高可用至少要 3 个以上。
在一台计算机上安装 3 个 Zookeeper 搭建一个伪集群。每个安装的 Zookeeper 相当于一个独立的服务器上的集群节点。
2、搭建集群
把已经安装好的 Zookeeper 复制三份分别命名: zookeeper-3.7.1 、 zookeeper-3.7.2、 zookeeper-3.7.3。
执行 cp -rf 拷贝命令
3、创建 data 目录存放数据
在每个 Zookeeper 的主目录下创建目录 data
4、修改 zoo.cfg
加入集群中各 Zookeeper 的信息,3 个 Zookeeper 各自 conf 的 zoo.cfg 文件修改内容。
参考文档:https://zookeeper.apache.org/doc/r3.5.8/zookeeperStarted.html
zookeeper-3.7.1 的 zoo.cfg:
dataDir=/liux/dev/zookeeper-3.7.1/data/
clientPort=2182
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
其中 2888 端口号是 zookeeper 服务之间通信的端口,3888 是 zookeeper 与选举新的领导者,
追随者连接到领导者服务器的端口。server.1 中数字是集群中 Zookeeper 的标志。用来区别
其他 Zookeeper。
其他两个 Zookeeper 的 conf/zoo.cfg
zookeeper-3.7.2/conf/zoo.cfg
clientPort=21i83
dataDir=/liux/dev/zookeeper-3.7.2/data/
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
zookeeper-3.7.3/conf/zoo.cfg
clientPort=2184
dataDir=/liux/dev/zookeeper-3.7.3/data/
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
zoo.cfg 部分参数解析:
tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小的session过期时间为2倍tickTime
dataDir:存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影像系统性能。
clientPort:监听客户端连接的端口。
initLimit:允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
syncLimit:表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
server.A=B:C:D
A:是一个数字,表示这个是服务器的编号;B:是这个服务器的 ip 地址;C:Zookeeper服务器之间的通信端口;D:Leader选举的端口。
5、增加 myid 文件
Zookpeer使用myid识别当前服务器是谁,和zoo.cfg中的server.1 , server.2,server.3对应。 在每个 Zookeeper 数据存放目录 data 下新建 myid 文件。文件没有扩展名。
zookeeper-3.7.1/data/myid 文件内容是 1
zookeeper-3.7.2/data/myid 文件内容是 2
zookeeper-3.7.3/data/myid 文件内容是 3
6、启动三个 Zookeeper
进入bin 目录执行命令:./zkServer.sh star
7、查看 Zookeeper 状态
执行命令 ./zkServer.sh status