zookeeper在windows系统中的集群配置

什么是zookeeper?

1、Zookeeper 是 Google 的 Chubby一个开源的实现 ,是 Hadoop 的分布式协调服务
2、为分布式应用程序提供同步服务,配置维护和命名服务等

zookeeper能帮我们做什么?

1、Hadoop,使用Zookeeper的事件处理确保整个集群只 有一个NameNode,存储配置信息等.
2、HBase,使用Zookeeper的事件处理确保整个集群只有 一个HMaster,察觉HRegionServer联机和宕机,存储 访 问控制列表等
3、Java Dubbo 使用zookeeper作为分布式服务的注册发现中心,为每个服务器调用服务的程序实现解耦和异步

zookeeper的工作原理,

1.每个Server在内存中存储了一份数据;
2.Zookeeper启动时,将从实例中选举一个leader(Paxos 协议)
3.Leader负责处理数据更新等操作
4.一个更新操作成功,当且仅当大多数Server在内存中成功修改数据

zookeeper读写机制

1、Zookeeper是一个由多个server组成的集群
2、一个leader,多个follower
3、 每个server保存一份数据副本 » 全局数据一致
4、 分布式读写 » 更新请求转发,由leader实施
5、 更新请求按顺序进行,来自同一个client的更新请求按其发送顺序依次执行
6、 数据更新原子性,一次数据更新要么成功,要么失败
7、 全局唯一数据视图,client无论连接到哪个server,数据视图都是一致的
8、实时性,在一定事件范围内,client能读到最新数据

Zookeeper的安装和配置(集群模式) windows平台

下载zookeeper安装包解压于某盘
zookeeper集群只有超过半数节点OK集群才能正常工作,所以集群内节点数量最好为奇数,下面我们以创建3个节点为例

第一步:主机名称到IP地址映射配置(不做映射也可以直接写ip)

ZooKeeper集群中具有两种关键的角色:Leader和Follower。
集群中所有的结点作为一个整体对分布式应用提供服务,集群中每个结点之间都互相连接,所以,在配置的ZooKeeper集群的时候,
每一个结点的host到IP地址的映射都要配置上集群中其它结点的映射信息。
例如:
192.168.36.101 slave-01
192.168.36.102 slave-02
192.168.36.103 slave-03

第二步:修改ZooKeeper配置文件

解压出一个zookeeper程序,然后复制配置文件zoo.cfg三份在conf目录下,分别重命名为zoo1.cfg、zoo2.cfg、zoo3.cfg
在这里插入图片描述
分别修改为:

 #服务器之间或客户端与服务器之间维持心跳的时间间隔,2000ms发送一次
tickTime=2000
    #用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数,5就表示最长接受5*2000=10秒间隔
initLimit=10
    #Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
syncLimit=5
    #保存数据的目录
dataDir=G:\\zookeeper\\data\\1
    #保存日志的目录
dataLogDir=G:\\zookeeper\\log\\1
    #提供服务的接口也就是监听客户端连接的端口
clientPort=2181
    #1表示这是第几号服务器/127.0.0.1是服务器ip  /2887是集群中Leader交换信息的端口   /3887Leader挂了重新选举Leader的端口,每个节点都不一样,
    #意思就是当每个节点作为leader时所使用的端口,所以不一样
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
  #服务器之间或客户端与服务器之间维持心跳的时间间隔,2000ms发送一次
tickTime=2000
    #用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数,5就表示最长接受5*2000=10秒间隔
initLimit=10
    #Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
syncLimit=5
    #保存数据的目录
dataDir=G:\\zookeeper\\data\\2
    #保存日志的目录
dataLogDir=G:\\zookeeper\\log\\2
    #提供服务的接口也就是监听客户端连接的端口
clientPort=2182
    #1表示这是第几号服务器/127.0.0.1是服务器ip  /2887是集群中Leader交换信息的端口   /3887Leader挂了重新选举Leader的端口,每个节点都不一样,
    #意思就是当每个节点作为leader时所使用的端口,所以不一样
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
    #服务器之间或客户端与服务器之间维持心跳的时间间隔,2000ms发送一次
tickTime=2000
    #用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数,5就表示最长接受5*2000=10秒间隔
initLimit=10
    #Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
syncLimit=5
    #保存数据的目录
dataDir=G:\\zookeeper\\data\\3
    #保存日志的目录
dataLogDir=G:\\zookeeper\\log\\3
    #提供服务的接口也就是监听客户端连接的端口
clientPort=2183
    #1表示这是第几号服务器/127.0.0.1是服务器ip  /2887是集群中Leader交换信息的端口   /3887Leader挂了重新选举Leader的端口,每个节点都不一样,
    #意思就是当每个节点作为leader时所使用的端口,所以不一样
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889

第四步:

在我们配置的dataDir指定的目录下面,分别创建3个文件夹,命名为1、2、3,分别对应于conf/zoo.cfg文件中配置的server.X中的X,
例如:server.1就是需要创建一个名为1的文件夹,再在1文件夹中创建一个名为myid的文本,里面写一个1、依次创建2、3
在这里插入图片描述version-2不用管,自己生成的版本文件在这里插入图片描述

第五步:在G:\zookeeper\bin目录下复制三分zkServer.cmd,更名成zkServer1.cmd、zkServer2.cmd、zkServer3.cmd

分别在每个文件内set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain下添加
set ZOOCFG=G:\zookeeper\conf\zoo1.cfg 对应修改zoo1.cfg的名字即可
在这里插入图片描述

在这里插入图片描述

第六步:启动ZooKeeper集群

启动三个cmd窗口,最好是以管理员身份运行,我只利用的是cmder创建,以便观察
依次执行命令:
cd G:\zookeeper\bin
zkServer1.cmd | zkServer2.cmd | zkServer3.cmd
在这里插入图片描述

第七步:验证

由于前面的节点在启动时候会尝试去连接其他节点,
所以先启动的节点会有报错信息,这是正常的不用理会,等到leader选举出来了就可以正常工作了,所以先一次性全部启动

zookeeper客户端对节点的增删改查命令操作

具体命令参考https://www.cnblogs.com/sherrykid/p/5813148.html
客户端连接命令,创建三个cmd窗口分别执行
zkcli.cmd -server 127.0.0.1:2181
zkcli.cmd -server 127.0.0.1:2182
zkcli.cmd -server 127.0.0.1:2183
启动成功是这样子
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值