Zookeeper学习(2)-----环境搭建及工作流程

思维导图:

 

引言

    本文主要介绍了Zookeeper的基本使用方法。包括如何搭建独裁模式,即只有一个服务器的环境。在此基础之上,介绍了如何搭建仲裁模式环境,即有多个Zookeeper服务器进行服务且拥有一个主节点。最后以主从模式为例介绍了Zookeeper的工作流程。

  • 独裁模式搭建:只有一个Zookeeper服务器提供服务
  • 仲裁模式搭建:多个Zookeeper服务器提供服务且拥有一个主节点
  • 工作流程:以主从节点模式为例描述Zookeeper的工作流程

    当然,在进行上述操作之前需要一定的准备工作。我们需要先在linux服务器上安装Zookeeper,命令如下:

//下载
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
//解压
tar -xvzf zookeeper-3.4.14.tar.gz
//重命名配置文件
mv ./conf/zoo_sample.cfg ./conf/zoo.cfg

 

一.独裁模式环境搭建

    独裁模式只需要一个对外提供服务的服务器,所以,此节没有繁杂的操作,只需要修改必要的配置文件,然后启动即可。

--独裁模式
//zoo.cfg中修改data目录地址
dataDir=/home/zhouhao/zookeeper-3.4.14
//启动服务器
bin/zkServer.sh start
//启动客户端
bin/zkCli.sh -server 127.0.0.1:2181
//查看root下所有节点
ls /
//创建workers节点
create /workers ""
//删除workers节点
delete /workers
//退出客户端
quit
//关闭服务器
bin/zkServer.sh stop

二.仲裁模式环境搭建

    此节会用使用一台机器的多个端口号以模拟多台机器搭建Zookeeper仲裁模式环境。

    首先,创建以端口号命名的模拟一台服务器的文件夹并在此文件夹下创建data数据文件夹,data文件夹会存放服务的相关数据。

//创建3个文件夹及其data文件夹
mkdir 2222 3333 4444
mkdir 2222/data
mkdir 3333/data
mkdir 4444/data

    然后,我们修改原始的配置文件zoo.cfg,在其中加入服务器集群的相关信息和服务端口信息

//添加以下三项配置,表示3个服务器
//server.1表示其中一个服务器被命名为1,以后会用到。
//其中127.0.0.1表示IP,2222表示服务端口号,2223表示服务器间的通讯端口
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445

    紧接着我们将此zoo.cfg配置文件分别复制到我们创建的三个文件夹下,和data文件夹平级。然后分别修改其必要的配置信息。主要包括data文件夹位置和对外提供服务的端口号

//配置文件中修改数据地址,
dataDir=/home/zhouhao/zookeeper/2222/data
dataDir=/home/zhouhao/zookeeper/3333/data
dataDir=/home/zhouhao/zookeeper/4444/data
//修改服务端口号,在三个不同的配置文件中
clientPort=2181
clientPort=2182
clientPort=2183

    随后,在data文件夹下添加myid文件以指定是哪个服务器使用了此data节点文件夹。myid的值与上文配置中的server.n的n相匹配

//创建myid文件并指定服务器命名
echo 1 > 2222/data/myid
echo 2 > 3333/data/myid
echo 3 > 4444/data/myid

    现在,配置文件以修改完毕,可以启动这三个服务器了。注意,由于我们使用了三个服务器搭建仲裁模式环境,所以在启动第一个服务器时会报错,因为必要的法定人数服务器数量=2,所以整个Zookeeper集群暂时不能工作。当我们启动了第二个服务器的时候,集群就可以工作了。相关日志可以在zookeeper.out浏览

//启动三个服务器
bin/zkServer.sh start ../zookeeper/2222/z2222.cfg
bin/zkServer.sh start ../zookeeper/3333/z3333.cfg
bin/zkServer.sh start ../zookeeper/4444/z4444.cfg

    最后,使用客户端连接服务器,需要注意的是,连接Zookeeper集群需要指定所有的服务器地址

//客户端连接服务器
bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
//创建主节点
create -e /master "master.example.com:2223"

 

三.Zookeeper的工作流程

3.1 会话的生命周期

    未连接的会话状态为NOT_CONNECTED,当客户端初始化后转为CONNECTING,连接成功后转为CONNECTED,如果 此时连接突然中断,则会退为CONNECTING,客户端此时会尝试连接至其他的服务器,成功则变为CONNECTED,失败则变为CLOSED,当然显示关闭会话也会变为CLOSED状态,流程如下图:

 

3.2 工作流程

    Zookeeper仲裁模式下,共有三种角色,主节点,从节点,客户端。他们是如何协调以完成工作的呢?我们首先回顾一下Zookeeper中四个基本节点:

  • 主节点/master:负责监视新的从节点和任务,并分配任务给从节点
  • 从节点/workers:通过先/workers下添加znode子节点注册自己,然后开始监视自己是否有任务
  • 任务节点/tasks:客户端通过任务节点添加任务
  • 任务分配节点/assign:主节点检测到任务节点有新的任务后,查看从节点,并在此节点下添加znode子节点以表示任务被分配给哪个从节点

    通过上述四个节点的工作,可以大致的描述Zookeeper的工作流程:

  • 1.客户端添加任务子节点以注册任务,并添加监控点。因为任务的完成状态会以在此任务子节点下添加子节点的方式表示

  • 2.主节点监控到任务节点发生变化,或去从节点列表后,创建/assign/从节点名 下的子节点表示将任务分配给了哪个从节点

  • 3.从节点监控到自己的任务分配节点下有了新的子节点并开始执行。完成后,在此任务节点下添加状态子节点。

  • 4.客户端监控到此任务子节点发生变化,检查状态子节点并接受执行结果。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值