一、安装jdk
① :下载jdk ,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html,下载完成之后使用tar 命令解压;
② :配置环境变量
修改 /etc/profile
vi /etc /profile
#在末尾追加以下内容
export JAVA_HOME=/root/apps/jdk1.8.0_151
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
③ :source /etc/profile
④ :检测是否安装成功
java -version
二、搭建zookeeper集群
①:下载zookeeper,下载地址http://mirror.bit.edu.cn/apache/zookeeper/
②:解压 tar -zxvf zookeeper.tar.gz
③:修改zoo.cfg
cp zooo_sample.cfg zoo.cfg
vi zoo.cfg
dataDir= /tmp/zookeeper/data //修改dataDir的目录
#在zoo.cfg末尾添加以下内容
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888
zoo.cfg配置文件详解:
clientPort:
clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;
tickTime
tickTime 是zookeeper中的基本时间单元,代表发送心跳的间隔时间,单位是毫秒;
initLimit
initLimit是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端和leader连接失败。总的时间为:10*2000=20秒;
ataDir
dataDir是zookeeper持久化存放数据存放的目录;.
syncLimit
Leader和Follower之间发送消息时,请求和应答的时间长度,最长不能超过多少个tickTime的时间长度,默认值为5,所以总的时间为5*2000=10秒;
④:分发zookeeper
使用scp命令将配置好的zookeeper分发到server2 ,server3对应的目录,如果没有scp命令,使用 yum install openssl 安装即可;
scp /root/apps/zookeeper-3.4.14/ root@192.168.1.2:/root/apps/
scp /root/apps/zookeeper-3.4.14/ root@192.168.1.3:/root/apps/
分发完成之后分别在server1,server2,server3的/tmp/zookeeper/data中创建myid文件,然后分别写入以下内容
echo 1 > /tmp/zookeeper/data/myid
echo 2 > /tmp/zookeeper/data/myid
echo 3 > /tmp/zookeeper/data/myid
注意事项:192.168.1.1对应的是第一台server,所以在192..168.1.1这台server中输入:echo 1 > /tmp/zookeeper/data/myid,其它同理;跟zoo.cfg配置文件必须相对应
⑥:启动zookeeper集群:分别在server1s,server2,server3上执行以下命令
cd /root/apps/zookeeper-3.4.14/bin/
./zkServer.sh start
如果使用CRT,可以在view ===> Command Window勾选,然后在Command Window中勾选Send Commands to All Sessions,执行一次命令即可;
⑥:查看zookeeper集群的状态
./zkServer.sh status //两个follower 一个leader即集群搭建成功;
三、关于zookeeper命令的介绍
①:连接zookeeper:./zkCli.sh -server 1962.168.1.1
②:使用--help查看帮助文档
③:查看所有得节点: ls /
④:创建节点:create /zkdemo helloworld (默认创建的是永久的节点,如果想要创建临时的节点,可以使用 -e )
注意:同级节点必须唯一性,即在同一节点下不可能出现两个同名的节点;临时节点下不能创建子节点;
⑤:查看节点信息: get /zkdemo
节点信息详解:
helloworld -- 节点的数据信息
cZxid -- cZxid指的是节点创建时的事务id. 不变.
ctime - 节点的创建时间. 不变.
mZxid -- 节点最近一次修改的事务id. 包括对本节点数据的修改. 本节点acl的修改,子节点的增加删除以及子节点acl的修改都不会影响到该值.
mtime -- 节点最近一次修改的时间.
pZxid -- 对子节点最近的一次修改, 包括子节点的增加删除, 但是子节点的数据修改和acl权限控制,不会影响这个信息.
cversion -- 子节点的版本号, 对子节点的增加和删除操作, 版本号都会加1.但是子节点的数据和acl修改不会影响这个信息.
ataVersion -- 数据版本.本节点的数据信息每被修改一次, 加1
aclVersion -- acl 版本号. acl指的是对改节点的访问权限, 每更改一次就加1
ephemeralOwner -- ephemeral节点所属的客户端的sessionId. 如果是persist 节点, 则为0
dataLength -- 数据长度
numChildren -- 子节点的数量
⑥:修改节点信息:set /zkdemo zookeeper
get /zkdemo
⑦:删除节点:
delete /zkdemo