Zookeeper介绍与安装
1.介绍
zookeeper 一个开源的分布式 为分布式应用提供协调服务的apache项目
2. 特点
一个领导者 多个跟随者组成的集群
只要半数以上节点存活就能正常服务
全局数据一致 每个server保存一份相同的数据副本,无论连接那个数据都一致
更新请求顺序进行 来自同一客户端的更新请求按发送顺序依次执行
数据更新原子性 要么成功要么失败
实时性
3.数据结构
整体是一棵树 每个节点称为一个znode 每一个znode默认能存储1MB的数据,每个znode唯一标识
4.应用场景
统一命名服务 配置管理 集群管理 服务器节点动态上下线
5.安装
下载地址 zookeeper.apache.org
安装JDK
zoo_sample.cfg 这个文件是官方给我们的zookeeper的样板文件,给他复制一份命名为zoo.cfg,
zoo.cfg是官方指定的文件命名规则
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/zkdata
dataLogDir=/opt/zookeeper/zkdatalog
clientPort=2181
server.1=192.168.7.100:12888:13888
server.2=192.168.7.101:12888:13888
server.3=192.168.7.107:12888:13888
#server.1 这个1是服务器的标识也可以是其他的数字, 表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里
#192.168.7.107为集群里的IP地址,第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888
#tickTime:
这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
#initLimit:
这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
#syncLimit:
这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒
#dataDir:
快照日志的存储路径
#dataLogDir:
事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
#clientPort:
这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点
每台节点上创建myid文件
#server1
echo "1" > /opt/zookeeper/zkdata/myid
#server2
echo "2" > /opt/zookeeper/zkdata/myid
#server3
echo "3" > /opt/zookeeper/zkdata/myid
6.启动服务
进入到Zookeeper的bin目录下
cd /opt/zookeeper/zookeeper-3.4.6/bin
启动服务(3台都需要操作)
./zkServer.sh start
检查服务状态
检查服务器状态
./zkServer.sh status
通过status就能看到状态:
./zkServer.sh status
JMX enabled by default
Using config: /opt/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg #配置文件
Mode: follower #他是否为领导
zk集群一般只有一个leader,多个follower,主一般是相应客户端的读写请求,而从主同步数据,当主挂掉之后就会从follower里投票选举一个leader出来。
可以用“jps”查看zk的进程,这个是zk的整个工程的main
执行命令jps
20348 Jps
4233 QuorumPeerMain
7.节点类型
持久性 断开后创建的节点不删除
短暂性 断开后 节点自己删除