安装jdk
从oracle官网下载jdk1.8
# wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.rpm
# rpm -ivh jdk-8u144-linux-x64.rpm
# vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile
下载安装包
从web众多镜像下载一个安装包
http://www.apache.org/dyn/closer.cgi/zookeeper/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/zookeeper-3.4.10.tar.gz
解压安装包
# tar xf zookeeper-3.4.10.tar.gz
# mv zookeeper-3.4.10 zk1
# cp zk1 zk2 -rf
# cp zk1 zh3 -rf
编辑3个节点的zoo.cfg配制文件
# cat zk1/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zk1
dataLogDir=/data/zk1-log
clientPort=2181
server.1=192.168.0.190:2887:3887
server.2=192.168.0.190:2888:3888
server.3=192.168.0.190:2889:3889
# cat zk2/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zk2
dataLogDir=/data/zk2-log
clientPort=2182
server.1=192.168.0.190:2887:3887
server.2=192.168.0.190:2888:3888
server.3=192.168.0.190:2889:3889
# cat zk3/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zk3
dataLogDir=/data/zk3-log
clientPort=2183
server.1=192.168.0.190:2887:3887
server.2=192.168.0.190:2888:3888
server.3=192.168.0.190:2889:3889
参数说明
tickTime=2000:
tickTime这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳;
initLimit=10:
initLimit这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过10个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒;
syncLimit=5:
syncLimit这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒;
dataDir=/export/search/zookeeper-cluster/zookeeper-3.4.6-node1/data
dataDir顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在这个目录里;
clientPort=2181
clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
server.A=B:C:D:
A是一个数字,表示这个是第几号服务器,B是这个服务器的ip地址
C第一个端口用来集群成员的信息交换,表示的是这个服务器与集群中的Leader服务器交换信息的端口
D是在leader挂掉时专门用来进行选举leader所用
创建目录:
# mkdir -p /data/zk1
# mkdir -p /data/zk1-log
# mkdir -p /data/zk2
# mkdir -p /data/zk2-log
# mkdir -p /data/zk3
# mkdir -p /data/zk3-log
创建ServerID标识
# echo "1" >/data/zk1/myid
# echo "2" >/data/zk2/myid
# echo "3" >/data/zk3/myid
启动zookeeper
# zk1/bin/zkServer.sh start
# zk2/bin/zkServer.sh start
# zk3/bin/zkServer.sh start
验证部署是否成功
登录zk1,创建一个znode
# zk1/bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 1] create /fznode “panjunbai"
Created /fznode
登录zk2,查看是否创建成功
# zk2/bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] get /fznode
“panjunbai"
cZxid = 0x8
ctime = Sun Sep 03 10:21:18 EDT 2017
mZxid = 0x8
mtime = Sun Sep 03 10:21:18 EDT 2017
pZxid = 0x8
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 13
numChildren = 0