zookeeper安装和基本操作

时间:2022-12-21 07:56:44

一,安装

1,解压zookeeper-3.4.7.tar.gz

2,cd /conf,复制 cp zoo_sample.cfg zoo.cfg

zookeeper安装和基本操作

二,启动

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