美文网首页
Zookeeper之集群安装

Zookeeper之集群安装

作者: 阿坤的博客 | 来源:发表于2018-03-01 21:44 被阅读24次

    Zookeeper 是一个分布式协调服务的开源框架。主要用来解决分布式集群中
    应用系统的一致性问题。

    主要内容:

    • 1.ZooKeeper 概述
    • 2.ZooKeeper 集群角色
    • 3.安装部署
    • 4.shell
    • 5.一键脚本

    相关文章:
    1.Zookeeper之集群安装
    2.Zookeeper之数据订阅发布

    1.ZooKeeper 概述

    ZooKeeper 本质上是一个分布式的小文件存储系统。提供基于类似于文件系
    统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维
    护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达
    到基于数据的集群管理。诸如:统一命名服务、分布式配置管理、分布式消息队
    列、分布式锁、分布式协调等功能

    2.ZooKeeper 集群角色

    zookeeper集群角色

    Leader:
    Zookeeper 集群工作的核心,主要工作如下:

    • 事物请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;
    • 集群内部各个服务器的调度者。
    • 对于 create,setData,delete 等有写操作的请求,则需要统一转发给leader 处理,leader 需要决定编号、执行操作,这个过程称为一个事务。

    Follower:

    • 处理客户端非事物(读操作)请求,转发事物请求给 Leader;
    • 参与集群 Leader 选举投票

    3.安装部署

    集群规划如下:

    用户 主机名 ip
    hadoop hadoop1 192.168.2.111
    hadoop hadoop2 192.168.2.112
    hadoop hadoop3 192.168.2.113

    3.1.下载、解压

    下载地址:传送门

    tar -zxvf zookeeper-3.4.8.tar.gz
    

    3.2.修改环境变量(注意:3台主机都需要修改并刷新)

    sudo vi /etc/profile
    export ZOOKEEPER_HOME=/opt/soft/zookeeper-3.4.8
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    source /etc/profile
    

    3.3.修改Zookeeper配置文件

    cd zookeeper-3.4.8/conf
    cp zoo_sample.cfg zoo.cfg
    vi zoo.cfg
    

    添加如下内容:

    dataDir=/opt/soft/zookeeper-3.4.8/zkdata
    server.1=hadoop1:2888:3888     ## (心跳端口、选举端口)
    server.2=hadoop2:2888:3888
    server.3=hadoop3:2888:3888
    

    在zookeeper-3.4.8下创建zkdata文件夹并创建myid文件

    mkdir zkdata
    cd zkdata
    echo 1 > myid
    

    3.4.分发到其它主机(hadoop2、hadoop3)

    scp -r /opt/soft/zookeeper-3.4.8 hadoop@hadoop2:/opt/soft
    scp -r /opt/soft/zookeeper-3.4.8 hadoop@hadoop3:/opt/soft
    

    修改myid文件
    到hadoop2上:修改myid为:2
    到hadoop3上:修改myid为:3

    3.5.启动(3台主机都要启动)

    cd zookeeper-3.4.8
    bin/zkServer.sh start
    

    3.6.状态

    jps 查看进程

    bin/zkServer.sh status
    
    zookeeper运行状态

    如果启动不成功,可以观察zookeeper.out日志,查看错误信息进行排查

    3.7.其它配置文件说明

    配置文件中参数说明:

    • tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。

    • initLimit这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。

    • syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。

    • dataDir顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;

    • clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;

    • server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。

    4.shell

    # 连接
    zkCli.sh -server "hadoop1:2181"
    
    # 查看
    ls /
    
    # 创建
    create /test "123"
    
    # 查看节点
    get /test
    
    # 更新
    set /test "456"
    
    # 删除
    rmr /test
    

    5.一键脚本

    startzk.sh 一键启动脚本(设置zookeeper的环境变量)

    cat ./slave | while read line
    do
    {
     echo $line
     ssh $line "source /etc/profile;nohup zkServer.sh start >/dev/null 2>&1 &"
    }&
    wait
    done 
    

    stopzk.sh 一键停止脚本(设置zookeeper的环境变量)

    cat ./slave | while read line
    do
    {
     echo $line
     ssh $line "source /etc/profile;jps |grep QuorumPeerMain |cut -c 1-4 |xargs kill -s 9"
    }&
    wait
    done 
    

    slave文件

    hadoop1
    hadoop2
    hadoop3
    

    相关文章

      网友评论

          本文标题:Zookeeper之集群安装

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