1、准备
1.1、准备三台主机
zookeeper集群主机数建议是奇数2n+1,因此最少3台。
| 主机名 | 主机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
从官网上下载zookeeper,https://zookeeper.apache.org/
我本次下载版本:apache-zookeeper-3.7.0-bin.tar.gz
2、安装第一台
2.1、部署zookeeper
(1)上传zookeeper,并解压
$ cd /home/wentian/app/zookeeper
$ tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
(2)创建软连接
$ cd /home/wentian/app/zookeeper
$ ln -s apache-zookeeper-3.7.0-bin zookeeper3
注:通过软连接方式,是将来如果需要升级zookeeper等,直接改软连接重新指向即可。
2.2、创建实例目录
$ mkdir -p /home/wentian/zookeeper
$ cd /home/wentian/zookeeper
$ mkdir data #数据目录
$ 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:服务器编号myid
ip:服务器ip地址
port1:服务器与集群中的 Leader 服务器交换信息的端口
port2:Leader服务器挂了,通过该端口重新选举Leader
(3)配置服务器myid
在dataDir目录下配置myid,该myid就是上面server.x中的x
$ cd /home/wentian/zookeeper/data
$ touch myid
$ echo "1" > myid
2.4、创建脚本
(1)启动脚本
/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)状态查看脚本
/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、继续安装其他两台
除了配置服务器编号myid不同以外,其他都相同
4、启动zookeeper
依次启动三台zookeeper
$ sh /home/wentian/zookeeper/sh/start.sh
5、查查看zookeeper实例的状态
执行status.sh,查看zookeeper实例状态
$ sh /home/wentian/zookeeper/sh/status.sh
zookeeper实例状态查看结果:
机器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
机器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
机器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