# 分布式集群搭建

## 结构

一共三个节点\
(zk服务器集群规模不小于3个节点),要求服务器之间系统时间保持一致。

## 上传zk并且解压

进行解压： `tar -zxvf zookeeper-3.4.6.tar.gz`\
重命名： `mv zookeeper-3.4.6 zookeeper`

## 修改zookeeper环境变量

```
vi /etc/profile
export JAVA_HOME=/usr/jdk8
export ZOOKEEPER_HOME=/usr/local/zookeeper
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
```

运行以下使配置生效

```
source /etc/profile
```

## 修改zoo\_sample.cfg文件

```
cd /usr/local/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
```

修改conf: `vi zoo.cfg` 修改两处

（1） dataDir=/usr/local/zookeeper/data（注意同时在zookeeper创建data目录）\
（2）最后面添加

```
server.0=zp:2888:3888
server.1=zp1:2888:3888
server.2=zp2:2888:3888
```

> zp,zp1,zp2 都是在/etc/hosts下进行了ip映射
>
> 如果是单机伪分布式
>
> 1；可以填写相同ip，配置在每个配置文件中
>
> ```
> server.0=192.168.1.111:2888:3888
> server.1=192.168.1.111:2889:3889
> server.2=192.168.1.111:2890:3890
> ```
>
> 2;配置不同的端口，每个配置中使用一个
>
> ```
> clientPort=2181  #第一个zk配置中使用
>
> clientPort=2182  #第二个zk配置中使用
>
> clientPort=2183  #第三个zk配置中使用
> ```
>
> 3.三个物理目录
>
> ```
> /usr/local/zookeeper
> /usr/local/zookeeper01
> /usr/local/zookeeper02
> ```

## 创建服务器标识

服务器标识配置：

* 创建文件夹： `mkdir data`
* 创建文件myid并填写内容为0： `vi myid` (内容为服务器标识 ： 0)

## 复制zookeeper

进行复制zookeeper目录到zp01机器和zp02机器

并且配置zp01机器和zp02机器的/etc/profile文件

把zp01机器和zp02机器中的myid文件里的值修改为1和2，路径(`vi /usr/local/zookeeper/data/myid`)

## 启动zookeeper

* 启动zookeeper：
* 路径： /usr/local/zookeeper/bin
* 执行： zkServer.sh start
* 查看状态： zkServer.sh&#x20;

(注意这里3台机器都要进行启动)\
status(在三个节点上检验zk的mode,一个leader和俩个follower)

## 常用命令

zkServer.sh start 启动服务

zkServer.sh status 查询状态

zkServer.sh stop 停止服务
