一、简介
1.1、概念
ZooKeeper 是一个开源的分布式协调服务,主要用于解决分布式系统中的数据一致性问题。它提供了一种可靠的机制来管理和协调分布式系统的各个节点。ZooKeeper 的设计目标是简化分布式应用的开发,提供简单易用的接口和高性能、高稳定性的系统。
通俗的理解:
1、zk其实是一个小型的文件存储系统,可以存放少量的数据,这些数据不是什么正儿八经的数据,都是一些关于服务器的小数据。
2、它可以感知服务器是否上线,是否掉线。
3、我们为什么要学习这个东西?我们可以使用zk搭建集群环境。
比如:hadoop的高可用(HA),namenode 存在单节点故障。我们可以启用两个namenode,一个挂掉了,另一个自动启动。另一个namenode如何知道第一个namenode挂掉了?zk就可以做到。
包括:HBase也会使用到。
Java架构中: zk进行分布式锁等操作。
1.2、特点
1. 是一个分布式集群,一个领导者(leader),多个跟随者(follower).
2. 集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。
3. 全局数据一致性:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的。
4. 更新请求按顺序进行:来自同一个client的更新请求按其发送顺序依次执行
5. 数据更新的原子性:一次数据的更新要么成功,要么失败
6. 数据的实时性:在一定时间范围内,client能读到最新数据。
二、安装
关闭三台服务器的防火墙
2.1、上传解压重命名
上传:将zookeeper的安装包上传到 /opt/modules 下
解压:
重命名:
2.2、修改配置文件
进入到/opt/installs/zookeeper/conf文件夹下,重命名zoo_sample.cfg
记得在zookeeper中创建zkData文件夹,以及myid文件
配置环境变量:
刷新环境变量
第二台和第三台服务器也是这样配置,不过第二台的 myid 里面是 2 ;第三台是 3 。
三、使用
3.1、启动zookeeper
一个启动脚本,在/usr/local/bin 下面,创建zk.sh