1、準(zhǔn)備
1.1、準(zhǔn)備三臺(tái)主機(jī)
zookeeper集群主機(jī)數(shù)建議是奇數(shù)2n+1,因此最少3臺(tái)。
| 主機(jī)名 | 主機(jī)ip |
|---|---|
| learn1 | 192.168.31.200 |
| learn2 | 192.168.31.201 |
| learn3 | 192.168.31.202 |
1.2、安裝jdk
安裝jdk8,并且配置JAVA_HOME
1.3、下載zookeeper
從官網(wǎng)上下載zookeeper,https://zookeeper.apache.org/
我本次下載版本:apache-zookeeper-3.7.0-bin.tar.gz
2、安裝第一臺(tái)
2.1、部署zookeeper
(1)上傳zookeeper,并解壓
$ cd /home/wentian/app/zookeeper
$ tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
(2)創(chuàng)建軟連接
$ cd /home/wentian/app/zookeeper
$ ln -s apache-zookeeper-3.7.0-bin zookeeper3
注:通過軟連接方式,是將來如果需要升級(jí)zookeeper等,直接改軟連接重新指向即可。
2.2、創(chuàng)建實(shí)例目錄
$ mkdir -p /home/wentian/zookeeper
$ cd /home/wentian/zookeeper
$ mkdir data #數(shù)據(jù)目錄
$ mkdir log #日志目錄
$ mkdir sh #腳本目錄
$ mkdir conf #配置目錄
2.3、配置
(1)從zookeeper樣例配置文件拷貝
$ cd /home/wentian/app/zookeeper/zookeeper3/conf
$ cp zoo_sample.cfg /home/wentian/zookeeper/conf/zoo.cfg
(2)修改配置文件zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/wentian/zookeeper/data
clientPort=2181
maxClientCnxns=600
#autopurge.snapRetainCount=3
#autopurge.purgeInterval=1
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
server.1=192.168.31.200:2188:3188
server.2=192.168.31.201:2188:3188
server.3=192.168.31.202:2188:3188
其中
server配置說明:
格式:server.x=ip:port1:port2
x:服務(wù)器編號(hào)myid
ip:服務(wù)器ip地址
port1:服務(wù)器與集群中的 Leader 服務(wù)器交換信息的端口
port2:Leader服務(wù)器掛了,通過該端口重新選舉Leader
(3)配置服務(wù)器myid
在dataDir目錄下配置myid,該myid就是上面server.x中的x
$ cd /home/wentian/zookeeper/data
$ touch myid
$ echo "1" > myid
2.4、創(chuàng)建腳本
(1)啟動(dòng)腳本
/home/wentian/zookeeper/sh/start.sh
WORK_HOME=/home/wentian/zookeeper
ZOOKEEPER_HOME=/home/wentian/app/zookeeper/zookeeper3
export ZOO_LOG_DIR=${WORK_HOME}/log
export JVMFLAGS="-Dtarget=zookeeper"
export JAVA_HOME=/home/wentian/app/java/jdk8
${ZOOKEEPER_HOME}/bin/zkServer.sh start ${WORK_HOME}/conf/zoo.cfg
(2)停止腳本
/home/wentian/zookeeper/sh/stop.sh
WORK_HOME=/home/wentian/zookeeper
ZOOKEEPER_HOME=/home/wentian/app/zookeeper/zookeeper3
export ZOO_LOG_DIR=${WORK_HOME}/log
${ZOOKEEPER_HOME}/bin/zkServer.sh stop ${WORK_HOME}/conf/zoo.cfg
(3)狀態(tài)查看腳本
/home/wentian/zookeeper/sh/status.sh
WORK_HOME=/home/wentian/zookeeper
ZOOKEEPER_HOME=/home/wentian/app/zookeeper/zookeeper3
export ZOO_LOG_DIR=${WORK_HOME}/log
${ZOOKEEPER_HOME}/bin/zkServer.sh status ${WORK_HOME}/conf/zoo.cfg
(4)zookeeper訪問腳本
/home/wentian/zookeeper/sh/visit.sh
ZOOKEEPER_HOME=/home/wentian/app/zookeeper/zookeeper3
${ZOOKEEPER_HOME}/bin/zkCli.sh -server 192.168.31.200:2181,192.168.31.201:2181,192.168.31.202:2181
3、繼續(xù)安裝其他兩臺(tái)
除了配置服務(wù)器編號(hào)myid不同以外,其他都相同
4、啟動(dòng)zookeeper
依次啟動(dòng)三臺(tái)zookeeper
$ sh /home/wentian/zookeeper/sh/start.sh
5、查查看zookeeper實(shí)例的狀態(tài)
執(zhí)行status.sh,查看zookeeper實(shí)例狀態(tài)
$ sh /home/wentian/zookeeper/sh/status.sh
zookeeper實(shí)例狀態(tài)查看結(jié)果:
機(jī)器1:
[wentian@learn1 sh]$ sh status.sh
/home/wentian/app/java/jdk8/bin/java
ZooKeeper JMX enabled by default
Using config: /home/wentian/zookeeper/conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
機(jī)器2:
[wentian@learn2 sh]$ sh status.sh
/home/wentian/app/java/jdk8/bin/java
ZooKeeper JMX enabled by default
Using config: /home/wentian/zookeeper/conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
機(jī)器3:
[wentian@learn3 sh]$ sh status.sh
/home/wentian/app/java/jdk8/bin/java
ZooKeeper JMX enabled by default
Using config: /home/wentian/zookeeper/conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower