zookeeper安装(〇)

zookeeper伪分布式,可以在同一台机器上,下载安装三份zookeeper,分别配置启动;也可以安装一份zookeeper,给出三份不同的配置文件,然后引用不同的配置文件启动三次,下面介绍第二种方式。

### 下载安装

下载并解压缩zookeeper到`D:\zookeeper`.

![zookeeper_1](zookeeper伪分布式.assets/zookeeper_1.png)

 

 

 

 

### 配置

* 进入`zookeeper\conf`目录下将`zoo_sample.cfg`复制一份改名为`zoo1.cfg`
* 修改`zoo1.cfg`内容如下:

```properties
tickTime=2000
initLimit=10
syncLimit=5

dataDir=D:\\zookeeperData\\data1
dataLogDir=D:\\zookeeperLog\\log1

clientPort=2181

server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
```

* 类似的创建`zoo2.cfg`,内容如下:

```properties
tickTime=2000
initLimit=10
syncLimit=5

dataDir=D:\\zookeeperData\\data2
dataLogDir=D:\\zookeeperLog\\log2

clientPort=2182

server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
```

* 类似的创建`zoo3.cfg`,内容如下:

```properties
tickTime=2000
initLimit=10
syncLimit=5

dataDir=D:\\zookeeperData\\data3
dataLogDir=D:\\zookeeperLog\\log3

clientPort=2183

server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
```

可以通过下面的命令查看选择的端口是否被占用:

`> netstat -ano`

### 数据目录

根据上述配置文件,在`D:\zookeeperData`下创建相应目录结构,

![zookeeper数据目录的目录结构](zookeeper伪分布式.assets/zookeeper_2.png)

 

 

 

 

在各个data目录下创建`myid`文件:

* `data1\myid`内容为一个字符:1;
* `data2\myid`内容为一个字符:2;
* `data3\myid`内容为一个字符:3。


至此,可以启动伪集群了,注意启动时,指定不同的配置文件:

```
D:\zookeeper\bin>zkServer.cmd start ..\conf\zoo1.cfg
D:\zookeeper\bin>zkServer.cmd start ..\conf\zoo2.cfg
D:\zookeeper\bin>zkServer.cmd start ..\conf\zoo3.cfg
```

查看状态:

```
D:\zookeeper\bin>zkServer.cmd status ..\conf\zoo1.cfg
D:\zookeeper\bin>zkServer.cmd status ..\conf\zoo2.cfg
D:\zookeeper\bin>zkServer.cmd status ..\conf\zoo3.cfg
```

这样每次都带着配置文件操作,为了方便,下面为三个实例创建不同的`zkServer.cmd`脚本.

### 命令文件

将`zkServer.cmd`文件复制一份,重命名为`zkServer_1.cmd`,在`set ZOOMAIN...`一行后面,加上一行:`set ZOOCFG=..\conf\zoo1.cfg`。

类似的创建`zkServer_2.cmd`,`zkServer_3.cmd`,注意使用`zoo2.cfg`和`zoo3.cfg`。

### 启动

依次执行`zkServer_1.cmd`,`zkServer_2.cmd`,`zkServer_3.cmd`三个命令启动集群.

连接集群`zkCli.cmd -server:localhost:2181`。

 

 

 

zoo.cfg配置参数详解

tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。
initLimit这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。
syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
dataDir顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;
clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;
server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。

 

posted @ 2019-10-12 16:15  LinuSiyu  阅读(87)  评论(0编辑  收藏  举报