zookeeper集群(zookeeper集群状态查看)

本篇文章给大家谈谈zookeeper集群,以及zookeeper集群状态查看对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

zookeeper高可用集群部署

一、Zookeeper 的搭建方式春顷吵

Zookeeper 安装方式有三种,单机模式和集群扒侍模式以及伪集群模式。

Zookeeper 通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。

为什么一定要超过半数呢? 这跟 Zookeeper 的复制策略有关:Zookeeper 确保对 znode 树的每一个修改都会被复制到集合体中超过半数的机器上。

二、配置JDK环境

三、Zookeeper 单机模式搭建

1、下载 ZooKeeper :

2、解压

3、配置环境变量

非必须操作

4、修改 Zookeeper 的配置文件 conf/zoo.cfg

5、启动 ZooKeeper

四、Zookeeper 集群模式搭建

Zookeeper 集群模式搭建方案:

1、解压

2、配置环境变量

非必须操作

3、修改 Zookeeper 的配置文件

zookeeper参数说明

A :其中 A 是一个数字,表示这个是服务器的编号;乎坦B :是这个服务器的 ip 地址;C :Leader 选举的端口;D :Zookeeper 服务器之间的通信端口。

4、添加服务器标识配置 dataDir/myid

5、将修改后的zookeeper分发到其他节点

6、启动

分别在3个节点启动zookeeper

查看状态

五、 Zookeeper 伪集群模式搭建

只需将zookeper复制3份到不同的位置,配置如下

zookeeper服务脚本

[img]

zookeeper集群搭建方式

本次搭建版本是:zookeeper-3.4.14.tar.gz(以下在每台服务器都需要部署一遍)

1,将zookeeper-3.4.14.tar.gz 拷贝到服务器(本次集群是3台)指定文件夹位置。

        解压 tar -zxvf zookeeper-3.4.14.tar.gz   让后修改名称 mv zookeeper-3.4.14 zookeeper

2,进入到zookeeper目录。

3,然后在/etc/profile 增加zookeeper环境变量

4,进入到conf目录下面。修改zoo_sample.cfg 文件名

    执行命令:mv zoo_sample.cfg zoo.cfg

5,编辑zoo.cfg文件

    执行命令:vim zoo.cfg 

    1》修改dataDir 为zookeeper下面的data(该文件需要自己创建)

    2》clientPort 默认是2181 (此处有端口占用,所有我这边改成2182)

    3》在文件最后面加入集群(岩唯此处三台集群为什么这样加,暂时枝哗没有研究)

    server.0=ip1:2888:3888

    server.1=ip2:2888:3888

    server.2=ip3:2888:3888

6,在5中dataDir的目录下面新建myid文件,文件内容是当前zk的节点

7,启动每台服务器的zk服务节点,在bin目录下执行(添加环境变量的话可以在任意位置执行)

    执行命令:./zkServer.sh start(./zkServer.sh stop是停止)

    启动成功后 查看是否启动起来:

        执行命令:ps aux | grep 'zookeeper' 或者 jps

8,查看三台机器主从身份(leader 主 follower从)

至此zk集群搭建成功。

kafka集群搭建方式:粗搭培

zookeeper集群原理简介

以下举例三台集群的模型图:

当写数据的请求到达从节点的时候,请求会被转发到leader节点,由leader节点将数据同步到其他follower节点。所有的写操作有leader发起。

类似2PC(两阶段提交,需要等到所有节点返回ack),实际是ZAB协议的过半机制:

1、leader发起写事务给各个从节点,如上图的propose。

2、从节点收到写事务后,会对leader有一个应答ack。

3、leader收到半数以上的ack后(过半协议),发起事务提交commit。

当leader挂了,集群需要从其他的从节点选出一个新的leader。

在选举的过程中,有两个主要的信息:

1)myid:当前节点的id

2)zxid:当前事务的id

当选举发生时,需要去比较这两个信息的大小,选举的比较会发生很多轮,最终获胜的会被选举为leader。

如开篇图有三个节点,假设左侧节点的myid为1,leader的myid为2,右侧节点的myid为3。

当数据正在同步时发生了主节点宕机,这时候选举开始,可能存在以下情况:

左侧从节点可能存在的信息(myid,zxid)为:(1,101);

右侧从节点可能存在的信息为:(3,102);

这时候以上两个节点需要进行比较:

第一轮投票,所有的节点会优先投给自己,这时候投票比例是1:1,则需要对这两个节点的事务id进行pk比较,右侧节点的事务id大于左侧节点(事务id越大则表示数据越新,则丢失数据越仿世少),左侧节点pk失败了,进行下一轮投票。

第二轮投票开始,由于左侧节点上一轮pk失败,所以此次也投票给了右侧节点,此时右侧获得两票,超过型段了半数,所以右侧节点成为新节点。

当事务id相同时,则比较myid,当myid越大,则权重越大。

1)leader选举原理(myid,zxid)

2)集群消息广播(类似2PC-两阶段提交,无需全部节点ack,过半即发起commit)

脑裂:当集群分布在不同机房时,机房间可能卜大誉出现网络断开,这时候内部的节点是可以通信的,会导致每个机房内都选举出一个leader,导致脑裂。网络恢复后,就会有两个leader,数据如何合并,会导致问题。

奇数部署:过半机制

Quorums(ˈkwôrəm 法定人数) ,比如3个节点的集群,Quorums = 2, 也就是说集群可以容忍1个节点失效,这时候还能选举出1个lead,集群还可用。比如4个节点的集群,它的Quorums = 3,Quorums要超过3,相当于集群的容忍度还是1,如果2个节点失效,那么整个集群还是无效的

关于zookeeper集群和zookeeper集群状态查看的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表