• ZooKeeper基础:快速部署


    blog:https://www.cnblogs.com/Rohn/

    本文主要介绍ZooKeeper的快速部署安装,更多信息请参考ZooKeeper

    概述

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
    它的设计易于编程,它使用一个遵循文件系统中常见的目录树结构的数据模型。它在Java环境中运行,对Java和C都有绑定。

    ZooKeeper有三种安装模式:单机安装(standalone)、伪集群模式、集群模式:

    • standalone模式:只在一台机器上安装ZooKeeper,并只启动一个ZooKeeper实例。
    • 伪集群模式:在一台机器上开启多个ZooKeeper实例来模拟集群。通过加载不同配置文件,分配不同数据目录来实现这种模式。因为在同一机器上运行,所以机器宕机,整个ZooKeeper就挂了。基本上不会布置这样的ZooKeeper集群。
    • 集群模式:在至少3台机器上安装ZooKeeper构成集群,只要故障节点数量在一定范围内就能保证ZooKeeper服务的可用性。

    部署前置条件

    ZooKeeper运行在java环境下,所以需要先安装jdk,且要求版本高于1.6。

    安装过程:略

    单机安装

    获取安装包

    cd /usr/local
    mkdir -p zookeeper/data
    cd zookeeper
    # 选择最新稳定版本
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
    tar zxvf zookeeper-3.4.14.tar.gz
    

    创建环境变量

    echo 'ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.14' >/etc/profile.d/zk.sh
    echo 'PATH=$ZOOKEEPER_HOME/bin:$PATH' >> /etc/profile.d/zk.sh
    chmod +x /etc/profile.d/zk.sh
    source /etc/profile.d/zk.sh
    

    相关目录文件介绍

    bin目录

    [root@zk-1 zookeeper-3.4.14]# ls bin/
    README.txt    zkCli.cmd  zkEnv.cmd  zkServer.cmd  zkTxnLogToolkit.cmd
    zkCleanup.sh  zkCli.sh   zkEnv.sh   zkServer.sh   zkTxnLogToolkit.sh
    
    • zkServer:用于启动、停止ZooKeeper,且能查看ZooKeeper状态。
    zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
    
    • zkEnv:设置ZooKeeper启动、关闭时的环境变量。在其余的每个脚本中都引用了这个脚本。
    • zkCleanup:清除ZooKeeper的事务日志和快照。
    • zkCli:ZooKeeper的一个命令行客户端。

    conf目录

    • configuration.xsl:不用管这个文件- -!。
    • log4f.properties:是ZooKeeper的日志配置文件。
    • zoo_sample.cfg:是ZooKeeper的示例配置文件。

    zkServer.sh默认的配置文件名为zoo.cfg。所以,在conf目录下创建一个zoo.cfg。写入几个保证ZooKeeper能正常运行的配置项:

    tickTime=2000
    dataDir=/usr/local/zookeeper/data
    clientPort=2181
    

    其中:

    • tickTime:ZooKeeper中很多配置项(如心跳时间、连接超时时间等)都要用到的时间单位,这里配置为2000毫秒,即2秒。
    • dataDir:ZooKeeper实例的数据目录。
    • clientPort:ZooKeeper向外提供

    启停

    启动

    使用zkServer.sh来启动ZooKeeper:

    cd bin/
    zkServer.sh start
    

    也可以手动指定启动时读取的配置文件:

    zkServer.sh start /usr/local/zookeeper/zookeeper-3.4.14/conf/zoo.cfg
    

    查看启动状态:

    [root@zk-1 bin]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
    Mode: standalone
    

    可以看到运行模式是"standalone"。

    停止

    zkServer.sh stop
    

    连接

    ZooKeeper启动后,就可以向外提供ZooKeeper服务了。这里用ZooKeeper提供的命令行客户端去连接一下ZooKeeper做个简单的测试。

    [root@zk-1 bin]# zkCli.sh -server localhost:2181
    Connecting to localhost:2181
    ……
    using SASL (unknown error)
    Welcome to ZooKeeper!
    JLine support is enabled
    2019-06-30 09:42:49,112 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@879] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
    2019-06-30 09:42:49,168 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1303] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x100002654ed0000, negotiated timeout = 30000
     
    WATCHER::
     
    WatchedEvent state:SyncConnected type:None path:null
    [zk: localhost:2181(CONNECTED) 0]
    

    集群部署

    cd /usr/local
    mkdir -p zookeeper/data
    cd zookeeper
    # 选择最新稳定版本
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
    tar zxvf zookeeper-3.4.14.tar.gz
    

    创建环境变量

    echo 'ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.14' >/etc/profile.d/zk.sh
    echo 'PATH=$ZOOKEEPER_HOME/bin:$PATH' >> /etc/profile.d/zk.sh
    chmod +x /etc/profile.d/zk.sh
    source /etc/profile.d/zk.sh
    

    zoo.cfg配置

    三个节点配置文件(/usr/local/zookeeper/zookeeper-3.4.14/conf/zoo.cfg)内容如下:

    tickTime=2000
    dataDir=/usr/local/zookeeper/data
    clientPort=2181
    initLimit=5
    syncLimit=2
    server.1=10.0.10.12:2888:3888
    server.2=10.0.10.13:2888:3888
    server.3=10.0.10.14:2888:3888
    

    在三个节点上写入myid文件:

    # 节点1上执行
    echo 1 >/usr/local/zookeeper/data/myid
     
    # 节点2上执行
    echo 2 >/usr/local/zookeeper/data/myid
     
    # 节点3上执行
    echo 3 >/usr/local/zookeeper/data/myid
    

    启动

    cd /usr/local/zookeeper/zookeeper-3.4.14/bin
    ./zkServer.sh status
    

    验证:

    # 节点1
    [root@zk-1 bin]# ./zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
    Mode: follower
     
    # 节点2
    [root@zk-2 bin]# ./zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
    Mode: leader
     
     
    # 节点3
    [root@zk-3 bin]# ./zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
    Mode: follower
    
  • 相关阅读:
    042.hiveLEFT SEMI JOIN 、 left anti join、inner join、full join
    032.hive rollup 、 with cube 、 grouping sets
    023.linuxshell抽取文本中某几行插入到另一个文
    041.mysql查询mysql元数据来格式化datax同步脚本,查询语句、拼接的json语句dataxmysql到hive
    33.hivecollect_set组合数组(数组内去重) 、array_contains 判断数组内是否又某个值返回布尔类型、concat_ws
    vue vant组件库 card组件 修改 thumb属性的图片 参数后不及时刷新解决
    idea 警告 The IDE is running low on memory and this might affect performance. Please consider increasing available heap. 解决
    尺子控件WinForm控件开发系列
    自定义形状按钮WinForm控件开发系列
    code ERESOLVE, ERESOLVE could not resolve
  • 原文地址:https://www.cnblogs.com/Rohn/p/11113532.html
Copyright © 2020-2023  润新知