# ZooKeeper学习(二)—Zookeeper单机模式与集群模式环境搭建
[TOC]
zookeeper支持三种搭建模式,单机模式,集群模式,伪集群模式
- **单机模式**:zookeeper只运行单个服务,一般用于测试或开发环境
- **集群模式**:zookeeper运行在集群上,一般用于生产环境
- **伪集群模式**:zookeeper在一台机器上运行多个服务,组合成一个集群,适合于单机服务器性能特别好的场景,可以将一台服务器性能得到充分发挥
## Centos下安装单机环境
首先先去官网下载zookeeper,http://zookeeper.apache.org/releases.html
这里我们下载了3.4.14版本

- 上传文件至centos服务器下
- 输入命令`tar -zxvf zookeeper-3.4.14.tar.gz` 解压缩
- 解压缩后进入zookeeper文件夹并创建data文件夹
```yaml
cd zookeeper-3.4.14/
ls
mkdir data
ls
```

- 进入conf文件夹,并复制原有的配置文件
```
cd conf
cp zoo_sample.cfg zoo.cfg
```

- 修改zoo.cfg配置文件的data属性,将其改为刚才我们新建的data文件夹
```
vim zoo.cfg
dataDir=/data/zookeeper/data
```

- 进入bin目录,启动zookeeper服务
```
cd ../bin
./zkServer.sh start
```

- 查看zookeeper此时的状态
```java
./zkServer.sh status
```

- 停止zookeeper
```
./zkServer.sh stop
```

- 再次查看zookeeper状态,和启动时查看的状态是不一样的

## 伪集群模式的搭建
集群模式和伪集群模式的搭建大同小异,这里我们就用一台服务器来搭建一个zookeeper伪集群,需要在一台机器上面运行三个zookeeper服务,所以我们需要在复制两份zookeeper实例出来,并将其中的配置文件做相应的修改。
这里我们将集群修改为,端口号分别为2181,2182,2183,并且他们的通信端口与投票端口也改为相应的其他值,所以我们这里先对其中一台机器进行相应的修改,然后将这个实例复制两份并进行修改就可以了。
- 首先进入原有安装的zookeeper,并打开其中的配置文件
```
vim zoo.conf
```

- 修改配置,增加日志文件存储,增加集群服务访问配置
```
#数据存放地址
dataDir=/data/zookeeper/zookeeper-3.4.14/data
#日志地址
dataLogDir=/data/zookeeper/zookeeper-3.4.14/logs
#端口号
clientPort=2181
#每一行都代表一个机器配置
#server.服务器ID=服务器IP地址:服务器之间通信端⼝:服务器之间投票选举端⼝
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
```

- 在每台ZooKeeper机器上,我们都需要在数据目录(即dataDir参数指定的那个目录)下创建一个 myid 文件,该文件只有一行内容,并且是一个数字,即对应于每台机器的Server ID数字。server.1的myid文件只需要写一个1就可以了
```
cd /data/zookeeper/zookeeper-3.4.14/data
touch myid
vim myid
```
- 复制此份zookeeper实例两遍
```
cp -r zookeeper-3.4.14 zookeeper-02
cp -r zookeeper-3.4.14 zookeeper-03
```
然后将02与03的配置文件分别修改


- 先启动服务,还是一样,进入bin目录

- 再查看下此时的状态

- 这里显示报错,是因为我们的集群只有一台服务启动了,所以他还是显示运行失败,我们这里将其他两台zookeeper的服务也启动后再次查看状态



- 可以看到,我们的zookeeper服务已经启动了,并且其中的leader机器已经选举出来了,就是02号机器,01和03机器此时都是follower
ZooKeeper学习(二)—Zookeeper单机模式与集群模式环境搭建