1、zookeeper入门

一、什么是Zookeeper

Zookeeper是Google的Chubby一个开源的实现,是一个开源的,为分布式提供协调服务的Apache项目;

它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等;

Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,
一旦这些数据的状态发生变化,Zookeeper就将负责通知已经存在Zookeeper上注册的那些观察者做出相应的反应;

Zookeeper通常等于是文件系统加通知机制;

image

二、为什么使用Zookeeper

» 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)

» 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制

» 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器

» ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用
    • Keepalived监控节点不好管理
    • Keepalive 采用优先级监控
        • 没有协同工作
        • 功能单一
    • Keepalive可扩展性差

三、Zookeeper优点

image

四、Zookeeper的安装和配置

以三节点为例,先配置一台,然后再分发:

1、准备、解压安装包

tar zxf zookeeper-3.4.5.tar.gz -C /usr/local/
mv /usr/local/zookeeper-3.4.5/ /usr/local/zookeeper

2、创建zk data目录

mkdir /usr/local/zookeeper/data

3、编辑配置文件

mv zoo_sample.cfg zoo.cfg

[root@spark1 conf]# vim zoo.cfg 
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/usr/local/zookeeper/data
clientPort=2181
server.0=spark1:2888:3888    
server.1=spark2:2888:3888
server.2=spark3:2888:3888


##参数解释
• tickTime:发送心跳的间隔时间,单位:毫秒

• dataDir:zookeeper保存数据的目录。

• clientPort:客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

• initLimit: 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,
而是 Zookeeper 服务器集群中连接到 Leader 的Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经
超过 5 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。
总的时间长度就是 5*2000=10 秒

• syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,
最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒

• server.A=B:C:D:其 中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip地址;
C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,
需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号

4、创建myid文件,设置zk节点标识

在主机1数据目录中,创建一个myid文件,并写入一个数字:0

[root@spark1 data]# vim myid
0

5、分发

##用scp命令,将zookeeper安装目录,传输到另外两台主机上;

[root@spark1 local]# scp -r /usr/local/zookeeper spark2:/usr/local/

[root@spark1 local]# scp -r /usr/local/zookeeper spark3:/usr/local/


分发完后,唯一的区别是spark2和spark3的标识号分别设置为1和2         #vim /usr/local/zookeeper/data/myid

6、启动

1、分别在三台机器上执行:zkServer.sh start

2、检查ZooKeeper状态:zkServer.sh status
3、jps   

7、client连接

启动客户端连接到服务器:
    $>zkCli.sh -server hostname:2181        //进入zk命令行
    $zk]help                                //查看帮助
    $zk]quit                                //退出
    $zk]create /a tom                       //创建一个数据节点,并赋值数据
    $zk]get /a                              //查看数据
    $zk]ls /                                //列出节点
    $zk]set /a tom                          //设置数据
    $zk]delete /a                           //删除一个节点
    $zk]rmr /a                              //递归删除所有节点。
原文地址:https://www.cnblogs.com/weiyiming007/p/11389645.html