目录

1 搭建要求

2 准备工作

3 配置集群

4 启动集群

5 模拟集群异常


1 搭建要求

真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动很多个虚拟机内存会吃不消,所以我们通常会搭建伪集群,也就是把所有的服务都搭建在一台虚拟机上,用端口进行区分

我们这里要求搭建一个三个节点的Zookeeper集群(伪集群)。

2 准备工作

1、首先必须安装好JDK先。

2、ZooKeeper压缩包上传到服务器,压缩包下载地址: Apache ZooKeeper

3、将Zookeeper解压 ,建立/usr/local/zookeeper-cluster目录,将解压后的Zookeeper复制到以下三个目录。

/usr/local/zookeeper-cluster/zookeeper-1

/usr/local/zookeeper-cluster/zookeeper-2

/usr/local/zookeeper-cluster/zookeeper-3

创建目录并将ZooKeeper压缩包解压到此目录

mkdir /usr/local/zookeeper-cluster

解压

tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /usr/local/zookeeper-cluster

将解压后的Zookeeper复制到以下三个目录

cp -r  apache-zookeeper-3.7.0-bin /usr/local/zookeeper-cluster/zookeeper-1
cp -r  apache-zookeeper-3.7.0-bin /usr/local/zookeeper-cluster/zookeeper-2
cp -r  apache-zookeeper-3.7.0-bin /usr/local/zookeeper-cluster/zookeeper-3

4、创建data目录 ,并且将 conf下zoo_sample.cfg 文件改名为 zoo.cfg

mkdir /usr/local/zookeeper-cluster/zookeeper-1/data
mkdir /usr/local/zookeeper-cluster/zookeeper-2/data
mkdir /usr/local/zookeeper-cluster/zookeeper-3/data
mv  /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo_sample.cfg  /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
mv  /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo_sample.cfg  /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
mv  /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo_sample.cfg  /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg

5、 配置每一个Zookeeper 的dataDir 和 clientPort 分别为2182 2183 2184

修改/usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg

vim /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
clientPort=2182
dataDir=/usr/local/zookeeper-cluster/zookeeper-1/data

修改/usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg

vim /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
clientPort=2183
dataDir=/usr/local/zookeeper-cluster/zookeeper-2/data

修改/usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg

vim /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg
clientPort=2184
dataDir=/usr/local/zookeeper-cluster/zookeeper-3/data

3 配置集群

1、在每个zookeeper的 data 目录下创建一个 myid 文件,内容分别是1、2、3 。这个文件就是记录每个服务器的ID

echo 1 >/usr/local/zookeeper-cluster/zookeeper-1/data/myid
echo 2 >/usr/local/zookeeper-cluster/zookeeper-2/data/myid
echo 3 >/usr/local/zookeeper-cluster/zookeeper-3/data/myid

2、在每一个zookeeper 的 zoo.cfg配置客户端访问端口(clientPort)和集群服务器IP列表。集群服务器IP列表如下。

zookeeper-1

vim /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
server.1=192.168.58.150:2881:3881
server.2=192.168.58.150:2882:3882
server.3=192.168.58.150:2883:3883

zookeeper-2

vim /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
server.1=192.168.58.150:2881:3881
server.2=192.168.58.150:2882:3882
server.3=192.168.58.150:2883:3883

zookeeper-3

vim /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg
server.1=192.168.58.150:2881:3881
server.2=192.168.58.150:2882:3882
server.3=192.168.58.150:2883:3883

4 启动集群

启动集群就是分别启动每个实例

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh start
/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh start
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh start

启动后我们查询一下每个实例的运行状态

先查询第一个服务

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh start

Mode为follower表示是跟随者(从)

再查询第二个服务Mod 为leader表示是领导者(主)

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status

查询第三个为跟随者(从)

/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh status

5 模拟集群异常

1、首先我们先测试如果是从服务器挂掉,会怎么样,把3号服务器停掉。

/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh stop

观察1号和2号

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status

发现状态并没有变化。

由此得出结论,3个节点的集群,有一个从服务器挂掉,集群正常。

2、我们再把1号服务器(从服务器)也停掉。

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh stop

查看2号(主服务器)的状态。

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status

发现已经停止运行了。

由此得出结论,3个节点的集群,2个从服务器都挂掉,主服务器也无法运行。因为可运行的机器没有超过集群总数量的半数。

3、我们再次把1号服务器启动起来。

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh start

发现2号服务器又开始正常工作了。而且依然是领导者。

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status

4、我们把3号服务器也启动起来。

/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh start

把2号服务器停掉

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh stop

停掉后观察1号和3号的状态。

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh status

发现新的leader产生了~

由此我们得出结论,当集群中的主服务器挂了,集群中的其他服务器会自动进行选举状态,然后产生新得leader 。

5、我们再次测试,当我们把2号服务器重新启动起来启动后,会发生什么?

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh start

2号服务器会再次成为新的领导吗?

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh status

