Zookeeper学习 安装和四字命令

Posted gongcomeon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zookeeper学习 安装和四字命令相关的知识,希望对你有一定的参考价值。

前言

在刚开始没有接触zookeeper的具体应用前,光看别人的描述,其实对它的实际应用其实不是特别清晰,所以慢慢从其基础应用开始了解其底层原理是很重要也是很必要的。

首先,安装Zookeeper并了解一下Zookeeper的基础命令。这个过程是非常简单的,正如zookeeper官网说的,zookeeper是可复制的,安装zookeeper的集群其实就是安装多个单机版的zookeeper,然后通过配置让每个zookeeper起来。因此,Zookeeper的安装有下列几种:

  1. 单机Zookeeper
  2. 单机多Zookeeper示例
  3. Zookeeper集群

其实之前在公司项目里就研究过Zookeeper的使用,并在team的wiki里把zookeeper的安装过程和在项目里的使用信息在wiki中分享了,这里把当时的安装过程翻译(公司wiki是英文写的),分享一下,并介绍一下zookeeper的基础命令。在下一章介绍中会做一个简单的demo介绍下zookeeper的基础API的使用,同时也会简单说说我们当时在项目中是如何使用zookeeper的。

单机安装

1. 环境

centos7, Java 1.8(Zookeeper要求Java不低于1.6的版本)

技术分享图片

并且Zookeeper必须要2GB的RAM和80GB硬盘空间。

2. 下载Zookeeper

Zookeeper版本查看:Zookeeper Releases

我们项目中使用的版本是:Release 3.4.11(stable) ; Archive网址:Zookeeper 3.4.11

cmd: wget?https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz

技术分享图片

3. 解压

把下载的Zookeeper解压成binary文件。

cmd:?tar -zxvf zookeeper-3.4.11.tar.gz

技术分享图片

4. 具体操作

  • 进入解压后zookeeper的文件夹,然后进入conf文件夹。这时候会发现有一个zoo_sample.cfg文件。

  • 复制zoo_sample.cfg并生成一个新的名为zoo.cfg的文件。

技术分享图片

  • 编辑zoo.cfg。

    • 把zoo.cfg中dataDir的值改为一个已经有的文件夹,在我们当时的测试环境中我们设置的值是dataDir=/var/lib/zookeeperdataDir是存放内存数据库快照的位置; 默认情况下,事务日志也会存储在这里。
    • tickTime:基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的 tickTime。
    • dataLogDir: 事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能。
    • clientPort:客户端连接server的端口,即对外服务端口,一般默认为2181。
    • 总参数的详解:Zoo.cfg 参数介绍
    • 技术分享图片

5. 启动Zookeeper

进入Zookeeper目录下的bin目录,开始启动zookeeper并查看Zookeeper的状态。

启动Zookeeper cmd:?./zkServer.sh start

查看Zookeeper状态 cmd:?./zkServer.sh status

技术分享图片

如果没有启动成功,可以查看zookeeper根目录下的zookeeper.out文件。

6. 使用Zookeeper客户端连接服务器端

在zookeeper根目录下的bin目录下,有zkCli.sh文件,这就是Zookeeper的客户端。可以使用zookeeper的客户端来连接服务器端。

cmd:?./zkCli.sh -server IP:PORT

IP:PORT不填写为默认连接本机Zookeeper。

技术分享图片

技术分享图片

使用quit可以退出和服务期端的连接。

技术分享图片

搭建Zookeeper集群

现在我们在一台机器上搭建好了zookeeper,这个过程也是非常简单的。

而Zookeeper的集群需要2*n+1个实例,所以要搭建一个最简单的zookeeper的集群,需要三个实例。那么现在有两种方案:

  1. 在单台机器上安装三个zookeeper实例。但是有几个条件需要保证:
    1. dataDir需要设置成不同的文件夹;
    2. clientPort需要不同;
    3. dataLogDir需要设置成不同的文件夹(如果有的话);
    4. server.x及后面的端口号需要不同(后面会详细介绍)。
  2. 在三台机器上安装三个独立的zookeeper。

还记得之前的dataDir吗?进入你设置的dataDir目录,新建一个名为myid的文件。文件如其名,myid里含有一行文本,其含义也就是这个机器在Zookeeper集群里的id。这个id不能大于255。如果是在一台机器上创建了多个zookeeper实例,和在多台机器上安装多个zookeeper是一样,去到它们对应的dataDir文件夹,分别给每一个建一个myid文件就可以了,但是要保证里面的id值不一样。

然后分别编辑每一个zookeeper的zoo.cfg文件,在他们的最后加上server.x=ip:port1:port2这样格式的配置。这样说有点不清楚,举个例子配上图片就清楚啦。

现在假设安装的三个zookeeper在对应的myid里设置的id值为1,2,3,对于其中任意一个zookeeper的实例,它们的x值就是它们在myid里设置的id值,并且ip也要和实例对应起来,儿后面的port1,port2不仅要不一样,同时也不能和之前的clientPort一样,之前我配置的时候吧port1和clientPort配置成一样的了导致一直失败。一定要注意!!!

可以看一下我的配置,记得在每一个实例的zoo.cfg中都要配置哦!

技术分享图片

看最下面红框里面的部分,马赛克的部分就是对应的ip,千万记得三个端口不能有重复!

重启zookeeper

在每一台机器上重启zookeeper服务(./zkserver restart),你可能会发现重启的时候zookeeper会报连接不通的错误,别着急,把所有的启动完~

启动完之后去看每一台的状态,这时候就会有下图中的状态:

技术分享图片

这个是zookeeper集群中的leader。

技术分享图片

这是集群中的follower。

Zookeeper的四字命令

zookeeper四字命令的官网介绍:四字命令

技术分享图片

下面是每一个操作的返回样例:

技术分享图片

技术分享图片

以上是关于Zookeeper学习 安装和四字命令的主要内容,如果未能解决你的问题,请参考以下文章

zookeeper 四字命令

zookeeper 四字命令的shi yong

11、Zookeeper的四字命令

转zookeeper之 zkServer.sh命令zkCli.sh命令四字命令

zookeeper权限acl与四字命令

学习zookeeper—基础