一,安装
1,解压zookeeper-3.4.7.tar.gz
2,cd /conf,复制 cp zoo_sample.cfg zoo.cfg
二,启动
cd到zookeeper-3.4.7/bin下
./zkServer.sh start
启动成功后
Starting zookeeper ... STARTED
三,关闭
sh ./zkServer.sh stop
关闭成功后
Stopping zookeeper ... STOPPED
四,基本操作
进入zookeeper操作界面,在bin目录下
sh ./zkCli.sh
1,查看节点
ls
2,创建节点
a,create /park01 big1803
b,create /park02 ""
3,查看节点信息
get /park01
4,更新节点信息
set /park02 hellozk
5,删除空节点
delete /park02
注意park02下没有节点
6,递归删除节点
rmr /park01
注意park01下有节点和内容
7,创建临时节点
create -e /park01 zk1803
表示创建临时节点,退出zkCli后,并停止zookeeper,即 ./zkServer.sh stop,再 ./zkServer.sh start,ls查看时并不存在
8,创建顺序节点
create -s /park03 123
创建一个顺序节点,通过ls查看时,可见
[zk: localhost:2181(CONNECTED) 1] create -s /park03 hello
Created /park030000000004
普通创建如下:
[zk: localhost:2181(CONNECTED) 5] create /park04 111
Created /park04
9,创建临时顺序节点
[zk: localhost:2181(CONNECTED) 6] create -s -e /park05 hello
Created /park050000000007
[zk: localhost:2181(CONNECTED) 7]
五,zk的事务概念
针对事务操作:
1,创建节点create
2,更新节点set
注意:事务id是全局递增的
指令:
1,ls查看指定路径的节点信息
2,get 查看指定节点的数据信息
3,create 创建节点
4,set更新节点数据
5,delete 删除为空的节点
6,rmr 递归删除节点
六,单机与集群模式
通过如下命令可以查看zookeeper模式
sh zkServer.sh status
1,单机模式
Standalone
2,集群模式
Leader/follower/follwer......
集群安装
a,修改conf下zoo.cfg配置文件,习惯上把属性做如下设置
dataDir=/home/software/zookeeper-3.4.7/tmp
b,在zookeeper-3.4.7下创建文件夹tmp,并在tmp中创建文件myid,其内容为数字,例如有集群机器共计有三台,则myid内容分别为数字1,2,3
c,在zoo.cfg文件末尾加上集群设备信息
例如有三台机器,
server.1=176.129.8.8:2888:3888
server.2=176.129.8.9:2888:3888
server.3=176.129.8.12:2888:3888
server表示关键字,server的点后边的数字表示id,即对应myid中的数字。ip对应集群中机器ip,学后第一个端口表示原子广播端口,第二个表示选举端口
d,假设以上修改基于176.129.8.8,在/home/software/目录下,通过scp命令,把修改后相关配置后的zookeeper复制到176.129.8.9和176.129.8.12上去,命令如下:
scp -r zookeeper-3.4.7 176.129.8.9:/home/software/
scp -r zookeeper-3.4.7 176.129.8.12:/home/software/
e,在176.129.8.9和176.129.8.12机器上,zookeeper-3.4.7/tmp下,修改myid内容分别为2和3
f,按以下顺序启动zookeeper集群
176.129.8.8
176.129.8.9
176.129.8.12
启动命令见上文,通过命令sh zkServer.sh status,可查看到以上三ip对应的状态,分别为follower,leader,follower,即id过半选举原则,1和2中,2最大,故为leader。其他id启动顺序结果如下:
132 follower leader follower
213 leader follower follower
231 follower leader follower
321 leader follower follower
312 leader follower follower
即三台机器的情况下,id3当leader的概率为2/3,2当领导的概率为1/3,id1永远无法当领导。
zookeeper的选举流程:
阶段一:数据恢复阶段,每台 zk服务会找自己所最大事务id.。
阶段二:选举阶段,每台服务器会提交自身的选举协议,协议里包含的内容:
1,最大事务id;
2,选举id;
3,逻辑时钟值,作用是确保每台zk服务器在同一轮选举中;
4,当前服务节点的状态
其中状态分以下4种情况:
1,Looking 正在选举状态
2,Leader 领导者
3,Follower 追随者
4,Observer 观察者
选举机制:
1,先比较最大事务id,谁大谁当Leader,因为事务id越大,意味着拥有的数据越新
2,如果最大事务id比较不出来(初次启动没有事务id),就比较选举id,即myid中的数字。
3,选举机制最基本的要求:满足过半性(超过半数)比如3台,2就是过半;如果是5台,3就是过半
zk集群启动失败的常见原因:
1,服务器没有配置jdk
2,配置了jdk,/etc/profile但是忘记了source生效
3,配置文件的配置出现了问题,比如 server.3=176.129.8.8:2888:3888中ip地址写错,或者其中冒号为中文格式
4,myid文件名写错了
5,myid里的数字的当前服务器的选举id不对应
6,某台服务器的防火墙未关闭
排查启动错误的方式:查看bin目录下生成的zookeeper.out文件
注意:zookeeper运行需要jdk,确保环境中已安装java的jdk