Zookeeper

下载安装包
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                         //LF初始连接时,允许最大错误心跳次数,会失败
syncLimit=5                          //LF通信连接时,允许最大错误心跳次数,会剔除
dataDir=/tmp/zookeeper               //保存数据目录(默认是tmp,容易被定期删除)
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://blog.csdn.net/weixin_43966996/article/details/138577605

./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
posted @   rbcd  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示