Zookeeper集群搭建及完整视频

 

Zookeeper概念简介:

                                  

 

百度网盘:https://pan.baidu.com/s/1v012r4sJ4x8qoVgA_GJeIA

   提取码:lrog

 

Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务

 

A、zookeeper是为别的分布式程序服务的

 

B、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)

 

C、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务……

 

D、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:

 

1管理(存储,读取)用户程序提交的数据(保管数据);

2并为用户程序提供数据节点监听服务 (提供监听);

 

Zookeeper集群的角色:Leader 和 follower  

只要集群中有半数以上节点存活,集群就能提供服务,

zookeeper适合装在奇数台机器上!!!

zookeeper的选举投票机制

现在我们有三台机器组成zookeeper集群:server01,server02,server03,分别对应文件myid=1,myid=2,myid=3

假设server01先启动,他会通过广播协议去看集群中有没有别的机器存在,然后他发现只有他自己,但是配置文件里面配置了三台。

那么这个集群中要有半数(1.5台)以上,也就是至少两台,集群才开始工作。所以server01就等,在等的时候开始投票,投给集群中所有人,但是现在只有他自己,就给自己投一票。

现在启动server02,server02启动后发现没有主leader,就开始重新投票。

这时候就不一样了,server01发现有两台机器,投票有一个规则投给id大的,他就投给了server02。server02也按这个规则投给了自己。谁票多谁就是leader,现在server02就是leader。

等到第三台启动的时候,他发现已经有leader了,也不管自己的id大不大了,就认server02为老大。

当客户端去请求server01(follower)修改数据时,server01就去把请求转给leader。leader再通知所有的机器去修改数据

 

 

zookeeper集群搭建

 

1 提前搭建好Linux集群,我的集群里有server01,server02,server03

 都配好jdk

 

2 上传Zookeeper,并解压

 

3 解压后进入Zookeeper,看到conf和bin目录

 

4 cd到conf ,cp zoo_sample.cfg zoo.cfg

 把zoo_sample复制一份并改名字未zoo.cfg

 

 

5 vi到zoo.cfg,配置如下

 dataDir 为Zookeeper的工作目录

 

 

6 cd到dataDir, echo 1 > myid 

新建文件myid,server01保存1,server02保存2,server03保存3

 

 

7 然后再cd到zookeeper目录,执行bin/zkServer.sh start

 

 

8 启动成功,再看他的状态:bin/zkServer.sh status

 发现报错,因为是第一台启动,他要等其他zookeeper启动(关注:java进阶)

 

 

9 开启第二台,发现状态也不对

 

 

10 应该把三台防火墙都关闭 service iptables stop

 

 

11 关闭防火墙后,重启第一台,因为是第一台启动,他要等其他zookeeper启动

 

 

12 启动server02的zookeeper,可以看到server02为follower 

 

 

 

13 再查看server01状态,发现为leader

 

 

 

14 启动servr03,查看状态为follower

 

 

 

zookeeper集群搭建成功!!

 

          欢迎关注我的订阅号