zookeeper的安装分为三种模式:单机模式、集群模式和伪集群模式。

单机模式

首先,从Apache官网下载一个Zookeeper稳定版本,本次教程采用的是zookeeper-3.4.12版本。

tar -zxvf zookeepre-3.4.12.tar.gz

Zookeeper服务器包含在单个jar文件中(本环境下为 zookeeper-3.4.12.jar),安装此服务需要用户自己创建一个配置文件。默认配置文件路径为 Zookeeper-3.4.12/conf/目录下,文件名为zoo.cfg。进入conf/目录下可以看到一个zoo_sample.cfg文件,可供参考。通过以下代码在conf目录下创建zoo.cfg文件:

cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

然后解压zookeeper-3.4.12.tar.gz文件到安装目录下:

模板文件中已经有基本的配置,本例需要修改的配合项为dataDir。

dataDir=/home/xxxx/zookeeper/data

在这个文件中,各个语句的含义:
tickTime : 服务器与客户端之间交互的基本时间单元(ms)
dataDir : 保存zookeeper数据路径
dataLogDir : 保存zookeeper日志路径,当此配置不存在时默认路径与dataDir一致
clientPort : 客户端访问zookeeper时经过服务器端时的端口号,默认配置为2181
  使用单机模式时需要注意,在这种配置方式下,如果zookeeper服务器出现故障,zookeeper服务将会停止。

集群模式

Zookeeper最主要的应用场景是集群,下面介绍如何在一个集群上部署一个zookeeper。只要集群上的大多数zookeeper服务启动了,那么总的zookeeper服务便是可用的。另外,最好使用奇数台服务器。如歌zookeeper拥有5台服务器,那么在最多2台服务器出现故障后,整个服务还可以正常使用。
  之后的操作和单机模式的安装类似,我们同样需要Java环境,下载最新版的zookeeper并配置相应的环境变量。不同之处在于每台机器上的conf/zoo.cfg配置文件的参数设置不同,用户可以参考下面的配置:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/jxwch/server1/data
dataLogDir=/home/jxwch/server1/dataLog
clientPort=2181
server.1=10.xx.xx.xx1:2888:3888
server.2=10.xx.xx.xx2:2888:3888
server.3=10.xx.xx.xx3:2888:3888
maxClientCnxns=60

在这个配置文件中,新出现的语句的含义:
initLimit : 此配置表示允许follower连接并同步到leader的初始化时间,它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败。
syncLimit : Leader服务器与follower服务器之间信息同步允许的最大时间间隔,如果超过次间隔,默认follower服务器与leader服务器之间断开链接。
maxClientCnxns : 限制连接到zookeeper服务器客户端的数量
server.id=host:port:port : 表示了不同的zookeeper服务器的自身标识,作为集群的一部分,每一台服务器应该知道其他服务器的信息。用户可以从“server.id=host:port:port” 中读取到相关信息。在服务器的data(dataDir参数所指定的目录)下创建一个文件名为myid的文件,这个文件的内容只有一行,指定的是自身的id值。比如,服务器“1”应该在myid文件中写入“1”。这个id必须在集群环境中服务器标识中是唯一的,且大小在1~255之间。这一样配置中,zoo1代表第一台服务器的IP地址。第一个端口号(port)是从follower连接到leader机器的端口,第二个端口是用来进行leader选举时所用的端口。所以,在集群配置过程中有三个非常重要的端口:clientPort:2181、port:2888、port:3888。

echo 1 > /home/xxx/zookeeper/data/myid
echo 2 > /home/xxx/zookeeper/data/myid
echo 3 > /home/xxx/zookeeper/data/myid

伪集群模式

在zookeeper集群配置文件中,clientPort参数用来设置客户端连接zookeeper服务器的端口。server.1=IP1:2888:3888中,IP1指的是组成Zookeeper服务器的IP地址,2888为组成zookeeper服务器之间的通信端口,3888为用来选举leader的端口。由于伪集群模式中,我们使用的是同一台服务器,也就是说,需要在单台机器上运行多个zookeeper实例,所以我们必须要保证多个zookeeper实例的配置文件的client端口不能冲突。
下面简单介绍一下如何在单台机器上建立伪集群模式。首先将zookeeper-3.4.12.tar.gz分别解压到server1,server2,server3目录下:

