Linux安装Zookeeper集群版

Linux安装Zookeeper集群版

前言

前置条件:需要安装jdk 1.8
版本号:zookeeper-3.4.10
三台虚拟机:一主两从(已经提前做了免密登录,hostname修改,hosts地址映射)
node1
node2
node3
在搭建 zookeeper 集群之前,我们首先要明白为什么要选择三台机器搭建,2台不可以吗?4台不可以吗?

zookeeper 集群通常是用来对用户的分布式应用程序提供协调服务的,为了保证数据的一致性,对 zookeeper 集群进行了这样三种角色划分:leader、follower、observer分别对应着总统、议员和观察者。

总统(leader):负责进行投票的发起和决议,更新系统状态。

议员(follower):用于接收客户端请求并向客户端返回结果以及在选举过程中参与投票。

观察者(observer):也可以接收客户端连接,将写请求转发给leader节点,但是不参与投票过程,只同步leader的状态。通常对查询操作做负载。

一、为什么节点数量选择奇数

我们知道,在每台机器数据保持一致的情况下,zookeeper集群可以保证,客户端发起的每次查询操作,集群节点都能返回同样的结果。

但是对于客户端发起的修改、删除等能改变数据的操作呢?集群中那么多台机器,你修改你的,我修改我的,最后返回集群中哪台机器的数据呢?

这就是一盘散沙,需要一个领导,于是在zookeeper集群中,leader的作用就体现出来了,只有leader节点才有权利发起修改数据的操作,而follower节点即使接收到了客户端发起的修改操作,也要将其转交给leader来处理,leader接收到修改数据的请求后,会向所有follower广播一条消息,让他们执行某项操作,follower 执行完后,便会向 leader 回复执行完毕。当 leader 收到半数以上的 follower 的确认消息,便会判定该操作执行完毕,然后向所有 follower 广播该操作已经生效。

所以zookeeper集群中leader是不可缺少的,但是 leader 节点是怎么产生的呢?其实就是由所有follower 节点选举产生的,讲究民主嘛,而且leader节点只能有一个,毕竟一个国家不能有多个总统。

这个时候回到我们的小标题,为什么 zookeeper 节点数是奇数,我们下面来一一来说明:

①、容错率

首先从容错率来说明:(需要保证集群能够有半数进行投票)

2台服务器,至少2台正常运行才行(2的半数为1,半数以上最少为2),正常运行1台服务器都不允许挂掉,但是相对于 单节点服务器,2台服务器还有两个单点故障,所以直接排除了。

3台服务器,至少2台正常运行才行(3的半数为1.5,半数以上最少为2),正常运行可以允许1台服务器挂掉

4台服务器,至少3台正常运行才行(4的半数为2,半数以上最少为3),正常运行可以允许1台服务器挂掉

5台服务器,至少3台正常运行才行(5的半数为2.5,半数以上最少为3),正常运行可以允许2台服务器挂掉

②、防脑裂

脑裂集群的脑裂通常是发生在节点之间通信不可达的情况下,集群会分裂成不同的小集群,小集群各自选出自己的leader节点,导致原有的集群出现多个leader节点的情况,这就是脑裂。

3台服务器,投票选举半数为1.5,一台服务裂开,和另外两台服务器无法通行,这时候2台服务器的集群(2票大于半数1.5票),所以可以选举出leader,而 1 台服务器的集群无法选举。

4台服务器,投票选举半数为2,可以分成 1,3两个集群或者2,2两个集群,对于 1,3集群,3集群可以选举;对于2,2集群,则不能选择,造成没有leader节点。

5台服务器,投票选举半数为2.5,可以分成1,4两个集群,或者2,3两集群,这两个集群分别都只能选举一个集群,满足zookeeper集群搭建数目。

以上分析,我们从容错率以及防止脑裂两方面说明了3台服务器是搭建集群的最少数目,4台发生脑裂时会造成没有leader节点的错误。

二、安装包上传解压

1.安装包下载地址

链接: https://pan.baidu.com/s/1EZq9J3rUBABv0wW46BvtOg
密码: pwro

2.安装包上传到服务器

自行选择上传方式

在这里插入图片描述

