# Zookeeper單機版安裝
### Java環境
Zookeeper安裝需要依賴Java,因此確保Java環境已經準備就緒。
```shell
java -version
```
### Zookeeper安裝
1. 下載[Zookeeper](http://zookeeper.apache.org/releases.html)壓縮包
```http
http://zookeeper.apache.org/releases.html
```
> 以`zookeeper-3.4.14.tar.gz`為例
2. 解壓Zookeeper壓縮包
```shell
tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local/
```
3. 創建`data`目錄
```shell
cd /usr/local/zookeeper-3.4.14
mkdir data
```
> /usr/local/zookeeper-3.4.14/data
4. 創建配置文件
```shell
cp /usr/local/zookeeper-3.4.14/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.14/conf/zoo.cfg
```
> 默認值:
>
> tickTime=2000
>
> initLimit=10
>
> syncLimit=5
>
> clientPort=2181
>
> dataDir=/tmp/zookeeper
修改`dataDir`的值為第3步創建的目錄`data`
```shell
sed -i '/dataDir=/cdataDir=\/usr\/local\/zookeeper-3.4.14\/data' /usr/local/zookeeper-3.4.14/conf/zoo.cfg
```
### Zookeeper啟停[服務器]
```
/usr/local/zookeeper-3.4.14/bin/zkServer.sh start
```
> ZooKeeper JMX enabled by default
>
> Using config: /usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfg
>
> Starting zookeeper ... STARTED
```shell
/usr/local/zookeeper-3.4.14/bin/zkServer.sh stop
```
> ZooKeeper JMX enabled by default
> Using config: /usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfg
> Stopping zookeeper ... STOPPED
### Zookeeper啟動[客戶端]
```shell
/usr/local/zookeeper-3.4.14/bin/zkCli.sh
```
> ... ...
> WatchedEvent state:SyncConnected type:None path:null
> [zk: localhost:2181(CONNECTED) 0]
# Zookeeper集群版安裝
1. 修改`zoo.cfg`配置文件
```
server.A=B:C:D
```
尾部新增如上配置。A為一個節點編號,如`0`或`1`或`2`。B為節點ip地址。C為Leader選舉端口。D為數據同步端口。
```
server.1=192.168.8.101:2888:3888
server.2=192.168.8.102:2888:3888
server.3=192.168.8.103:2888:3888
```
```shell
echo "server.1=192.168.8.101:2888:3888" >>/usr/local/zookeeper-3.4.14/conf/zoo.cfg
echo "server.2=192.168.8.102:2888:3888" >>/usr/local/zookeeper-3.4.14/conf/zoo.cfg
echo "server.3=192.168.8.103:2888:3888" >>/usr/local/zookeeper-3.4.14/conf/zoo.cfg
```
2. 創建`myid`文件
在文件中鍵入A(節點編號),如`0`或`1`或`2`,保存至參數`dataDir`指定目錄。
```shell
echo "1" >/usr/local/zookeeper-3.4.14/data/myid # 在第1臺服務器上執行
```
```shell
echo "2" >/usr/local/zookeeper-3.4.14/data/myid # 在第2臺服務器上執行
```
```shell
echo "3" >/usr/local/zookeeper-3.4.14/data/myid # 在第3臺服務器上執行
```
# Zookeeper狀態和端口
### 開放端口
```shell
firewall-cmd --add-port=2888/tcp --permanent
firewall-cmd --add-port=3888/tcp --permanent
firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port
```
### 查看狀態
```shell
/usr/local/zookeeper-3.4.14/bin/zkServer.sh start # 啟動
/usr/local/zookeeper-3.4.14/bin/zkServer.sh status # 查看狀態
/usr/local/zookeeper-3.4.14/bin/zkServer.sh stop # 停止
/usr/local/zookeeper-3.4.14/bin/zkServer.sh restart # 重啟
```