Zookeeper实践

What?

  • 保证分布式数据一致性
    • 配置维护
    • 域名服务
    • 分布式同步
    • 组服务
    • 分布式锁
  • paxos 一致性协议
    • 拜占庭将军问题
      zab zookeeper atom broadcast
  • 奇数个可以防止脑裂
    dubbo

    角色

    • leader
    • follower
    • observer 提升吞吐量,不参与投票

znode节点

  • 短暂的
  • 持久的
  • 短暂有序
  • 持久有序

观察

Where

http://zookeeper.apache.org/

Why?

  • 特点
    • 最终一致性
    • 可靠性
    • 实时性
    • 独立性
    • 原子性
    • 顺序性

How?

  1. 准备3台虚拟机

    • 在每台虚拟机上都添加hosts配置vi /etc/hosts
  2. 下载并配置http://www.apache.org/dyn/closer.cgi/zookeeper/

    • cd /opt/soft
    • wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
    • tar zxvf zookeeper-3.4.8.tar.gz
    • cd zookeeper-3.4.8
    • mkdir data
    • mkdir dataLog
    • vi data/myid 输入1 并保存退出
    • cp conf/zoo_sample.cfg conf/zoo.cfg
    • vi conf/zoo.cfg

      1
      2
      3
      4
      5
      6
      7
      dataDir=/opt/soft/zookeeper-3.4.8/data
      dataLogDir=/opt/soft/zookeeper-3.4.8/dataLog
      initLimit=5
      syncLimit=2
      server.1=sj-node1:2888:3888
      server.2=sj-node2:2888:3888
      server.3=sj-node3:2888:3888

    单台配置完毕

  3. 将配置好的拷贝到其它两天虚拟机

    1. scp -r zookeeper-3.4.8 root@sj-nod2:/opt/soft
    2. 登录第二台虚拟机,记得hosts文件已配置好
      1. cd /opt/soft/zookeeper-3.4.8
      2. vi data/myid 删除1 输入2 保存退出
  4. 启动zookeeper,在3台虚拟机上都输入
    • /opt/soft/zookeeper-3.4.8/bin/zkServer.sh start
  5. 查看集群状态

    • /opt/soft/zookeeper-3.4.8/bin/zkServer.sh status
    • 主节点
    • 从节点
  6. 设置观察节点

    • 观察节点
  7. 客户端访问

    • /opt/soft/zookeeper-3.4.8/bin/zkCli.sh
    • 列出所有1级节点
      • ls /
    • 创建节点
      • create /zktest testdata
    • 查询节点数据
      • get /zktest
    • 设置节点数据
      • set /zktest testset
    • 删除节点数据
      • delete /zktest