实验指导书-实验5部署ZooKeeper集群和ZooKeeper实战.docx
《实验指导书-实验5部署ZooKeeper集群和ZooKeeper实战.docx》由会员分享,可在线阅读,更多相关《实验指导书-实验5部署ZooKeeper集群和ZooKeeper实战.docx(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、实验5 部署ZooKeeper集群和ZooKeeper实战5.1 实验目的1 .理解ZooKeeper的系统模型,包括数据模型、版本机制、Watcher监听机制、ACL权 限控制机制。2 .理解ZooKeeper的工作原理,包括集群架构、Leader选举机制。3 .熟练掌握ZooKeeper集群的部署和运行。4 .掌握ZooKeeper四字命令的使用。5 .熟练掌握ZooKeeper Shell常用命令的使用。6 . 了解 ZooKeeper Java API,能看懂简单的 ZooKeeper 编程。5.2 实验环境本实验所需的软件环境包括Linux集群(至少3台机器)、Java环境、ZooK
2、eeper安装 包、Eclipseo5. 3实验内容1 .规划ZooKeeper集群。2 .部署ZooKeeper集群。3 .启动ZooKeeper集群。4 .验证ZooKeeper集群。5,使用ZooKeeper Shell客户端命令。6.关闭ZooKeeper集群。5.4实验原理5. 4. 1 初识 ZooKeeperApache ZooKeeper是一个分布式的、开放源码的分布式应用程序协调框架,是Google Chubby的开源实现,它为大型分布式系统中的各种协调问题提供了一个解决方案,主要用 于解决分布式应用中经常遇到的一些数据管理问题,如配置管理、命名服务、分布式同步及 集群管理等
3、。ZooKeeper最早起源于雅虎研究院的一个研究小组。雅虎模仿Google Chubby开发出了 ZooKeeper,实现了类似的分布式锁功能,并且将ZooKe叩er捐献给了 Apache, ZooKeeper2.软件选择本实验部署ZooKeeper所使用的各种软件的名称、版本、发布日期及下载地址如表5-5 所示。表5-5本实验部署ZooKeeper使用的软件名称、版本、发布日期及下载地址软件名称软件版本发布日期下载地址VMwareWorkstationProVMwarePro for Windows2017年6月22日CentOS2018年11月26日JavaOracle JDK 8ul9
4、12018年10月16日downloads/index.htmlZooKeeper2018年7月15日注意,本实验采用的是ZooKeeper版本是3.4.13, 3个节点的机器名分别为master slavek slave2, IP 地址依次为 、192.168.18.131 192.168.18.132,后续内容均 在表5-4规划基础上完成,读者务必与之对照确认自己的ZooKe叩er版本、机器名等信息。5. 5. 2 部署 ZooKeeper 集群本实验采用的ZooKeeper版本是3.4.13,因此本实验的讲解都是针对这个版本进行的。 尽管如此,由于ZooKeeper各个版本在部署和运行方
5、式上的变化不大,因此本实验的大部分 内容都适用于ZooKe叩er其它版本。1 .初始软硬件环境准备(1)准备三台机器,安装操作系统,编者使用CentOS Linux 7。(2)对集群内每一台机器,配置静态IP、修改机器名、添加集群级别域名映射、关闭 防火墙。(3)对集群内每一台机器,安装和配置Java,要求Java 1.6或更高版本,编者使用Oracle JDK 8ul91o(4)可以选择性地安装和配置Linux集群中各节点间的SSH免密登录。关于安装和配 置SSH免密登录并不是部署ZooKeeper集群必须的,这样做仅是为了操作方便。以上步骤已在实验1中详细介绍,此处不再赘述。2 .获取 Z
6、ooKeeperZooKeeper 官方下载地址为 ,建议读者下载stable目录下的当前稳定版本,本书选用的ZooKeeper版本是2018年7月15日发布的稳定 版ZooKeeper 3.4.13,其安装包文件例如存放在 master机器的 /home/xuluhui/Downloads 中。3 .安装 ZooKeeper切换到root,在master机器上解压zookeeper-3.4.1到安装目录如/usr/local下,依 次使用的命令如下所示。xuluhuimaster $ 4 .配置 ZooKeeper1)复制模板配置文件zoo_sample.cfg为zoo.cfg在master
7、机器上使用命令“cp”将ZooKeeper示例配置文件zoo_sample.cfg复制并重命 名为zoo.cfg,依次使用的命令如下所示。rootmaster zookeeper-3.4.13# cp conf/zoo_sampIe.cfg conf/zoo.cfg2)修改配置文件zoo.cfg读者可以发现,模板中已配置好 tickTime、initLimit、syncLimit、dataDir 及 clientPort 等 配置项,此处,编者仅在master机器上修改配置参数dataDir和添加配置参数dataLogDir。 首先,由于机器重启后,系统会自动清空/tmp目录下文件,所以将存放
8、数据快照的目录更改 为某固定目录,将原始的“dataDir=/tmp/zookeeper”修改为“/usi71ocal/zookeeper-3.4.13/data”;另外,添加事务日志存放路径 dataLogDir,设置为 7usr/local/zookeeper-3.4.13/datalog修 改后的配置文件zoo.cfg内容如图5-7所示。# The number of milliseconds of each tick tickTime=2000# The number of ticks that the initial# synchronization phase can take i
9、nitLimit=10# The number of ticks that can pass between# sending a request and getting an acknowledgement syncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/usr/local/zookeeper-3.4.13/datadataLogDir=/usr/local/zookeeper-3.
10、4.13/datalog # the port at which the clients will connect clientPort=2181图5-7修改配置文件zoo.cfg其次,在master机器上配置ZooKeeper集群地址,在配置文件zoo.cfg最后补充几行内 容,如下所示。server.l=master:2888:3888server.2=slavel:2888:3888 server.3=slave2:2888:38885 .创建所需目录和新建myid文件在上步修改配置文件zoo.cfg中,将存放数据快照和事务日志的目录设置为目录data和 datalog,因此,首先需要在
11、master机器上创建这两个目录,使用如下命令实现,假设当前目 录为以上步骤操作后的所在目录“/usr/local/zookeeper-3413”。rootmaster zookeeper-3.4.13# mkdir datarootmaster zookeeper-3.4.13# mkdir datalog然后,在数据快照目录下新建文件myid并填写IDo在master机器配置项dataDir指定 目录下创建文件myid,例如在dataDir目录47usr/local/zookeeper3.4.13/data下使用命令 “vim”新建文件myid,并将其内容设置为“1”。之所以为“1”,是由
12、于配置文件zoo.cfg中 userver.id=host:port:port配置项 master 机器对应的 “id” 为 “1”。6 .同步 ZooKeeper 文件至 slavel、slave2使用scp命令将master机器中目录“zookeeper-3.4.13”及下属子目录和文件统一拷贝至 slave 1和slavc2上,依次使用的命令如下所示。7 .设置$ZOOKEEPER_HOME目录属主为了在普通用户下使用ZooKeeper集群,依次将三台机器master、slave 1 slave2上的 $ZOOKEEPER_HOME目录属主设置为Linux普通用户例如xuluhui,使用
13、以下命令完成。 8 .修改 slavel、slave2 文件 myid 内容配置文件conf/zoo.cfg中配置项userver.id=host:port:port,中的“id”表示与哪台主机对 应,该机器上的文件myid内容必须与“id”数字一致。本例中,三台机器按master slave 1 slave2对应的“id”依次为“1、2、3”,因此将slavel机器上文件myid的内容修改为“2”,将slave2机器上文件myid的内容修改为“3”。至此,Linux集群中三台机器的ZooKeeper均已安装和配置完毕。9 .在系统配置文件目录/etc/profile.d下新建zookeepe
14、r.sh在ZooKeeper集群的所有机器上执行以下操作。首先,切换到 root 用户,使用 “vim/etc/profile.d/zookeeper.sh” 命令在/etc/profile.d 文件 夹下新建文件zookeeper.sh,添加如下内容。export PATH=$ZOOKEEPER_HOME/bin:$PATH其次,重启机器,使之生效。此步骤可省略,之所以将$ZOOKEEPER_HOME/bin目录加入到系统环境变量PATH中, 是因为当输入启动和管理ZooKeeper集群命令时,无需再切换到$ZOOKEEPER_HOME/bin 目录,否则会出现错误信息“bash: *: c
15、ommand not found”。5. 5. 3 启动 ZooKeeper 集群在ZooKeeper集群的每个节点上,在普通用户xuluhui下使用命令zkServer.sh startn 来启动ZooKeeper,使用的命令及运行效果如图5-8所示,从图中可以看出,3个节点均显 示 Starting zookeeper . STARTED” 信息。xuluhuimaster $ STARTED xuluhuimaster $Starting zookeeper STARTEDstartxuluhuislavel $Using config:Starting zookeeper . STAR
16、TEDxuluhuislave2 $图5-8启动ZooKeeper集群6. 5. 4 验证 ZooKeeper 集群ZooKeeper集群被启动后,可查看其日志文件zookeeper.outo由于ZooKeeper集群启动 的时候,每个节点都试图去连接集群中的其它节点,故存在启动时后边的节点还没启动,所 以会出现异常的日志,这是正常的。启动选出一个Leader后就稳定了。查看ZooKe叩er是否部署成功的第1种方法是:在各个节点上通过“zkServer.sh status” 命令查看状态,包括集群中各个节点的角色,使用命令及运行效果如图5-9所示,从图5-9 中可以看出,slave 1是Lea
17、der。xuluhuimaster $ Using config: /Mode:|followeF|xuluhuimaster $xuluhui(aslavel Using config: /Mode:|leader Ixuluhuislavel $xuluhuislave2 Using config: /Mode: Ifollowerxu 1.uhuislave2 $图5-9通过zkServer.sh status查看ZooKeeper集群启动状态查看ZooKeeper是否部署成功的第2种方法是:在各个节点上通过“jps”命令查看进 程服务,若部署成功的话,可在各个节点上看到QuorumPe
18、erMain进程,运行效果如图5-10 所示。xuluquiQmaster -$ jps 13932 |QuorumPeeMain114238 Jpsxuluhuimaster $ Ixuluhuislavel $ jps1000: Jps9756 |QuorumPeeMain|xuluhuislavel $xuluhuislave2 $ jps9605 1QuorumPeerMain9852 Jpsxuluhuislave2 $图5-10通过jps查看进程服务5. 5. 5 使用ZooKeeper Shel I客户端命令【案例5-11使用zkCIi.sh实现对ZooKeeper文件系统中数据
19、节点进行新建、查看或删 除等操作。(1)连接slave 1节点ZooKeeper服务器,进入ZooKe叩er客户端命令行,使用的命令 及运行效果如图5.11所示。xuluhuimaster $ zkCli.sh -server slavel:2181Connecting to slavel:21812022-07-14 04:23:36,941 myid: - INFO main:Environment(aiOO Client environm ent:zookeeper.version=3.4.13-2d71af4dbe22557fda74f9a9b4309bl5a7487f03, buil
20、t on 06/29/2018 04:05 GMT2022-07-14 04:23:36,945myid:-INFOent:host.name=master 2022-07-14 04:23:36,945myid:-INFO2022-07-14 04:23:36,949191myid:INFOent:java.vendor=0racle 2022-07-14 04:23:36,949Corporation myid:-INFOmain:Environment100main: Environment(ai0Omain : Environment(ai0Omain:Environment010Oe
21、nt:java.home=/usr/java/jdkl.8.0 191/j re 2022-07-14 04:23:36,949 myid: INFO main:Environment010OClient environmClient environmClient environmClient environmClient environment:java.class.path=/usr/local/zookeeper-3.4.13/bin/./build/classes:/usr/local/ r_ _ 3 A T 3 / h -i n / /hiH 1 d /I 4 H /* -i a r
22、 /i ic r/I al /7rrL,oorior_ ,3 A 1 5 /h 4 n / /I i K /c图511进入ZooKeeper客户端命令行连接成功之后,系统会输出该ZooKeeper服务器的相关环境及配置信息,并在屏幕输出 “ Welcome to ZooKeeper!v等信息。(2)使用ZooKeeper Shell命令进行下列一系列简单操作。 查看ZooKeeper根目录结构使用命令“1s”查看根数据节点下的所有子数据节点,使用命令及运行效果如下所示。zk: slavel:2181(CONNECTED) 1 Is/zookeeper创建ZNode使用命令create”在根目录
23、下创建ZNode “xijing”及相关数据内容,默认创建持 久数据节点,使用命令及运行效果如下所示。zk: slavel:2181(CONNECTED) 2 create /xijing its a persistent nodeCreated /xijing查看ZNode使用命令“get”查看ZNode “/xijing”数据内容及节点信息,使用命令及运行效果如下 所示,这里,各个属性信息后均人工添加了注释。zk: slavel:2181(CONNECTED) 3 get /xijingits a persistent node #数据节点的数据内容cZxid = 0x100000002#
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 指导书 部署 ZooKeeper 集群 实战
限制150内