zookeeper集群的搭建以及命令详解

一、安装jdk

  ①    :下载jdk ,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html,下载完成之后使用tar 命令解压;

  ②    :配置环境变量

   修改 /etc/profile

 vi  /etc /profile
#在末尾追加以下内容
export JAVA_HOME=/root/apps/jdk1.8.0_151
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

  ③    :source  /etc/profile

  ④    :检测是否安装成功

    java  -version

二、搭建zookeeper集群

  ①:下载zookeeper,下载地址http://mirror.bit.edu.cn/apache/zookeeper/

  ②:解压  tar  -zxvf   zookeeper.tar.gz

  ③:修改zoo.cfg 

    cp  zooo_sample.cfg  zoo.cfg

    vi  zoo.cfg

dataDir= /tmp/zookeeper/data     //修改dataDir的目录
#在zoo.cfg末尾添加以下内容 server.1=192.168.1.1:2888:3888 server.2=192.168.1.2:2888:3888 server.3=192.168.1.3:2888:3888

zoo.cfg配置文件详解:

  clientPort:

    clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;

  tickTime

    tickTime 是zookeeper中的基本时间单元,代表发送心跳的间隔时间,单位是毫秒;

  initLimit

    initLimit是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端和leader连接失败。总的时间为:10*2000=20秒;

  ataDir

    dataDir是zookeeper持久化存放数据存放的目录;.

  syncLimit

    Leader和Follower之间发送消息时,请求和应答的时间长度,最长不能超过多少个tickTime的时间长度,默认值为5,所以总的时间为5*2000=10秒;

  ④:分发zookeeper

    使用scp命令将配置好的zookeeper分发到server2  ,server3对应的目录,如果没有scp命令,使用  yum install openssl 安装即可;

 scp /root/apps/zookeeper-3.4.14/  root@192.168.1.2:/root/apps/
 scp /root/apps/zookeeper-3.4.14/  root@192.168.1.3:/root/apps/

 分发完成之后分别在server1,server2,server3的/tmp/zookeeper/data中创建myid文件,然后分别写入以下内容

       echo  1  > /tmp/zookeeper/data/myid

  echo  2  > /tmp/zookeeper/data/myid

  echo  3  > /tmp/zookeeper/data/myid

注意事项:192.168.1.1对应的是第一台server,所以在192..168.1.1这台server中输入:echo  1  > /tmp/zookeeper/data/myid,其它同理;跟zoo.cfg配置文件必须相对应

  ⑥:启动zookeeper集群:分别在server1s,server2,server3上执行以下命令  

 cd  /root/apps/zookeeper-3.4.14/bin/
 ./zkServer.sh start

如果使用CRT,可以在view  ===> Command Window勾选,然后在Command  Window中勾选Send Commands to All  Sessions,执行一次命令即可;

  ⑥:查看zookeeper集群的状态
    ./zkServer.sh status    //两个follower  一个leader即集群搭建成功;

三、关于zookeeper命令的介绍

①:连接zookeeper:./zkCli.sh   -server  1962.168.1.1 

②:使用--help查看帮助文档

③:查看所有得节点:  ls  /

④:创建节点:create  /zkdemo  helloworld  (默认创建的是永久的节点,如果想要创建临时的节点,可以使用 -e )

注意:同级节点必须唯一性,即在同一节点下不可能出现两个同名的节点;临时节点下不能创建子节点;

⑤:查看节点信息:  get   /zkdemo

节点信息详解:  

  helloworld -- 节点的数据信息

  cZxid  -- cZxid指的是节点创建时的事务id. 不变.

  ctime -   节点的创建时间. 不变.

  mZxid  -- 节点最近一次修改的事务id. 包括对本节点数据的修改. 本节点acl的修改,子节点的增加删除以及子节点acl的修改都不会影响到该值.

  mtime    -- 节点最近一次修改的时间.

  pZxid  -- 对子节点最近的一次修改, 包括子节点的增加删除, 但是子节点的数据修改和acl权限控制,不会影响这个信息.

  cversion   -- 子节点的版本号, 对子节点的增加和删除操作, 版本号都会加1.但是子节点的数据和acl修改不会影响这个信息.

  ataVersion    -- 数据版本.本节点的数据信息每被修改一次, 加1

  aclVersion   -- acl 版本号. acl指的是对改节点的访问权限, 每更改一次就加1

  ephemeralOwner  -- ephemeral节点所属的客户端的sessionId. 如果是persist 节点, 则为0

  dataLength  -- 数据长度

  numChildren    -- 子节点的数量

⑥:修改节点信息:set  /zkdemo   zookeeper

  get  /zkdemo

⑦:删除节点:

  delete  /zkdemo

 

posted @ 2019-04-26 16:22  夜凌云~  阅读(2758)  评论(0编辑  收藏  举报