tar -zxvf zookeeper-3.4.12.tar.gz  /home/xxx/zk/server1
tar -zxvf zookeeper-3.4.12.tar.gz  /home/xxx/zk/server2
tar -zxvf zookeeper-3.4.12.tar.gz  /home/xxx/zk/server3

然后在server1/data/目录下创建文件myid文件并写入“1”,同样在server2/data/,目录下创建文件myid并写入“2”,server3进行同样的操作。

echo 1 > /home/xxx/zk/server1/data/myid
echo 2 > /home/xxx/zk/server2/data/myid
echo 3 > /home/xxx/zk/server3/data/myid

下面分别展示在server1/conf/、server2/conf/、server3/conf/目录下的zoo.cfg文件:
server1/conf/zoo.cfg文件

# Server 1
# The number of milliseconds of each tick
# 服务器与客户端之间交互的基本时间单元(ms)
tickTime=2000# The number of ticks that the initial
# synchronization phase can take
# 此配置表示允许follower连接并同步到leader的初始化时间,它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败。
initLimit=10# The number of ticks that can pass between
# sending a request and getting an acknowledgement
# Leader服务器与follower服务器之间信息同步允许的最大时间间隔,如果超过次间隔,默认follower服务器与leader服务器之间断开链接
syncLimit=5# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# 保存zookeeper数据,日志路径
dataDir=/home/xxx/zk/server1/data
dataLogDir=/home/xxx/zk/server1/dataLog# the port at which the clients will connect
# 客户端与zookeeper相互交互的端口
clientPort=2181
server.1= 127.0.0.1:2888:3888
server.2= 127.0.0.1:2889:3889
server.3= 127.0.0.1:2890:3890#server.A=B:C:D  其中A是一个数字,代表这是第几号服务器;B是服务器的IP地址;C表示服务器与群集中的“领导者”交换信息的端口;当领导者失效后,D表示用来执行选举时服务器相互通信的端口。
# the maximum number of client connections.
# increase this if you need to handle more clients
# 限制连接到zookeeper服务器客户端的数量
maxClientCnxns=60
server2/conf/zoo.cfg文件
# Server 2
# The number of milliseconds of each tick
tickTime=2000# The number of ticks that the initial
# synchronization phase can take
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=/home/xxx/zk/server2/data
dataLogDir=/home/xxx/zk/server2/dataLog# the port at which the clients will connect
clientPort=2182
server.1= 127.0.0.1:2888:3888
server.2= 127.0.0.1:2889:3889
server.3= 127.0.0.1:2890:3890
server3/conf/zoo.cfg文件
# Server 3
# The number of milliseconds of each tick
tickTime=2000# The number of ticks that the initial
# synchronization phase can take
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=/home/xxx/zk/server3/data
dataLogDir=/home/xxx/zk/server3/dataLog# the port at which the clients will connect
clientPort=2182
server.1= 127.0.0.1:2888:3888
server.2= 127.0.0.1:2889:3889
server.3= 127.0.0.1:2890:3890

从上述三个代码清单可以发现,除了clientPort不同之外,dataDir和dataLogDir也不同。另外,不要忘记dataDir所对应的目录中创建的myid文件来指定对应的zookeeper服务器实例。
Zookeeper位集群模式运行

首先启动server1服务器:

cd zookeeper-3.4.12/bin
./zkServer.sh start

首先启动server2服务器:

cd zookeeper-3.4.12/bin
./zkServer.sh start

首先启动server3服务器:

cd zookeeper-3.4.12/bin
./zkServer.sh start

检查分别在三台机器上Zookeeper状态

./zkServer.sh status

说明server1服务器此时处于follower模式


资料整理与引用
1、https://baike.baidu.com/item/zookeeper/4836397?fr=aladdin
2、https://www.cnblogs.com/endsock/p/3480093.html
3、https://www.cnblogs.com/jxwch/p/6433310.html
4、https://www.cnblogs.com/felixzh/p/5869212.html
5、https://blog.csdn.net/liu857279611/article/details/70495413
6、https://blog.csdn.net/z69183787/article/details/54730322
7、https://blog.csdn.net/z69183787/article/details/53023578
8、https://blog.csdn.net/hohoo1990/article/details/78617336

