美文网首页菜鸟要飞
Zookeeper集群安装

Zookeeper集群安装

作者: 万总有点菜 | 来源:发表于2018-07-05 08:56 被阅读1次

    简介

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

    ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

    ZooKeeper包含一个简单的原语集,提供Java和C的接口。

    ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。

    准备

    在三台服务器均做如下操作。

    192.168.1.201    master
    192.168.1.202    slave1
    192.168.1.203    slave2
    

    配置Zookeeper环境变量

    /etc/profile添加如下信息

    #Set ZOOKEEPER_HOME ENVIRONMENT
    export ZOOKEEPER_HOME=/home/zookeeper-3.4.12
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    

    创建配置文件

    复制 /zookeeper-3.4.12/conf/zoo_sample.cfg 到 zoo.cfg 以下为配置文件的参数设置:

    # The number of milliseconds of each tick
    tickTime=2000
    # The number of ticks that the initial 
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just 
    # example sakes.
    #创建一个data目录并设置dataDir
    dataDir=/home/zookeeper-3.4.12/data
    # the port at which the clients will connect
    clientPort=2181
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    server.1=master:2888:3888
    server.2=slave1:2888:3888
    server.3=slave2:2888:3888
    

    常见参数说明:

    dataLogdDir=/path1  # 指定事务日志的存储路径,可以和dataDir在不同设备,这意味着可以使用一个日志的专用磁盘,避免日志IO和快照竞争。
     
    dataDir=/path2      # 运行数据的存放路径
     
    tickTime=2000       # 这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime 
     
    maxClientCnxns=0    # 最大的并发连接数限制,设置为0或者不设置该参数,表示不进行连接数的限制。
     
    minSessionTimeout   # 最小的会话超时时间,默认值 minSession=2*tickTime
     
    maxSessionTimeout   # 最大的会话超时时间,默认值 maxSession=20*tickTime
     
    initLimit=10        # 此配置表示,允许follower(相对于Leaderer言的“客户端”)连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
     
    syncLimit=5         # 此配置项表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
     
    # 集群模式最关键的配置参数
     
    server.11=192.168.1.21:2888:3888
     
    # server.myid=ip:leader_port:inner_port
    # myid 为服务器编号,用于标识服务器,这个值必须和dataDir目录下myid文件中的值保证一致
    # ip 为当前服务器IP,
    # leader_port  Leader的端口
    # inner_port  zk服务器之间内部通信端口
     
    # 同一个集群内的服务器,需要把该集群内的服务器列表信息都写在配置文件中。
    

    创建创建myid

    mkdir -p /home/zookeeper-3.4.12/data
    cd /tmp/zookeeper/data
    touch myid
    echo "1" > myid
    

    注:server.x
    server.1=master:2888:3888
    server.2=slave1:2888:3888
    server.3=slave2:2888:3888
    myid里面的值对应x的值。

    启动

    在每台服务器的Zookeeper目录下,运行 (这里的启动顺序为 master > slave1 > slave2 )
    bin/zkServer.sh start
    可以使用命令查看启动状态
    bin/zkServer.sh status

    问题

    如果启动完成,查看状态,遇到该问题,可以关闭防火墙,再查看状态
    /etc/init.d/iptables stop

    Zookeeper的四字命令

    客户端可以通过nc或telnet连接ZooKeeper Server提交指令

    使用nc方式进行测试
    # 检查服务器状态是否正常
    echo ruok | nc localhost 2181
    imok
    
    # 输出服务器配置信息
    echo conf | nc localhost 2181
    clientPort=2181
    dataDir=/home/zookeeper-3.4.12/data/version-2
    dataLogDir=/home/zookeeper-3.4.12/data/version-2
    tickTime=2000
    maxClientCnxns=60
    minSessionTimeout=4000
    maxSessionTimeout=40000
    serverId=1
    initLimit=10
    syncLimit=5
    electionAlg=3
    electionPort=3888
    quorumPort=2888
    peerType=0
     
    # 输出服务器状态信息
    echo stat | nc localhost 2181
    
    Zookeeper version: 3.4.12-e5259e437540f349646870ea94dc2658c4e44b3b, built on 03/27/2018 03:55 GMT
    Clients:
     /0:0:0:0:0:0:0:1:45688[0](queued=0,recved=1,sent=0)
    
    Latency min/avg/max: 0/0/0
    Received: 6
    Sent: 5
    Connections: 1
    Outstanding: 0
    Zxid: 0x0
    Mode: follower
    Node count: 4
    

    Zookeeper Client 简单操作

    9个基本操作指令:

    连接 ZooKeeper 服务器

    bin/zkCli.sh -server localhost:2181

    查看根下有哪些节点

    ls /

    创建节点

    在根下创建一个 "test" 节点,并设置数据为 "hello zookeeper"

    create /test "hell zookeeper"

    查看节点

    通过 get /test命令查看数据

    修改节点

    发现"hello zookeeper"打错成了"hell zookeeper",通过set /test "hello zookeeper"进行修改;

    删除节点

    delete /test

    相关文章

      网友评论

        本文标题:Zookeeper集群安装

        本文链接:https://www.haomeiwen.com/subject/jkpeuftx.html