zookeeper的安装使用
zookeeper
1半数机制:半数以上的集群存活集群可用
2选举机制:没有指定master和slave是通过选举临时出来的
c/s 客户端/服务器
节点类型
持久型 c与s断开连接后,创建的节点不删除
1持久化目录节点 节点不删除
2持久化顺序编号目录节点 断开连接后给节点名称进行顺序编号
短暂型 c与s断开连接后,创建的节点自己删除
1临时目录节点 节点删除
2临时顺序编号节点 记录操作顺序
写数据流程
c向s发送写请求 server不是leader就会把请求转发给leader,leader将请求广播给各个server,各个server写成功后通知leader
当leader收到半数以上的server数据写成功了就认为写成功了,之后leader会告诉接收请求的节点成功了
接收请求的节点通知客户端数据写成功了至此认为写操作成功
zookeeper的工作机制
文件系统 通知机制
zookeeper存储和管理关心的数据,接受观察者注册一旦数据发生变化就通知zookeeper上注册的观察者
zookeeper一个领导者,多个跟随者组成的集群
集群上半数以上的集群存活zookeeper就能正常服务
每个server保存一份相同的数据副本,client无论连接到哪个server数据都是一致的
更新请求顺序进行,来自同一个client的请求按照发送顺序执行
一次数据更新,要么成功要么失败
实时性在一定时间范围可以读到最新数据
数据结构为树形结构因为是基于文件系统
每个节点znode默认存储1mb的数据,通过路径唯一标识
运用于统一命名服务,
统一配置管理,
统一集群管理,
服务器动态上下线,
软负载均衡:记录每台服务器的访问数,让访问数最少的服务器处理最新的客户端请求
安装
zookeeper的安装简单
这里是通过xshell进行操作的
单机模式
安装的zookeeper-3.4.10
解压到/opt/module,这是我自己存放的路径无特殊含义,对应自行修改
tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module
修改配置文件
cd /zookeeper-3.4.10/conf
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改dataDir=/opt/module/zookeeper-3.4.10/zKData将数据保存路径改为这个
tickTime=2000 心跳时间2s
initLimit=10 2X10 20s 初始化主节点与从节点通信的最大阻塞时间
syncLimit=5 2X5 10s 启动完成后主节点与从节点通信的最大阻塞时间
在/opt/module/zookeeper-3.4.10/下创建zkData
mkdir zkData
启动zookeeper服务器bin/zkServer.sh start
启动zookeeper客户端bin/zkCli.sh
退出quit
分布式安装zookeeper
在zkData中创建myid添加唯一标识文件
touch myid
添加唯一标识
vi myid
2
配置zoo.cfg
dataDir=/opt/module/zookeeper-3.4.10/zkData`
添加
####################cluster####################
server.2=centos72:2888:3888
server.3=centos73:2888:3888
server.4=centos74:2888:3888
server.唯一标识符=ip:leader follower通信端口:选举端口
分发给其他节点
xsync zookeeper-3.4.10
修改其他节点的myid
3、4
启动zookeeper服务器bin/zkServer.sh start
每节点都要启动
jps查看是否启动QuorumPeerMain进程
bin/zkServer.sh status 查看命令查看节点是leader还是fellower
启动zookeeper客户端bin/zkCli.sh
命令
ls / 查看目录
ls2 /查看目录详细信息
create /demo “wengjianxx” 创建节点需在后面添加节点内容
create /demo/shuju “wengjianxx” 创建多级目录需在后面添加节点内容
create /demo 查看目录下级
创建短暂的目录节点
create -e /pengli “chuxiangshi”
创建短暂的带序号的目录节点
create -e -s /pengli “chuxiangshi”
创建带序号的节点
create -s /pengli “chuxiangshi”
get /demo 查看节点内容
set /yaoyao “renxiangshou” 修改节点内容
get /yaoyao watch 监听节点 节点发生变化立即响应有效一次
ls /yaoyao watch
delete /yaoyao/zde 删除节点
rmr /yaoyao 递归删除节点