ZooKeeper三种安装模式相关推荐

  1. 2021年大数据Hive(二):Hive的三种安装模式和MySQL搭配使用

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive的三种安装模式和MySQL搭配使用 一.Hive的安装方 ...

  2. Hadoop三种安装模式

    2019独角兽企业重金招聘Python工程师标准>>> Hadoop三种安装模式:单机模式,伪分布式,真正分布式 一 单机模式standalone 单机模式是Hadoop的默认模式. ...

  3. 大数据Hive(二):Hive的三种安装模式和MySQL搭配使用

    文章目录 Hive的三种安装模式和MySQL搭配使用 一.Hive的安装方式 1.内嵌模式 2.本地模式

  4. hadoop离线阶段(第十三节)数据仓库、hive简介、hive安装和hive的三种交互模式

    目录 数据仓库 数据仓库的基本概念 数据仓库的主要特征 数据仓库与数据库区别 数据仓库分层架构 数据仓库元数据管理 Hive简介 什么是Hive Hive的特点 Hive架构 Hive与Hadoop的 ...

  5. VMware虚拟机三种网络模式(桥接、NAT、仅主机)的区别

    由于Linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmware workstations ...

  6. Entity Framework技术系列之2:三种开发模式实现数据访问

    前言 Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发流程大相径庭,开发体验完全不一样.三种开发模式各有优缺点,对 ...

  7. Nacos系列:Nacos的三种部署模式

    三种部署模式 Nacos支持三种部署模式 1.单机模式:可用于测试和单机使用,生产环境切忌使用单机模式(满足不了高可用) 2.集群模式:可用于生产环境,确保高可用 3.多集群模式:可用于多数据中心场景 ...

  8. 云计算的三种服务模式:IaaS,PaaS,SaaS

    1. 简介 IaaS, PaaS和SaaS是云计算的三种服务模式."云"其实是互联网的一个隐喻,"云计算"其实就是使用互联网来接入存储或者运行在远程服务器端的应 ...

  9. grub安装的 三种安装方式

    1. 引言 grub是什么?最常态的理解,grub是一个bootloader或者是一个bootmanager,通过grub可以引导种类丰富的系统,如linux.freebsd.windows等.但一旦 ...

最新文章

  1. Dojo学习笔记(六):dojo/_base/declare
  2. 集众家之所长,你工作中遇到的可视化问题,如何在 Tableau 官网提交 Case?
  3. 我的世界服务器虚拟菜单插件,[综合|娱乐|管理][比赛]VirtualMenu——支持多种类型GUI的虚拟菜单[1.7.10~1.14]...
  4. B君的圆锥(51Nod-1629)
  5. 有轻功:用3行代码让Python数据处理脚本获得4倍提速
  6. Java中的非对称加密算法RSA实现
  7. 软件测试工程师,需要达到什么水平才能顺利拿到 20k+ 无压力?
  8. mysql数据库分表及实现
  9. FreeSWITCH折腾笔记5——G729转码支持
  10. 数据结构4:静态链表
  11. 4G全网通模块 安卓 高通骁龙MSM8909核心板 开发板
  12. The Finalless——新学期的scrum
  13. 一点知识丨Base64 的图片如何完美复制到系统粘贴板
  14. bilibili老版本_bilibili网页版下载
  15. Unity Shader入门精要 第2章 读书笔记
  16. 955 不加班的公司名单:955.WLB
  17. Excel常用的操作
  18. 防止电子邮件网络钓鱼攻击的10种方法
  19. 基于matlab的圆偏振光/两相交流电模拟-导出gif
  20. EICAD V2.92(含3d、平交口)支持升级

热门文章

  1. 自制基于python的DoU log分析脚本
  2. 【AnySDK】目前对外开放的渠道列表
  3. AutoIt3使用攻略
  4. 河北师范大学汇华学院计算机类宿舍在哪,【学校介绍】河北师范大学汇华学院...
  5. 网页前端设计-作业一(HTML5)
  6. 十款经典php网店系统
  7. 大一新生计算机类专业入门
  8. iOS 音频边录边播
  9. android开发歌词滑动效果_android实现歌词自动滚动效果
  10. 冒泡、快速、选择、插入排序以及时间复杂度、空间复杂度的解析