# 分布式集群搭建

## 结构

一共三个节点\
(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 停止服务


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xiaoxiami.gitbook.io/zookeeper/zookeeperhuan-jing-da-jian/dan-ji-wei-fen-bu-shi-da-jian.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
