一,用来作为demo操作的zookeeper集群中的实例:

机器名:zk1
server.1=172.18.1.1:2888:3888 机器名:zk2
server.2=172.18.1.2:2888:3888 机器名:zk3
server.3=172.18.1.3:2888:3888

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,在zookeeper集群中动态添加实例

1,我们的目标:添加两台实例:

机器名:zk4
server.4=172.18.1.4:2888:3888 机器名:zk5
server.5=172.18.1.5:2888:3888

2,在两台新机器上安装zookeeper,

使非集群相关的配置与之前的三台:zk1,zk2,zk3相一致

3,设置两个容器中zookeeper的cluster配置,使加入集群

修改zoo.cfg,集群的配置为:(新加的两台机器上相同)

[root@zk4 conf]# vi zoo.cfg 

集群配置的内容为:

#cluster
server.1=172.18.1.1:2888:3888
server.2=172.18.1.2:2888:3888
server.3=172.18.1.3:2888:3888
server.4=172.18.1.4:2888:3888
server.5=172.18.1.5:2888:3888

配置myid

[root@zk4 conf]# cd /data/zookeeper/data
[root@zk4 data]# vi myid

说明:

myid要区分开,

172.18.1.4上面,把myid设置为4

172.18.1.5上面,把myid设置为5

必须与zoo.cfg中的配置序号4、5保持一致

配置完成后,分别重启两个zookeeper服务:

zk4

[root@zk4 data]# systemctl stop zookeeper
[root@zk4 data]# systemctl start zookeeper

zk5

[root@zk5 data]# systemctl stop zookeeper
[root@zk5 data]# systemctl start zookeeper

4,查看效果

zk4

[root@zk4 data]# echo srvr | nc 127.0.0.1 2181
Zookeeper version: 3.6.0--b4c89dc7f6083829e18fae6e446907ae0b1f22d7, built on 02/25/2020 14:38 GMT
Latency min/avg/max: 0/0.0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x100000000
Mode: follower
Node count: 5

mode是follower,证明已加入集群

zk5:

[root@zk5 data]# echo srvr | nc 127.0.0.1 2181
Zookeeper version: 3.6.0--b4c89dc7f6083829e18fae6e446907ae0b1f22d7, built on 02/25/2020 14:38 GMT
Latency min/avg/max: 0/0.0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x100000000
Mode: follower
Node count: 5

两个实例的mode都是follower

5,集群中原有的三台机器的处理:

zk1,zk2,zk3

以zk1为例:

修改集群的配置,使与新加入的机器zk4\zk5的配置一致:

[root@zk1 conf]# vi zoo.cfg

内容:

#cluster
server.1=172.18.1.1:2888:3888
server.2=172.18.1.2:2888:3888
server.3=172.18.1.3:2888:3888
server.4=172.18.1.4:2888:3888
server.5=172.18.1.5:2888:3888

重启服务:

[root@zk1 conf]# systemctl stop zookeeper
[root@zk1 conf]# systemctl start zookeeper 

zk2/zk3上,依次进行相同的操作即可

说明:从leader实例上查询follower的数量:

[root@zk4 data]# echo mntr | nc 127.0.0.1 2181 | grep follower
zk_synced_followers 4

说明:有4个follower

这个数值是根据集群中的成员数量实时得到的,

如果有实例宕掉,此数量会改变

三,zookeeper集群中动态删除实例:

1,我们的目标:删除两台实例:

机器名:zk5
server.5=172.18.1.5:2888:3888 机器名:zk4
server.4=172.18.1.4:2888:3888

说明:这两台里面zk4是leader,zk5是follower

说明:如果不关闭zk5/zk4,直接修改zk1/zk2/zk3的配置后重启,会发生问题:

以zk1为例:重启后会因为集群中没有leader,而导致zk1无法访问.

2,操作步骤:

先关闭zk4和zk5

[root@zk4 conf]# systemctl stop zookeeper
[root@zk5 data]# systemctl stop zookeeper

说明:先关闭这两台,这样leader会自动从剩下的三台中选出,

可以避免因为没有leader导致集群无法访问的情况

再查看各个实例上的状态

zk1:follower
zk2:follower
zk3:leader

再给zk1,zk2,zk3修改配置重启

以zk1为例:

修改配置文件

[root@zk1 conf]# vi zoo.cfg

修改内容为:

#cluster
server.1=172.18.1.1:2888:3888
server.2=172.18.1.2:2888:3888
server.3=172.18.1.3:2888:3888
#server.4=172.18.1.4:2888:3888
#server.5=172.18.1.5:2888:3888

说明:注释掉了4和5

重启服务:

[root@zk1 conf]# systemctl stop zookeeper
[root@zk1 conf]# systemctl start zookeeper

查看状态:

