Zookeeper是什么
zookeeper是一个分布式服务框架,主要用于解决数据管理问题,例如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
zookeeper=文件系统+监听通知机制。
文件系统
Zookeeper维护一个类似文件系统的数据结构。每个子目录都例如NameService,都被称为znode(目录节点)、和文件系统一样,可以自由的增加、删除节点znode,在一个znode下增加、删除子znode,唯一不同的在于znode是可以存储数据的。
文件系统有如下几种类型:
-
PERSISTENT-持久化目录节点:客户端与zookeeper断开连接后,该节点依旧存在
-
PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点:客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
-
EPHEMERAL-临时目录节点:客户端与Zookeeper断开连接后,该节点被删除
-
EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点:客户端与Zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
监听通知机制
客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变,被删除,子目录节点增加删除)时,Zookeeper会通知客户端。
Zookeeper单机版安装(linux)
进入指定目录,这里新建了一个`zookeeper`为文件夹,解压文件
tar -zxvf zookeeper-3.4.10.tar.gz,重命名文件夹名称为:mv apache-zookeeper-3.5.9 zookeeper_3.5.9
进入目录下的conf目录,修改默认的配置文件,将默认的zoo-simple.cfg改名为zoo.cfg
mv zoo-simple.cfg zoo.cfg
在zoo.cfg文件中修改zookeeper数据存放位置,这里在/zookeeper/data/zookeeper
dataDir=/var/data/zookeeper
添加日志文件目录信息
dataLogDir=/var/data/zookeeper
在文件最后的位置添加节点的信息 (配置集群才需要)
node-131:代表zookeeper的主机名
12888端口:代表访问Zookeeper的端口
13888端口:代表重新选举leader的端口
server.1=node-131:12888:13888
server.2=node-132:12888:13888
server.3=node-133:12888:13888
配置环境变量
# export ZOOKEEPER_INSTALL=/home/cpgh/zookeeper/zookeeper_3.5.9/
# export PATH=$PATH:$ZOOKEEPER_INSTALL/bin
启动zookeeper,进入bin目录,并启动zookeeper
启动zookeeper:./zkServer.sh start
后台启动命令:nohup ./zkServer.sh start >> /logs/zookeeper.file 2>&1 &
还要启动zookeeper的客户端:./zkCli.sh
如果是连接多个不同的主机节点,可以使用如下命令:
./zkCli.sh -server 192.168.180.132:2888