一、ZooKeeper介绍

Zookeeper 是一个开源的分布式的,为分布式框架提供协调服务的 Apache 项目。
提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。

官网:[https://zookeeper.apache.org](https://zookeeper.apache.org)

在这里插入图片描述

二、ZooKeeper安装

zookeeper有单机、伪集群、集群三种部署方式,本例使用的zookeeper版本是:zookeeper-3.5.7

注意: 需要有Java环境的支持,JDK的安装这里不做说明

1.单机模式

1.1 安装与配置

  1. 下载好zookeeper,拷贝 apache-zookeeper-3.5.7-bin.tar.gz 安装包到 Linux 系统下
  2. 解压到指定目录
    tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
    

在这里插入图片描述

  1. 为了使用方便,原名称过长,可以修改名称,不修改也不影响

    mv apache-zookeeper-3.5.7 -bin/ zookeeper-3.5.7
    
  2. 配置修改,将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg

    mv zoo_sample.cfg zoo.cfg
    
  3. 打开 zoo.cfg 文件,修改 dataDir 路径

    vim zoo.cfg
    

    修改如下内容:
    dataDir=/opt/module/zookeeper-3.5.7/zkData

  4. 在/opt/module/zookeeper-3.5.7/这个目录下创建 zkData 文件夹

    mkdir zkData
    

1.2 操作 Zookeeper

  1. 启动 Zookeeper

     ./zkServer.sh start
    

在这里插入图片描述

  1. 查看进程是否启动

    jps -l
    

在这里插入图片描述

  1. 查看状态

    ./zkServer.sh status
    

在这里插入图片描述

  1. 启动客户端

    ./zkCli.sh
    
  2. 退出客户端

    quit
    
  3. 停止 Zookeeper

    ./zkServer.sh stop
    

在这里插入图片描述

1.3 配置文件说明

# The number of milliseconds of each tick
# tickTime:CS通信心跳数
# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000

# The number of ticks that the initial 
# synchronization phase can take
# initLimit:LF初始通信时限
# 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=10

# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
# dataDir:数据文件目录
# Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/opt/module/zookeeper-3.5.7/zkData

# dataLogDir:日志文件目录
# Zookeeper保存日志文件的目录。
dataLogDir=/opt/module/zookeeper-3.5.7/logs

# the port at which the clients will connect
# clientPort:客户端连接端口
# 客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181

# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
# 保留数量3
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
# 清理时间间隔1小时
#autopurge.purgeInterval=1

####################### 集群配置 ##########################
# 配置参数解读
# server.A=B:C:D
# A 是一个数字,表示这个是第几号服务器;文件 myid 里面有一个数据 就是 A 的值
# B 是这个服务器的地址;
# C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口(默认为2888);
# D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口(默认为3888)。
# 一般来说,集群中每个服务器的C端口都是一样,每个服务器的D端口也是一样。但是当所采用的为伪集群时,IP地址都一样,只能时C端口和D端口不一样
# 注意:因为是在同一台服务器上配置的zookeeper 集群,所以ip地址是一样的,但是端口号要设置不同
#server.1=centos8:2888:3888
#server.2=centos8:2889:3889
#server.3=centos8:2890:3890

2.伪集群模式

伪集群模式就是在同一主机启动多个zookeeper并组成集群

  1. 在同一台主机上,通过复制并修改得到三个zookeeper配置文件和数据目录

在这里插入图片描述在这里插入图片描述

  1. 配置服务器编号,在/opt/module/zookeeper-3.5.7/zkData 目录下创建一个 myid 的文件

    在文件中添加与 server 对应的编号(注意:上下不要有空行,左右不要有空格)
    注意: 添加 myid 文件,一定要在 Linux 里面创建,在 notepad++里面很可能乱码

    vi myid
    
  2. 将配置文件中要修改的部分做修改

    进入 zkData1 的目录,在 myid 文件中,写入 1;
    同样在 zkData2 和 zkData3 进行相同的操作,
    区别是 myid 不同:zkData2 的 myid 文件写 2,zkData3 的 myid 文件写 3。

    在配置文件中要注意修改 dataDir、clientPort 的值,以及集群配置部分对应的 server 的编号
    因为是在同一台服务器上配置的zookeeper 集群,所以ip地址是一样的,但是端口号要设置不同
    此处以 zoo2.cfg 为例,zoo1.cfg 和 zoo3.cfg 内容都是一样的,注意要修改的地方即可。

在这里插入图片描述

  1. 分别启动三个zookeeper节点

    ./zkServer.sh start ../conf/zoo1.cfg
    

在这里插入图片描述

  1. 查看节点状态

    ./zkServer.sh status ../conf/zoo2.cfg
    

在这里插入图片描述

3.集群模式

集群模式就是在不同主机上安装 zookeeper 然后组成集群的模式,可以参考伪集群模式安装

  1. 在三台服务器上分别部署1个 ZooKeeper

  2. zookeeper 配置文件 conf/zoo.cfg 中集群配置部分,如下:
    IP地址不同

    server.1=127.0.0.1:2888:3888
    server.2=127.0.0.2:2888:3888
    server.3=127.0.0.3:2888:3888
    
  3. 分别启动三个 zookeeper 节点,即完成对 ZooKeeper 集群的安装配置


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