从Paxos到ZooKeeper-ZooKeeper安装及简单使用

一、安装与运行

    ZooKeeper使用Java语言编写,其运行环境需要Java环境的支持,在下载安装ZooKeeper之前需要保证JDK已经安装

    ZooKeeper有两种运行模式,集群与单机模式

1. 集群模式

    在http://mirror.bit.edu.cn/apache/zookeeper/中下载ZooKeeper安装包然后进行解压缩(截图之前不小心按了解压,刷上去了就又重新下载了一个),使用命令tar -zxvf zookeeper-3.4.6.tar.gz进行解压缩,进入解压缩后的目录可以看到如下所示结构

    进入conf目录下,将zoo_sample.cfg重命名为zoo.cfg,并对其进行编辑(太穷了只买的起一台云主机,就按照书上所示的步骤演示了下,实际配置的时候将其中service.x=IP:2888:3888中的IP换成集群中的IP即可),对于集群中所有机器的zoo.cfg都应该是一致

这里写图片描述

    因为在集群模式中,每台机器都需要感知集群是由哪些机器组成,在配置文件中就按照server.id=host:port:port代表一台机器,其中id表示该机器在集群中的机器序号(范围为1-255,需确保唯一性),为了让机器知道自己的id是多少,需要在数据目录,也就是图中dataDir所指向目录下创建myid文件,文件内容即为机器对应的id数字

这里写图片描述

    然后通过命令sh zkServer.sh start启动服务器,然后可以通过命令telnet 127.0.0.1 2181检查服务器是否启动成功,输出结果应该和下面的单机类似,只是它的Mode应该是leader或者follower(Leader和Follower的角色关系在从Paxos到ZooKeeper-初识ZooKeeper中有讲到)

2. 单机模式

    ZooKeeper支持单机部署,只要启动一台ZooKeeper服务器就可以提供正常的服务,其实单机模式的安装步骤和集群模式类似,只是对于zoo.cfg的配置不同罢了,说不同也相同,单机模式只是一种特殊的集群模式,所以它的zoo.cfg文件中,只有server.1这一项,同样,记得在dataDir下添加文件myid配置机器的id

这里写图片描述

    进入bin目录下,使用其中的zkServer.sh进行ZooKeeper服务器的启动,ummm,忘了装telnet,通过yum把telnet装上

这里写图片描述

    通过telnet查看服务器是否正常启动,连接后使用stat命令进行服务器启动的验证,可以查看到上面的类似信息,其中Mode显示的是standalone

这里写图片描述

3.伪集群模式

    所谓伪集群就是集群所有机器都在一台机器上,但是以集群的方式对外提供服务,同样,这种方式也是修改了zoo.cfg,将server.1、server.2、server.3 … …配置的IP地址都改成当前机器的IP地址,但后面的端口配置不相同

这里写图片描述

4. 运行与停止服务

    通过ZooKeeper安装目录下面的bin中的脚本来启动服务,这个目录下的所有文件都有两种格式:.sh和.cmd,分别用于UNIX系统和Windows系统

这里写图片描述

    其中zkCleanup用于清理ZooKeeper历史数据;zkCli作为ZooKeeper的简易客户端;zkEnv设置ZooKeeper环境信息;zkServer用于服务器的启动、停止和重启

功能描述:启动ZooKeeper服务
语法:./zkServer.sh start


功能描述:停止ZooKeeper服务
语法:./zkServer.sh stop

这里写图片描述

二、客户端简单使用

    通过命令./zkCli.sh进入ZooKeeper客户端,可以看到它输出了很多信息,只要看到最后的两行,就表明成功连接上ZooKeeper服务器了,这里的命令并没有指定ZooKeeper服务器端的地址,默认是连接到本地,可以添加选项-server ip:port指定具体连接到哪个服务器

这里写图片描述

功能描述:创建ZooKeeper节点
语法:create [-se] path data [acl]
          -e 指定节点为临时节点
          -s 指定节点为顺序节点
          acl 表明节点的权限控制,和Unix权限控制类似
提示:path为数据节点的节点路径
          不添加选项s或e则表明创建的是持久节点
          因为还没有看到ZooKeeper中的acl权限控制的细节,有需要可以在Linux权限管理看看Linux中的acl

这里写图片描述


功能描述:列出指定节点下所有的第一级子节点
语法:ls path
提示:path为数据节点的节点路径
          第一次部署的ZooKeeper集群默认在根节点下有/zookeeper的保留节点

这里写图片描述


功能描述:获取指定节点的数据内容和属性信息
语法:get path
提示:path为数据节点的节点路径
输出:cZxid->创建该节点的事务ID,mZxid->最近更新该节点的事务ID,mtime->最近更新节点的时间 … …

这里写图片描述


功能描述:更新指定节点的数据内容
语法:set path 数据内容 [version]
提示:ZooKeeper中节点的数据有版本的概念,这里的version参数用于指定该操作作用于哪个数据版本上
          修改后可以看到输出的相关信息中,dataVersion和更新前的dataVersion并不相同

这里写图片描述


功能描述:删除ZooKeeper上指定节点
语法:delete path [version]
提示:删除的指定节点必须要没有子节点的存在,否则会出现Node not empty错误

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值