zookeeper01

六月ゝ 毕业季﹏ 提交于 2019-11-29 00:25:28

zookeeper

中间件,提供协调服务
作用分布式系统

 

特性
数据一致性,数据按照顺序分批入库
原子性:事务要么成功要么失败,不会局部化
单一视图:客户端连接集群中的任一zk节点,数据是一致的。
可靠性 每次对zk的操作状态保存在服务端
实时性 客户端可以读取zk服务端的最新数据

 

jdk 与 zookeeper 的安装

cd jdk8
pwd
/usr/jdk8

 

vi /etc/profile

1 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
2 export JAVA_HOME=/usr/jdk8
3 export ZOOKEEPER_HOME=/usr/local/zookeeper
4 export CLASSPATH=.:JAVA_HOME%lib/dt.jar:%JAVA_HOME%/lib/tools.jar
5 #export PATH=$PATH:$JAVA_HOME/bin
6 export PATH=$PATH:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin


刷新配置文件
source /etc/profile

 

目录结构

bin 主要运行命令
conf 存放配置文件
contrib 附加一些功能
dist-maven mvn编译后的目录
docs 文档
lib jar包
recipes 案例demo代码
src 源码

 

配置文件


cd conf
cp zoo_sample.cfg zoo.cfg

 1 tickTime 用于计算时间单元,比如session超时
 2 initLimit 用于集群,允许从节点连接并同步到master节点的初始化连接时间
 3              以tickTime的倍数来表示
 4 syncLimit 用于集群,master 主节点与从节点之间发送消息,请求和应答时间长度(心跳检测)
 5 
 6 dataDir 必须配置
 7 dataLogDir 日志目录,如果不配置会和dataDir公用
 8 
 9 dataDir=/usr/local/zookeeper/dataDir
10 dataLogDir=/usr/local/zookeeper/dataLogDir
11 
12 clientPort 
13 连接服务器的端口,默认2181        

启动

cd bin
./zkServer.sh start

 

 

数据模型

 

是一个树形结构,类似tree.js组件

每个节点都称为znode ,它可以由子节点,也可以有数据

每个节点分为临时节点和永久节点,临时节点在客户端断开后消失

每个zk节点都有版本号

每当节点数据发生变化,该节点的版本号就会累加

删除/修改过时节点,版本号不匹配则会出错

每个zk节点数据不宜过大

节点可以设置acl,可以通过权限来限制用户的访问

 

作用

master 节点选举,主节点挂了以后,从节点会接受工作,保证节点唯一,即首脑模式,保证集群高可用
统一配置文件管理,只需部署一台服务器,则可以把相同的配置文件同步更新到其他所有的服务器
发布于订阅 ,发布者把数据存在znode上,订阅者会读取这个数据
提供了分布式锁
集群管理,集群保证数据的强一致性

 

 

常用命令

 1 ls
 2 ls 2
 3 stat
 4 get 取出当前节点数据
 5 
 6 create  创建节点
 7 create /hello hello-zookeeper
 8 create -e  创建临时节点
 9 create -e /hello/tmp  hello-zookeeper
10 create -s /hello/sec seq   创建顺序节点
11 
12 set path data [version]
13 set /hello hello-zookeeper-data
14 
15 delete path [version]

 

watcher机制

针对每个节点的操作,都会有一个监督者 ,watcher

当监控的某个对象(znode)发生了变化,则会触发watcher事件

zk中的watcher是一次性的,触发后立即销毁

 

watcher事件类型

ls 为父节点设置watcher,创建,删除节点触发:NodeChildrenChange
ls 为父节点设置watcher ,修改节点不触发事件

 

watcher使用场景

统一资源配置

 

 

acl

 

权限字符串缩写
crdwa

create 创建子节点
read 获取节点/子节点
delete 删除子节点
write 设置节点数据
admin 设置权限

 

 

设置密码

auth:user:pwd:cdrwa
digest:user:BASE64(SHA(pwd)):cdrwa
addauth digest user:pwd

addauth digest admin:admin  注册用户名
setAcl  /hello/abc auth:admin:admin:cdrwa

setAcl /hello/test digest:admin:xxxx:cdra 

 

四字命令

yum install nc

 1 echo [commond] | nc [ip] [port]
 2  
 3      
 4 [stat] 查看zk的状态信息,以及是否mode
 5 
 6 [ruck] 查看当前zkServer是否启动,返回 imok
 7 
 8 [dump] 列出未经处理的会话和临时节点
 9 
10 [conf] 查看服务器配置
11 
12 [cons] 展示连接到服务器的客户端信息
13 
14 [envi] 环境变量
15 
16 [mntr] 监控zk的健康信息
17 
18 [wchs] 展示watch的信息

  vi zoo.cfg
  41w.commands.whitelist=*

  wchc 和 wchp     session与watch及path与watch的信息

 

zookeeper集群搭建

 

关闭防火墙
systemctl disable firewalld.service

 

master 192.168.239.145
slave1 192.168.239.134
slave2 192.168.239.135

 

配置文件myid 1/2/3 对应 server.1/2/3

master
vi dataDir/myid 1

slave1
vi dataDir/myid 2

slave3
vi dataDir/myid 3

 

关于zoo.cfg的配置

 1 vi zoo.cfg
 2 
 3 tickTime=2000
 4 initLimit=10
 5 syncLimit=5
 6 dataDir=/usr/local/zookeeper/dataDir
 7 dataLogDir=/usr/local/zookeeper/dataLogDir
 8 clientPort=2181
 9 4lw.commands.whitelist=*
10 
11 server.1=192.168.239.145:2888:3888
12 server.2=192.168.239.134:2888:3888
13 server.3=192.168.239.135:2888:3888

 

启动集群

./zkServer.sh start

 

查看运行状态

./zkServer.sh status

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!