3.将压缩包解压到指定文件目录

tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local/src

在这里插入图片描述

三、配置环境变量

vim /etc/profile

新增zookeeper的配置:

export ZOOKEEPER_HOME=/usr/local/src/zookeeper-3.4.10
export PATH=$PATH:${JAVA_HOME}/bin:${ZOOKEEPER_HOME}/bin

在这里插入图片描述

使配置生效:

source /etc/profile

四、配置zookeeper配置文件

1.复制配置文件

进入到zookeeper安装目录的conf目录下:

cd /usr/local/src/zookeeper-3.4.10/conf

复制一份配置文件zoo_sample.cfg 改名为:zoo.cfg

cp zoo_sample.cfg zoo.cfg

修改zoo.cfg

vim zoo.cfg

修改内容如下:

# zookeeper节点树文件的存放目录,持久化使用的,我们更换一个目录
dataDir=/usr/local/src/zookeeper-3.4.10/data
# 1 代表的是选举id 2881是广播端口   3881是选举端口
server.1=node2:2881:3881
server.2=node3:2881:3881
server.3=node4:2881:3881

在这里插入图片描述

编辑后保存

2.创建持久化文件存放目录

在zookeeper安装目录下创建data目录,是刚才在上步配置的路径

mkdir data

3.创建myid文件

在data文件下新建文件,存储选举id:

echo 1 > myid

在这里插入图片描述

4.安装包复制到其他两个节点

将配置好的zookeeper目录直接复制到node3 和node4 下

scp -r zookeeper-3.4.10/ node3:`pwd`
scp -r zookeeper-3.4.10/ node4:`pwd`

修改其他两台的myid的值,node3改为2,node4改为3

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

5.将配置好的环境变量复制到其他两个节点

注意:因为我的三台机器环境变量是一致的,可以直接复制,如果有不一致的地方不能直接复制,需要手动添加配置

scp /etc/profile node3:/etc/
scp /etc/profile node4:/etc/

之后分别到node3和node4执行命令,让配置生效

source /etc/profile

6.启动zookeeper节点

启动命令:

zkServer.sh start

停止命令:

zkServer.sh stop

查看节点状态命令:

zkServer.sh status

重新启动命令:

zkServer.sh restart

在这里插入图片描述

查看节点状态:

zkServer.sh status

在这里插入图片描述

可以看到node4是主节点,node2和node3是从节点。

五、shell 基本操作

1.连接zookeeper客户端

zkCli.sh -server 具体的ip

zkCli.sh -server node2

2.创建节点

create [-s] [-e] path data acl
其中,-s 或-e 分别指定节点特性,顺序或临时节点,若不指定,则表示持
久节点;acl 用来进行权限控制。
创建顺序节点:

create -s /test 123

在这里插入图片描述

创建临时节点:

create -e /test-tmp 123tmp

在这里插入图片描述

创建永久节点:

create /test-p 123p

在这里插入图片描述

3.读取节点

与读取相关的命令有 ls 命令和 get 命令,ls 命令可以列出 Zookeeper 指
定节点下的所有子节点,只能查看指定节点下的第一级的所有子节点;get 命令
可以获取 Zookeeper 指定节点的数据内容和属性信息。
ls path [watch]

在这里插入图片描述

get path [watch]

在这里插入图片描述
ls2 path [watch]
在这里插入图片描述

4.更新节点

set path data [version]
data 就是要更新的新内容,version 表示数据版本。

set /test-p 123pupdate

在这里插入图片描述

现在 dataVersion 已经变为 1 了,表示进行了更新。

5.删除节点

delete path [version]
若删除节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除
父节点。
Rmr path
可以递归删除节点。

delete /test-p

在这里插入图片描述

六、高可用测试

模拟宕机的情况,将leader节点node4的进程杀掉,看下集群情况

在这里插入图片描述

查看node2和node3阶段的状态,可以看到node3成为了新的leader

zkServer.sh status

在这里插入图片描述

再将node4节点启动,查看状态,可以看到角色变成了follower

在这里插入图片描述

至此,zookeeper集群版安装完成,并且支持高可用。

如有问题,请联系作者修改!

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值