栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Zookeeper从单机到集群分布式

Zookeeper从单机到集群分布式

Zookeeper从单机到集群分布式
场景 安装及配置
  1. 解压

    tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz
    
  2. 重命名

    mv apache-zookeeper-3.6.0-bin zookeeper
    
  3. 在/opt/zookeeper/这个目录上创建zkData和zkLog目录

    mkdir zkData
    mkdir zkLog
    
  4. 进入/opt/zookeeper/conf这个路径,复制一份 zoo_sample.cfg 文件并命名为 zoo.cfg

    cd conf
    cp zoo_sample.cfg zoo.cfg
    
  5. 编辑zoo.cfg文件,修改dataDir路径:

    dataDir=/opt/zookeeper/zkData
    dataLogDir=/opt/zookeeper/zkLog
    
  6. zoo.cfg配置文件中的参数详解

    tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。
    
    initLimit =10:LF初始通信时限,集群中的Follower跟随者服务器与Leader领导者服务器之间,启动时能容忍的最多心跳数 10 * tickTime(10个心跳时间)如果领导和跟随者没有发出心跳通信,就视为失效的连接,领导和跟随者彻底断开。
    
    syncLimit =5:LF同步通信时限,集群启动后,Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime->10秒,Leader就认为Follwer已经死掉,会将Follwer从服务器列表中删除。
    
    dataDir:数据文件目录+数据持久化路径,主要用于保存Zookeeper中的数据。
    
    dataLogDir:日志文件目录。
    
    clientPort =2181:客户端连接端口,监听客户端连接的端口。
    
常用命令
  1. 启动Zookeeper

    ./zkServer.sh start
    
  2. 查看进程是否启动(QuorumPeerMain:是zookeeper集群的启动入口类,是用来加载配置启动QuorumPeer线程的)

    jps
    
  3. 查看状态

    ./zkServer.sh status
    
  4. 启动客户端

    ./zkCli.sh
    
  5. 退出客户端

     quit
    
  6. 查看根节点下的一级节点

    ls /
    
  7. 查看节点的详细数据

    老版本:ls2 /
    新版本:ls -s /
    
    • cZxid:创建节点的事务
      每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事务ID。
      事务ID是ZooKeeper中所有修改总的次序。
      每个修改都有唯一的zxid,如果zxid1小于zxid2,那么zxid1在zxid2之前发生。
    • ctime:被创建的毫秒数(从1970年开始)
    • mZxid:最后更新的事务zxid
    • mtime:最后修改的毫秒数(从1970年开始)
    • pZxid:最后更新的子节点zxid
    • cversion:创建版本号,子节点修改次数
    • dataVersion:数据变化版本号
    • aclVersion:权限版本号
    • ephemeralOwner:如果是临时节点,这个是znode拥有者的session id。如果不是临时节点
      则是0。
    • dataLength:数据长度
    • numChildren:子节点数
  8. 创建节点

    创建节点:create /xx
    创建节点并赋值:create /xx xxx
    创建多级节点:create /xx/xx
    创建短暂节点:create -e /xx
    创建排序节点:create -s /xx
    创建短暂并排序节点:create -e -s /xx
    
  9. 查看节点的值

    get /xx
    
  10. 修改节点的值

    set /xx xxx
    
  11. 删除节点

    删除节点:delete /xx
    递归删除存在子节点的节点:deleteall /xx
    
  12. 监听节点变化

    addwatch /xxx
    如果被监听的节点修改内容后则:WatchedEvent state:SyncConnected type:NodeDataChanged path:/xxx
    如果被监听的节点创建子节点后则:WatchedEvent state:SyncConnected type:NodeCreated path:/xxx/yyy
    
集群部署

​ 假设有三台服务器,集群部署Zookeeper(先搞定一台,再克隆两台)

  1. 在/zkData目录下创建myid文件

    vim myid
    1(编号,其余两台机器分别写2和3)
    
  2. 配置zoo.cfg文件

    vim zoo.cfg
    #######################cluster##########################
    server.1=192.168.126.134:2888:3888
    server.2=192.168.126.137:2888:3888
    server.3=192.168.126.131:2888:3888
    
    • 解读配置的内容 server.A=B:C:D
      • A:一个数字,表示第几号服务器
        集群模式下配置的/opt/zookeeper/zkData/myid文件里面的数据就是A的值
      • B:服务器的ip地址
      • C:与集群中Leader服务器交换信息的端口
      • D:选举时专用端口,万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选
        出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口
  3. 克隆其余两台服务器
    - 在虚拟机数据目录vms下,创建zk02
    - 将本台服务器数据目录下的.vmx文件和所有的.vmdk文件分别拷贝zk02下
    - 虚拟机->文件->打开 (选择zk02下的.vmx文件)
    - 开启此虚拟机,弹出对话框,选择“我已复制该虚拟机”
    - 进入系统后,修改linux中的ip,修改/opt/zookeeper/zkData/myid中的数值为2
    - 第三台服务器重复如上步骤

  4. 关闭每台机器的防火墙

临时关闭
systemctl stop firewalld.service
  1. 启动第一台并检查状态
./zkServer.sh start
./zkServer.sh status

得到结果:
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.

因为没有超过半数以上的服务器,所以集群失败 (防火墙没有关闭也会导致失败)
  1. 当启动第2台服务器时
查看第1台的状态:Mode: follower
查看第2台的状态:Mode: leader

关联Java 生产者消费者模型 分布式锁

安装

​ tar

​ 命名

​ zoo.cfg

配置

​ zoo.cfg

​ 端口

​ 指定Dir和Log

​ mkDir

​ pid 序号

​ mkLog

​ bin

​ ./zkServer.sh start

​ ./zkServer.sh status

​ ./zkServer.sh stop

​ ./zkCli.sh

​ jps

运行命令

​ ls /

​ ls /某某

​ ls /某某/某某某

​ create /某某

​ create -e /某某

​ create -? /某某

​ delete

​ deleteAll

​ get

​ set

​ exists

关联Java

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/389078.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号