zookeeper3.4.6分布式集群安装部署记录

  zookeeper的主要功能是提供协调分布式应用的基本服务,实现分布式同步,命名服务以及集群维护等功能,这里总结一下zookeeper分布式集群搭建,特点是一个leader,多个follower。zookeeper的一个作用是保持kafka集群的状态信息。

  ZooKeeper集群是一个独立的分布式协调服务集群,“独立”的含义就是说,如果想使用ZooKeeper实现分布式应用的协调与管理,简化协调与管理,任何分布式应用都可以使用,这就要归功于Zookeeper的数据模型(Data Model)和层次命名空间(Hierarchical Namespace)结构,为了选举成功,要保证leader和follower的总数为奇数。好了废话不多说接下来进入正题。

  在三台虚拟机上安装zookeeper,ip地址是192.168.70.100~102,首先去官网下载指定版本的压缩包,上传到Linux后通过tar -zxvf解压后进入conf目录,此时没有zoo.cfg,通过cp命令将zoo_sample.cfg改名为zoo.cfg,见下图

  zookeeper3.4.6分布式集群安装部署记录_第1张图片

  修改zoo.cfg配置文件,修改内容根据自己的机器修改成对应的ip地址,修改内容见下图

  zookeeper3.4.6分布式集群安装部署记录_第2张图片

  
  简单解释下上面用到的几个参数,
  tickTime为Zookeeper的时间单元。Zookeeper中所有时间都是以这个时间单元的整数倍去配置的。例如,session的最小超时时间是2*tickTime。(单位:毫秒)
  initLimit为Observer和Follower启动时,从Leader同步最新数据时,Leader允许initLimit * tickTime的时间内完成。如果同步的数据量很大,可以相应的把这个值设置的大一些。
  syncLimit为表示Follower和Observer与Leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间
  dataDir为用于存放内存数据快照的文件夹,同时用于集群的myid文件也存在这个文件夹里
  dataLogDir为事务日志写入该配置指定的目录,而不是“ dataDir ”所指定的目录。这将允许使用一个专用的日志设备并且帮助我们避免日志和快照之间的竞争
  clientPort为客户端连接服务器所监听的端口号,默认值是2181
  最后的三行配置是server.服务器号=ip地址:2888:3888,其中2888是zookeeper服务之间通信的端口号,3888是zookeeper与其他应用程序通信的端口,ip地址是安装zookeeper的机器的ip地址,这个服务器号用来表示是第几号服务器

  这里三台机器这个zoo.cfg配置文件都这么配置。之后在dataDir目录下创建myid文件,在三台机器上分别输入1,2,3,参照下图,这里1,2,3表示这是第几个zookeeper实例所在的服务器

  zookeeper3.4.6分布式集群安装部署记录_第3张图片

  接下来分别在三台机器上配置zookeeper的环境变量,见下图,配置好后通过source /etc/profile保存

  这里写图片描述

  之后分别在三台机器上分别启动zkServer.sh start来启动zookeeper服务器,启动效果见下图
  这里写图片描述

  通过jps命令,出现进程quorumpeermain,再通过zkServer.sh status来查看zookeeper节点的角色,出现两个follower一个leader表明OK

  这里写图片描述

  这里写图片描述

  之后通过zookeeper客户端脚本启动zookeeper客户端连接zookeeper服务器集群,整个zookeeper服务集群相当于一个整体,连接其中任何一个即可,相当于连接到整个zookeeper服务器集群。通过zkCli.sh -server ip地址:2181这种形式连接,见下图 ,出现welcome to Zookeeper,表明客户端成功连接到服务器
  zookeeper3.4.6分布式集群安装部署记录_第4张图片

  最后创建一个zNode来测试下,在连接到服务器后通过create测试,aaa是节点名称,bbb是数据,看下图

  zookeeper3.4.6分布式集群安装部署记录_第5张图片  

  以上就是zookeeper分布式集群的安装方法,另外再补充一句,在zookeeper集群的任何一台机器执行上面的create创建语句后,在任何一台zookeeper节点上都可以通过get命令获取到对应的数据,因为整个zookeeper集群是一个统一整体。那么这篇就这样
  

你可能感兴趣的:(zookeeper集群)