我们会发现,2号服务器启动后依然是跟随者(从服务器),3号服务器依然是领导者(主服务器),没有撼动3号服务器的领导地位。

由此我们得出结论,当领导者产生后,再次有新服务器加入集群,不会影响到现任领导者。

ZooKeeper集群搭建相关推荐

  1. 2021年大数据ZooKeeper(二):ZooKeeper集群搭建

    目录 ZooKeeper集群搭建 第一步:下载zookeeeper的压缩包,下载网址如下 第二步:解压 第三步:修改配置文件 第四步:添加myid配置 ​​​​​​​第五步:安装包分发并修改myid的 ...

  2. 单台主机 kafka + zookeeper 集群搭建

    文章转自: https://www.jianshu.com/p/dc4770fc34b6 在单台主机上搭建kafka + zookeeper 集群. zookeeper 集群搭建 kafka是通过zo ...

  3. 解决ZooKeeper集群搭建 [myid:1] - WARN [QuorumPeer[myid=1]:QuorumCnxManager@685] - Cannot open channel

    ZooKeeper集群搭建中出现错误: [myid:1] - WARN [QuorumPeer[myid=1](plain=0.0.0.0:2181)(secure=disabled):QuorumC ...

  4. Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建

    Zookeeper是一种在分布式系统中被广泛用来作为:分布式状态管理.分布式协调管理.分布式配置管理.和分布式锁服务的集群.kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件kaf ...

  5. zeekooper集群搭建_How to do - ZooKeeper集群搭建(我见过最详细的完整教学)

    ZooKeeper集群介绍 最典型集群模式: Master/Slave 模式(主备模式).在这种模式中,通常 Master服务器作为主服务器提供写服务,其他的 Slave 服务器从服务器通过异步复制的 ...

  6. 分布式架构中一致性解决方案——Zookeeper集群搭建

    当我们的项目在不知不觉中做大了之后,各种问题就出来了,真jb头疼,比如性能,业务系统的并行计算的一致性协调问题,比如分布式架构的事务问题, 我们需要多台机器共同commit事务,经典的案例当然是银行转 ...

  7. zookeeper专题:zookeeper集群搭建和客户端连接

    文章目录 1. Zookeeper 集群模式介绍 2. zookeeper 集群搭建 3. 使用curate客户端连接zookeeper集群 1. Zookeeper 集群模式介绍 Zookeeper ...

  8. Zookeeper集群搭建(涵盖命令详解)与Error contacting service. It is probably not running的问题解决

    搭建部分参考文章:http://www.cnblogs.com/luotianshuai/p/5206662.html 这篇博客分为四个部分: >>>zookeeper简介 > ...

  9. DCOS搭建zookeeper集群搭建

    dcos上zookeeper集群搭建 参考地址:https://my.oschina.net/dslcode/blog/1944775 1.在docs上构建zookeeper服务的json脚本 {&q ...

  10. Kafka+zookeeper集群搭建

    Kafka[第一篇]Kafka集群搭建 Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews) ...

最新文章

  1. Android 安全提示 笔记
  2. printf 格式化最常用用法
  3. matlab画累计直方图_科学网—matlab 绘制直方图——常用命令 - 范凯波的博文
  4. 服务器自定义怪,GOM引擎自定义怪物appr代码计算方法和公式
  5. 苹果6访问限制密码4位_1Password for Mac(专业密码管理工具)
  6. arcgis制作符号
  7. hdu 1429 胜利大逃亡(续)
  8. STM32CubeMX学习笔记(44)——USB接口使用(HID按键)
  9. TPS Motion(CVPR2022)视频生成论文解读
  10. ps磨皮插件portraiture
  11. 浅谈 React Fiber
  12. surfacepro3运行C语言,终于等来USB-C接口!微软 发布 Surface Pro 7 与 Surface Laptop 3 笔记本电脑...
  13. sqli-labs靶场通关(Less1-4)
  14. 跟涛哥一起学嵌入式 16:设计一款CPU芯片到底有多难?
  15. 《张孝祥JAVA就业培训教程》书摘
  16. 毕业论文格式排版word
  17. k型热电偶检测温度c语言程序,[请教]普中51单片机与max6675芯片用k型热电偶检测温度的问题...
  18. 学习太极创客 — ESP8226 (四)Stream
  19. APP怎样拉新,APP拉新需要与用户交流
  20. 小学教师资格证考试的一些经验与感受

热门文章

  1. 一直被跟随,从未被超越
  2. git merge 不为人知的秘密
  3. Java中常见null简析
  4. 聊一聊“关于C语言与嵌入式的那些事”
  5. CycleGAN与pix2pix训练自己的数据集-Pytorch
  6. 三菱FX5U间socket通讯
  7. 树形结构(1)(Java语言)——树的基本概念
  8. python字典可以对键信息赋值吗_python字典键操作
  9. kdevelop汉化
  10. 【钢琴入门自写教程 1】小星星弹奏