集群分类
zookeeper集群分为:
- 单机模式:只需要一个节点
- 集群模式:
- 当整个集群中,有半数以上的节点成功启动,则认为ZK集群已经正常启动
- 当集群在启动之后,会选举一个Leader
- ZK集群一般搭建在奇数个节点上
搭建单机模式
安装zookeeper
解压zookeeper
tar zxvf zookeeper-3.4.12.tar.gz -C /opt/softwares/
创建软链接
ln -sf /opt/softwares/zookeeper-3.4.12 /opt/links/zookeeper
配置环境变量
vi ~/.bashrc
####__ZK_CONF__####
export ZOOKEEPER_HOME=/opt/softwares/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
更新配置文件
source ~/.bashrc
配置zookeeper
将$ZOOKEEPER_HOME/conf/zoo_sample.cfg重命名为zoo.cfg,编辑zoo.cfg文件
vi $ZOOKEEPER_HOME/conf/zoo.cfg
L12:dataDir=/tmp/zookeeper --> dataDir=/opt/links/zookeeper/data/zookeeper/data
#该目录需要提前创建,在搭建分布式ZK集群的时候,会向该目录中写入一些数据
L13:新增一行 --> dataLogDir=/opt/links/zookeeper/data/zookeeper/log
编辑$ZOOKEEPER_HOME/conf/log4j.properties
vi $ZOOKEEPER_HOME/conf/log4j.properties
L4和L7: . --> /opt/links/zookeeper/logs
编辑$ZOOKEEPER_HOME/bin/zkCli.sh
vi $ZOOKEEPER_HOME/bin/zkCli.sh
L38:增加一行--> ZOO_LOG_DIR=/opt/links/zookeeper/logs
或者在~/.bashrc中配置环境变量:
export ZOO_LOG_DIR=/opt/links/zookeeper/logs
编辑$ZOOKEEPER_HOME/bin/zkServer.sh
vi $ZOOKEEPER_HOME/bin/zkServer.sh
L124:增加一行 --> ZOO_LOG_DIR=/opt/links/zookeeper/logs
命令行操作
#启动zookeeper服务器端
zkServer.sh start
#查看zookeeper状态
zkServer.sh status
jps —— QuorumPeerMain
#使用zookeeper客户端连接服务器端
zkCli.sh -server 部署ZKS的IP[:2181]
搭建集群模式
安装与配置
安装、配置步骤与单机模式一致,不过每个节点都需要安装zookeeper
主节点编辑zoo.cfg时还需配置
#文件最后加入下面的行:
server.数字1=us8:2888:3888
server.数字2=us9:2888:3888
server.数字3=us10:2888:3888
#端口说明:2888是各个ZK节点之间的通信端口;3888是选举Leader的端口。
#数字说明:该数字是本机的ZK的标识该数字 需要写入各自主机的/opt/links/zookeeper/data/myid文件中
#即 数字1需要写入到“us8”这个主机的/opt/links/zookeeper/data/myid文件中
#数字2需要写入到“us9”这个主机的/opt/links/zookeeper/data/myid文件中
#数字3需要写入到“us10”这个主机的/opt/links/zookeeper/data/myid文件中
命令行操作
#在每个节点启动zookeeper
zkServer.sh start
#客户端连接集群
zkCli.sh -server us8:2181,us9:2181,us10:2181
数据模型
zookeeper的数据模型类似于Linux文件系统中的目录结构
节点的分类
ZK中存在的ZNODE,称之为节点
- 永久节点:在客户端和服务器端断开连接后,还存在的节点
- 临时节点:断开和客户端连接时就会被删除的节点(解决单点故障)
- 带序列号的节点:不管是临时节点还是持久节点,都可以带序列号,而且序列号是全局自增
节点的创建
#创建节点
create /test1 ""
#创建临时节点
create -e /test2 ""
#创建带序列号的节点
create -s /test1 ""
注意:
- 必须在节点名后跟上该节点的数据,如果没有数据,跟空字符串
- 在ZK中的节点,必须使用绝对路径,没有相对路径的概念
节点的删除
#只能删除没有子节点的节点
delete 节点路径
#能删除任何节点
rmr 节点路径
注意: 不要将“/zookeeper”节点删除
Comments NOTHING