[root@zk1 conf]# echo stat | nc 127.0.0.1 2181
Zookeeper version: 3.6.0--b4c89dc7f6083829e18fae6e446907ae0b1f22d7, built on 02/25/2020 14:38 GMT
Clients:
/127.0.0.1:53110[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0.0/0
Received: 2
Sent: 1
Connections: 1
Outstanding: 0
Zxid: 0x700000000
Mode: follower
Node count: 10

访问正常,mode还是follower

zk2/zk3上的操作与之相同

四,zookeeper cluster报错信息:

例:

[root@zk1 conf]# echo stat | nc 127.0.0.1 2181
This ZooKeeper instance is not currently serving requests

报错原因:集群里面没有选出来leader,

如果集群里的结点只剩下一台,或不足半数时,会给出这个错误提示

解决:

1,

检查各节点:如果有误关闭的或宕机的实例,重新启动,保证其正常工作

2,

检查防火墙,是否打开集群之间通信的2888/3888端口

如果这两个端口被关闭,打开它

五,查看zookeeper的版本

[root@zk1 ~]# echo stat|nc 127.0.0.1 2181
Zookeeper version: 3.6.0--b4c89dc7f6083829e18fae6e446907ae0b1f22d7, built on 02/25/2020 14:38 GMT

zookeeper动态添加/删除集群中实例(zookeeper 3.6)的更多相关文章

  1. 通过tarball形式安装HBASE Cluster(CDH5.0.2)——如何配置分布式集群中的zookeeper

    集群安装总览参见这里 Zookeeper的配置 1,/etc/profile中加入zk的路径设置,见上面背景说明. 2,进入~/zk/conf目录,复制zoo_sample.cfg为zoo.cfg v ...

  2. 在Hadoop集群中添加机器和删除机器

    本文转自:http://www.cnblogs.com/gpcuster/archive/2011/04/12/2013411.html 无论是在Hadoop集群中添加机器和删除机器,都无需停机,整个 ...

  3. 【2】基于zookeeper,quartz,rocketMQ实现集群化定时系统

    <一>项目结构图 (1)ZK协调分配 ===>集群中的每一个定时服务器与zookeeper交互,由集群中的master节点进行任务划分,并将划分结果分配给集群中的各个服务器节点. = ...

  4. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与 ...

  5. hadoop集群中动态添加新的DataNode节点

    集群中现有的计算能力不足,须要另外加入新的节点时,使用例如以下方法就能动态添加新的节点: 1.在新的节点上安装hadoop程序,一定要控制好版本号,能够从集群上其它机器cp一份改动也行 2.把name ...

  6. java 学习笔记(三)ZooKeeper集群搭建实例,以及集成dubbo时的配置 (转)

    ZooKeeper集群搭建实例,以及集成dubbo时的配置 zookeeper是什么: Zookeeper,一种分布式应用的协作服务,是Google的Chubby一个开源的实现,是Hadoop的分布式 ...

  7. 初始zookeeper与集群搭建实例

    zookeeper是什么 Zookeeper,一种分布式应用的协作服务,是Google的Chubby一个开源的实现,是Hadoop的分布式协调服务,它包含一个简单的原语集,应用于分布式应用的协作服务, ...

  8. 初识ZooKeeper与集群搭建实例

    原文链接:http://www.linuxidc.com/Linux/2015-02/114230.htm zookeeper是什么 Zookeeper,一种分布式应用的协作服务,是Google的Ch ...

  9. 用Javascript动态添加删除HTML元素实例 (转载)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. [算法]类似n sum个数的问题(DP)

    题目 求和为target的数组元素组合数,含重复. 例: 输入 arr = { 1, 2, 3, 3, 4 } ,target = 6 输出 4 题解 dp[i][j]代表到数组第i-1个元素,目标和 ...

  2. rocketmq-console修改logo,修改ip,修改port及完整编译安装图文版

    一.下载源码到本地 这里使用IDEA,作为编译工具 https://gitee.com/mrliuNumberOne/rocketmq-externals.git 导入成功后如图: 二.Maven编译 ...

  3. 安装Linux的CentOS操作系统 - 初学者系列 - 学习者系列文章

    Linux系统对于一些熟悉Windows操作系统的用户来说可能比较陌生,但是它也是一种多用户.多任务的操作系统,现在也发展成为了多种版本的操作系统了.如果想对该系统进行学习,请下载这个学习文档:htt ...

  4. 2.BlockingQueue-阻塞式队列

  5. breakpad系列(1)——起步

    原文来自breakpad目录中doc目录下的getting_started_with_breakpad文档,建议去看原文! 介绍 Breakpad是一个比Linux core机制更强大的.用于记录程序 ...

  6. IntelliJ IDEA 2020.2 x64 最新破解教程有效期到2089年 完全免费分享

    作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! CSDN@极客小俊,原创文章, B站技术分享 B站视频 : Bilibili.com 个 ...

  7. 在Linux系统下搭建和配置一个minio文件服务器(二)

    上一篇主要讲述了在linux系统中搭建一个minio文件服务器,那么这一篇则用来整合java代码中使用,我之前自己已经搭建好了一个springboot项目,那么这一篇将详细讲述如何把minio整合进s ...

  8. 从 ES6 高阶箭头函数理解函数柯里化

    前言:第一次看到多个连续箭头函数是在一个 react 项目中,然鹅确认了下眼神,并不是对的人,因为看得一脸懵逼.em......于是开始各种搜索,先是知道了多个连续箭头函数就是 es6 的多次柯里化的 ...

  9. Android 字符串的常用操作

    目录 Substring 基本语法 IndexOf 基本语法 Split 基本语法 Substring 基本语法 str.substring(","); //从第一个,号开始截取 ...

  10. 屯点自用CTF网站

    尚且杂乱,刚刚准备搬运东西到博客来,慢慢收拾. 芜湖,起飞  --大司 16进制转换文本 Base64编码转换 quipqiup词频分析 Brainfuck/Ook! Obfuscation/Enco ...