深入了解ZooKeeper概念,安装、部署集群、基本操作

Zookeeper介绍

Apache ZooKeeper 是Apache软件基金会的一个软件项目,它为大型的分布式计算提供了开源的分布式配置服务、同步服务、命名注册等,ZooKeeper曾经是Hadoop的一个子项目,现在已经是一个独立的顶级项目。

1、下载与安装

开源软件,自行官网下载

1.1、解压

在这里插入图片描述

1.2、配置

进入conf文件夹,找到zoo_sample.cfg文件,命名为zoo.cfg
在这里插入图片描述

1.3、配置文件介绍

  • tickTime:ZooKeeper的服务器和客户端之间维持心跳的间隔,每一个tickTime的时间就会发送一个心跳,tickTime是以好秒为单位的。zookeeper的客户端和服务器之间也有和web的开发类似的session的概念,而zookeeper的最小的session的过期时间也就是tickTime的2倍
  • initTime:Follower在启动的过程中,会冲Leader同步最新的数据,然后确认自己能够对外的起始状态。Leader允许F在initTime的时间内完成工作。数据量大的时候,适当的调大此参数,默认为10
  • syncLimit:运行过程中,Leader负责与ZK集群的所有机器进行通信,L发出心跳在syncLimit时间内没有收到响应,就认为这个F已经不在线了。
  • dataDir:存储快照文件的snapshot的目录,默认情况下,事务日志也会存储在这里。建议存储日志的时候,同时配置参数dataLogDir,事务日志的写性能会影响zk性能。
  • clientPort:客户端连接服务器的端口

2、启动服务端

在这里插入图片描述

3、停止服务端

在这里插入图片描述

4、使用客户端

在这里插入图片描述

5、集群环境的构建

单机环境模拟集群环境,所有需要不同的端口来模拟不同的主机。

5.1、复制配置文件

cd {zookeeperurl}/conf/

cp zoo.cfg zoo1.cfg
cp zoo.cfg zoo2.cfg
cp zoo.cfg zoo3.cfg

5.2、创建数据以及日志文件的目录

mkdir -p /zookeeper/data_1
mkdir -p /zookeeper/data_2
mkdir -p /zookeeper/data_3

mkdir -p /zookeeper/logs_1
mkdir -p /zookeeper/logs_2
mkdir -p /zookeeper/logs_3

5.3、创建mid文件

echo “1” > /zookeeper/data_1/myid
echo “2” > /zookeeper/data_2/myid
echo “3” > /zookeeper/data_3/myid

5.4、修改配置文件

zoo1.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper/data_1
clientPort=2181
dataLogDir=/zookeeper/logs_1
# server.x的x与myid保持一致,第一个端口用于leader和leaderner的同步,第二个端口用于选举过程中的投票通信
server.1=localhost:2887:3887 
server.2=localhost:2888:3888
server.3=localhost:2889:3889	

zoo2.cfg

```bash
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper/data_2
clientPort=2182
dataLogDir=/zookeeper/logs_2
# server.x的x与myid保持一致,第一个端口用于leader和leaderner的同步,第二个端口用于选举过程中的投票通信
server.1=localhost:2887:3887 
server.2=localhost:2888:3888
server.3=localhost:2889:3889	

zoo3.cfg

```bash
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper/data_3
clientPort=2183
dataLogDir=/zookeeper/logs_3
# server.x的x与myid保持一致,第一个端口用于leader和leaderner的同步,第二个端口用于选举过程中的投票通信
server.1=localhost:2887:3887 
server.2=localhost:2888:3888
server.3=localhost:2889:3889	
5.5、启动集群

zkServer.sh start {zookeeperUrl}/zookeeper-3.4.12/conf/zoo1.cfg
zkServer.sh start {zookeeperUrl}/zookeeper-3.4.12/conf/zoo2.cfg
zkServer.sh start {zookeeperUrl}/zookeeper-3.4.12/conf/zoo3.cfg

5.6、验证

zkServer.sh status {zookeeperUrl}zookeeper-3.4.12/conf/zoo1.cfg
zkServer.sh status {zookeeperUrl}zookeeper-3.4.12/conf/zoo2.cfg
zkServer.sh status {zookeeperUrl}zookeeper-3.4.12/conf/zoo3.cfg

server1:Mode: follower
server1:Mode: leader
server1:Mode: follower

打开命令行客户端分别连接3个server:

zkCli.sh -server localhost:2181
zkCli.sh -server localhost:2182
zkCli.sh -server localhost:2183

连上之后执行 ls /,显示3个server的目录是一致的,
在server1上执行文件夹,你就会看到同样的2、3都会创建。

6、Observer

节点配置中增加:peerType=observer
servers列表中增加:server.4=localhost:2890:3890:observer

7、集群的角色
  • 领导者(Leader):负责投票的发起和决策,最终更新状态。
  • 跟随者(Follower):用于接受客户端请求,并参与Leader的投票
  • 观察者(Observer):接受客户端的连接,将请求转发给leader,但是不参与投票,只是同步leader的状态。
  • 学习者( Learner):和leader能同步状态的server统称为Learner,
8、ZooKeeper中的CAP

ZooKeeper至少满足了cp,牺牲了可用性,保证强一致性
但是如果集群中有Leader、Follower、Observer,如果挂掉的是Observer,对于集群并没有影响,集群还是可以用的,是不过是Observer的数据不一致了,这个角度来讲的话,牺牲了一致性,满足了AP

9、ZooKeeper能做什么

1、统一命名中心
2、配置中心
3、集群监控和Master选举
4、分布式锁

未完待遇、

一个人走的快,一群人走的远

猜你喜欢

转载自blog.csdn.net/qq_42722951/article/details/112333058
今日推荐