zoukankan      html  css  js  c++  java
  • Zookeeper的使用场景和集群配置

    1. Zookeeper的介绍
    2. ZK在分布式系统的应用
    3. Zookeeper搭建
    4. 集群角色介绍
    5. ZK的常用命令

    一、Zookeeper的介绍

    官方:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    二、ZK在分布式系统的应用

    1. 分布式配置中心
    2. 分布式job
    3. 服务注册与发现
    4. 存储数据

    三、Zookeeper搭建

    1)单机模式

    1. 官网下载:zookeeper官网
    2. 解压tar zxvf zookeeper-3.4.11.tar.gz
    3. 进入conf目录下:cp zoo_sample.cfg zoo.cfg
    4. 启动:进入bin目录下:sh zkServer.sh start
    5. 验证:在bin目录下:sh zkServer.sh status 或者使用jps -vm查看
    6. 连接:在bin目录下:sh zkCli.sh

    2)集群模式(机器有限,使用伪分布式)

    1、描述

    伪分布式集群就是在一台机器部署多个zk应用,部署之前服务器需要有jdk环境。使用 java -version可以显示相关java信息才可以进行zookeeper搭建。

    2、步骤

    1. 官网下载:zookeeper官网

    2. 解压tar zxvf zookeeper-3.4.11.tar.gz

    3. 进入conf目录下:

      cp zoo-sample.cfg zoo1.cfg
      cp zoo-sample.cfg zoo2.cfg
      cp zoo-sample.cfg zoo3.cfg 
      
    4. 分别对zoo1.cfg、zoo2.cfg、zoo3.cfg文件进行编辑:

      #不同的地方,下面分别为d_1、d_2、d_3
      dataDir=/apps/servers/data/d_1
      #同上
      dataLogDir=/apps/servers/logs/logs_1
      #不同zoo.cfg修改自己的属性和端口号,为分布式端口号需要不一样
      #分别是2181、2182、2183
      clientPort=2181
      #每个配置文件都需要配置如下三条,互相告知集群里有谁
      #第一个端口号用于集群通讯,第二个端口号用于集群选举
      server.1=192.168.31.132:2187:2887 
      server.2=192.168.31.132:2188:2888
      server.3=192.168.31.132:2189:2889
      
    5. 分别创建data目录和日志目录:

      mkdir /apps/servers/data/d_1
      mkdir /apps/servers/data/d_2
      mkdir /apps/servers/data/d_3
      
      mkdir /apps/servers/logs/logs_1
      mkdir /apps/servers/logs/logs_2
      mkdir /apps/servers/logs/logs_3
      
      echo "1" > /apps/servers/data/d_1/myid
      echo "2" >/apps/servers/data/d_2/myid
      echo "3" >/apps/servers/data/d_3/myid
      
    6. 进入bin目录下输入命令分别进行启动:

      zkServer.sh start ../conf/zoo1.cfg
      zkServer.sh start ../conf/zoo2.cfg
      zkServer.sh start ../conf/zoo3.cfg
      
    7. 通过命令检测是否成功:注意防火墙和配置是否成功,这个是部署成功的关键

       #进入bin目录下:
    sh zkCli.sh -server 192.168.31.132:2181, 192.168.31.132:2182, 192.168.31.132:2183
    

    结果如下:

    四、集群角色介绍

    1. Leader:

      Leader作为整个ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求。它会将每个状态更新请求进行排序和编号,保证整个集群内部消息处理的FIFO,写操作都走leader,zk里面leader只有一个。

    2. Follower:

      Follower的逻辑就比较简单。除了响应本服务器上的读请求外,follower还要处理leader的提议,并在leader提交该提议时在本地也进行提交。另外需要注意的是,leader和follower构成ZooKeeper集群的法定人数,也就是说,只有他们才参与新leader的选举、响应leader的提议。帮助leader处理读请求,投票权。

    3. Observer:

      如果ZooKeeper集群的读取负载很高,或者客户端多到跨机房,可以设置一些observer服务器,以提高读取的吞吐量。Observer和Follower比较相似,只有一些小区别:首先observer不属于法定人数,即不参加选举也不响应提议;其次是observer不需要将事务持久化到磁盘,一旦observer被重启,需要从leader重新同步整个名字空间。没有投票权利,可以处理读请求。

    五、ZK的常用命令

  • 相关阅读:
    html5和css3的新特性
    实现全选按钮的js代码
    window.location对象获取浏览器地址栏的地址信息
    珍爱网前端笔试题之九宫格的实现
    c# array arraylist list
    解决visual studio不能发现单元测试、无法运行单元测试的方法
    Linux 学习笔记
    C++语言学习
    C语言学习
    日志打印,设置开关类【编程技巧】
  • 原文地址:https://www.cnblogs.com/jinchengll/p/12316468.html
Copyright © 2011-2022 走看看