Zookeeper的安装配置和简单使用-yellowcong

来源:互联网 发布:剑三捏脸数据清丽成女 编辑:程序博客网 时间:2024/06/05 02:07

折腾了一下zookeeper,Zookeeper是由Apache Handoop的子项目发展而来, ZooKeeper本质上是一个分布式的小文件存储系统,zookeeper仿照了google的chubby,因为google的chubby是不开源的。可以用于分布式系统的文件配置,服务发现,类似的还有Etcd,Etcd可以说是zookeeper的简化版本,类是的服务发现项目还有Consul、doozer。Doozer在国外是比较火的,我们在做项目中, 比较常用的是Etcd,zookeeper和consul三个项目

下载安装

这里写图片描述

官方下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/,用户可以自行选择一个速度较快的镜像来下载即可。
这里写图片描述

#下载安装包,我下载的是3.4.10版本的wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz#解压zookeeper,就完成了安装操作tar -zxvf zookeeper-3.4.10.tar.gz

这里写图片描述

目录结构

  • bin目录
    zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。其中,.sh是Linux环境下的脚本,.cmd是Windows环境下的脚本。
  • conf目录
    配置文件目录。zoo_sample.cfg为样例配置文件,需要修改为自己的名称,一般为zoo.cfg。log4j.properties为日志配置文件。
  • lib
    zk依赖的包。
  • contrib目录
    一些用于操作zk的工具包。
  • recipes目录
    zk某些用法的代码示例

这里写图片描述

各个目录下的文件,如下图
这里写图片描述

Zookeeper启动

启动前,需要添加一个zoo.cfg的配置文件,在Windows环境下,直接双击zkServer.cmd即可。在Linux环境下,进入bin目录,执行命令

#启动前,需要添加一个zoo.cfg的配置文件cp zoo_sample.cfg zoo.cfg#直接启动./zkServer.sh start#启动的时候,查看后台信息./zkServer.sh start-foreground#查看zookeeper 运行状态ps -ef |grep zookeeper

这个启动中,报错了,说zoo.cfg配置文件没有找到的情况
这里写图片描述

正常启动

这里写图片描述

grep: /usr/local/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg: 没有那个文件或目录

配置文件没有,所以导致了启动报错的情况,启动前,需要添加一个zoo.cfg的配置文件

#启动前,需要添加一个zoo.cfg的配置文件cp zoo_sample.cfg zoo.cfg

这里写图片描述

配置文件说明

需要将conf目录下的,conf目录下提供了配置的样例zoo_sample.cfg,要将zk运行起来,需要将其名称修改为zoo.cfg。

  • tickTime
    • 时长单位为毫秒,为zk使用的基本时间度量单位。例如:
      • 1 、tickTime是客户端与zk服务端的心跳时间
      • 2、 tickTime是客户端会话的超时时间。
      • 3、 tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。
  • clientPort
    • zk服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
  • dataDir
    • 无默认配置,必须配置,用于配置存储快照文件的目录。如果没有配置
  • dataLogDir 那么事务日志也会存储在此目录。
  • initLimit 用来配置客户端初始化,可以接受多少个心跳监测
    • 比如配置的是10 ,10*tickTime (2000默认),默认20s没有连接上集群的配置,就不尝试了,连接失败
  • syncLimit 用来配置Leader和follwer之间,允许多少个请求应答长度
    • 比如默认配置是5、 5*tickTime (2000默认),表示默认10s钟,Leader和Follwer之间如果消息5次没有发送成功就不尝试了
  • server.NUM=IP:port1:port2 (server.1=127.0.0.1:2222:2225)
    • NUM表示本机为第几号服务器;IP为本机ip地址;
    • port1为leader与follower通信端口;
    • port2为参与竞选leader的通信端口
    • 多个实例的端口配置不能重复
#zoo_sample.cfg配置文件# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial# synchronization phase can takeinitLimit=10# The number of ticks that can pass between# sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just# example sakes.#数据目录dataDir=/tmp/zookeeper#日志目录dataLogDir=/xxxx/xx# the port at which the clients will connectclientPort=2181# the maximum number of client connections.# increase this if you need to handle more clients#maxClientCnxns=60## Be sure to read the maintenance section of the# administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance## The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1#server.NUM=IP:port1:port2  NUM表示本机为第几号服务器;IP为本机ip地址;#port1为leader与follower通信端口;port2为参与竞选leader的通信端口#多个实例的端口配置不能重复server.1=127.0.0.1:2222:2225server.2=127.0.0.1:3333:3335server.3=127.0.0.1:4444:4445

登录zookeeper

 ./zkCli.sh -server 127.0.0.1:2181

拒绝连接

由于iptables使用的是2181端口,可能是端口没有开放问问题导致没有连接上

这里写图片描述

解决办法

#添加规则iptables -I INPUT -p tcp -m tcp --dport 2181 -m state --state NEW,ESTABLISHED -j ACCEPT#保存service iptables save #重启生效service iptables restart#登录成功后,会有提示是zk: xxx connected ./zkCli.sh -server 127.0.0.1:2181

这里写图片描述

简单操作

#创建节点create /test test1#获取节点数据get /test#更新节点set /test  test2#删除节点delete /test#递归删除数据,将子目录的数据也删除掉rmr /test #查看节点ls / #查看输入过的命令history

这里写图片描述

具体的api操作,说实话,功能还不少
这里写图片描述

使用ZooKeeper四字命令

zooKeeper 四字命令 功能描述 conf 输出相关服务配置的详细信息。 cons 列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。 dump 列出未经处理的会话和临时节点。 envi 输出关于服务环境的详细信息(区别于 conf 命令)。 reqs 列出未经处理的请求 ruok 测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应。 stat 输出关于性能和连接的客户端的列表。 wchs 列出服务器 watch 的详细信息。 wchc 通过 session 列出服务器 watch 的详细信息,它的输出是一个与watch 相关的会话的列表。 wchp 通过路径列出服务器 watch 的详细信息。它输出一个与 session相关的路径。

使用命令的方法

#查看配置信息echo conf|en localhost 2181#查看连接信息echo cons|en 192.168.1.1 2181

这里写图片描述

原创粉丝点击