zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    【洛谷P4319】 变化的道路 线段树分治+LCT
    【洛谷P4585】 [FJOI2015]火星商店问题 线段树分治+可持久化trie
    Spring Framework Part4 self-summeries-a simplified MVC framework
    Spring Framework Part3 IoC and Dynamic Proxy
    Spring Framework Part2 IOC
    Big Data(一)分治思想
    排序算法(6.15)
    KMP算法(6.14)
    数据结构之查找(图片来源,老师PPT)
    MongoDB的基本操作
  • 原文地址:https://www.cnblogs.com/Rohn/p/11113532.html
Copyright © 2011-2022 走看看