下载安装包
https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
添加环境变量
/etc/profile
export ZOOKEEPER_HOME=/software/apache-zookeeper-3.6.3-bin/
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
修改配置文件名称
进入"$ZOOKEEPER_HOME/conf"修改zoo_sample.cfg为zoo.cfg:
mv zoo_sample.cfg zoo.cfg
单节点部署配置文件:zoo.cfg
新建数据存储目录:mkdir /tmp/zookeeper
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
在三台机器集群部署配置文件:zoo.cfg
新建数据存储目录:mkdir /tmp/zookeeper
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
server.1=IP1:2888:3888
server.2=IP2:2888:3888
server.3=IP3:2888:3888
在数据存储目录dataDir下添加myid文件,内容填写server.X的X值
依次启动三个节点:bin/zkServer.sh start
查看各个节点状态:bin/zkServer.sh status
启动、停止、节点状态查询
bin/zkServer.sh start
bin/zkServer.sh stop
bin/zkServer.sh status
Zookeeper命令
bin/zkCli.sh -server ip:port 进入命令行(客户端连接)
ls / 查看节点
get /hbase 获取节点值
rmr /hbase 删除节点
选leader过程
一、需要选leader的几种场景
1、第一次启动集群
2、重启集群或leader挂了
二、选择过程,先看Zxid,再看myid
1,选择经验最丰富的Zxid,
2,myid
*,过半通过的数据才是真数据,你见到的可用的Zxid
三、ZK选举过程:
1,3888造成两两通信!
2,只要任何人投票,都会触发那个准leader发起自己的投票
3,推选制:先比较zxid,如果zxid相同,再比较myid
四、第一次启动时
选择myid大的
五、第二次选择leader
选择zxid最大的,如果zxid相同,再比较myid
写数据过程
Zxid是数据修改的次数,仅会增加,leader内部存在队列,特性是先进先出。
写数据过程
1、客户端创建消息ooxx
2、follower把消息发送给leader
3、lead添加消息的修改次数标记Zxid并把消息放入队列中
4、以发送广播的形式通知follower写日志(第一阶段提交),follower写日志成功后会恢复ok,当leader收到过半的ok时,确认此消息可写入,再次通知follower写入数据(第二阶段提交),当达到过半回复ok时,给客户端回复写入成功
5、leader通知的其他follower继续写入数据,或者follower使用sync可选项同步leader的信息,达到最终一致性
注意点:
1、写入消息是两阶段提交
2、leader自己也是属于返回ok的节点
3、leader是使用广播的形式通知follower,是以最终一致性的形式来达到原子性的效果
zookeeper设置授权访问
https:
./zkCli.sh -server ip:2181
查看当前权限:getAcl /
结果显示这个说明未设置权限限制:world:anyone:cdrwa
设置仅指定IP可以访问:setAcl / ip:127.0.0.1:cdrwa,ip:ip1:cdrwa,ip:ip2:cdrwa
其中127.0.01标识本机,ip1和ip2根据实际需求进行灵活调整
cdrwa每个参数代表的意思:c:创建(Create)d:删除(Delete)r:读取(Read)w:写入(Write)a:访问(Access)
验证权限是否设置成功:getAcl /
重新还原设置所有人可访问:setAcl / world:anyone:cdrwa
如果不小心设置失误导致本机没有访问zk的权限,做如下操作:
1、在zoo.cfg文件中加上配置:skipACL=yes
2、重启zook后,再使用setAcl设置对应的权限
3、确认权限设置好之后,注释配置zoo.cfg配置文件中的skipACL=yes
4、重启zook
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)