美文网首页我爱编程
zookeeper单机模式搭建(整理)

zookeeper单机模式搭建(整理)

作者: 普度众生的面瘫青年 | 来源:发表于2018-04-16 21:10 被阅读139次

    zookeeper简介
    Zookeeper集群及伪集群模式搭建

    1. 下载安装文件zookeeper-3.4.11.tar.gz

    镜像地址1: http://apache.fayea.com/zookeeper/
    镜像地址2: http://mirrors.hust.edu.cn/apache/zookeeper/

    1. 可使用wget直接在linux下载。(如果提示找不到wget命令,执行yum install wget下载wget包,其他环境可以使用其它命令,如ubantu的apt-get)
    yum install wget
    wget http://apache.fayea.com/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
    
    1. 新建/usr/loca/zookeeper文件夹
    [root@localhost ~]# mkdir -pv /usr/local/zookeeper
    
    1. 拷贝下载的zookeeper压缩包到指定文件夹,并解压,同时创建zk的数据文件目录和日志目录
    [root@localhost ~]# mkdir /var/zookeeper/data
    [root@localhost ~]# mkdir /var/zookeeper/log
    [root@localhost ~]# cp ./zookeeper-3.4.11.tar.gz  /usr/local/zookeeper
    [root@localhost ~]# cd /usr/local/zookeeper
    [root@localhost zookeeper]# tar -xzvf ./zookeeper-3.4.11.tar.gz
    
    1. zookeeper运行在jvm上,需要提前安装java环境,链接:
      https://www.jianshu.com/p/6003393e1c78

    2. 配置环境变量

    [root@localhost ~]#vi /etc/profile 
    在文件末尾添加以下内容
    export ZOOKEEPER_INSTALL=/usr/local/zookeeper/zookeeper-3.4.11/
    export PATH=$PATH:$ZOOKEEPER_INSTALL/bin
    

    使用source命令使环境变量生效

    source /etc/profile
    
    1. 配置文件修改
    [root@localhost zookeeper-3.4.11]# cd /usr/local/zookeeper/zookeeper-3.4.11/conf/ -- 进入文件所在路径
    [root@localhost conf]# cp zoo_sample.cfg zoo.cfg -- 将zoo.sample.cfg拷贝出一份zoo.cfg出来
    
    1. 文件内容如下:
      配置文件简单解析
      1、tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
      2、dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
      3、dataLogDir:顾名思义就是 Zookeeper 保存日志文件的目录
      4、clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
    [root@localhost conf]# vi zoo.cfg 
    -- 按i进入编辑模式. 修改完成之后, esc退出编辑模式, 大写字母Z双击即可保存.
    
    # The number of milliseconds of each tick
    # zookeeper 定义的基准时间间隔,单位:毫秒
    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.不让用/tmp,记得更换地址后去手动mkdir创建
    dataDir=/usr/local/zookeeper/data -- 数据文件路径
    dataLogDir=/usr/local/zookeeper/log -- 日志路径
    # the port at which the clients will connect
    # 客户端访问 zookeeper 的端口号,如果是多机器的话,在clientPort处添加服务器的ip
    clientPort=2181
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    # maxClientCnxns=60
    #
    # Be sure to read the maintenance section of the
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    # log文件保存20个,snap快照文件保存20个,若zookeeper启动时发现超出时,就会执行删除文件的操作
    autopurge.snapRetainCount=20
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    # 间隔5小时清理一次
    autopurge.purgeInterval=5
    

    修改完之后 通过 > # cat zoo.cfg 查看.

    1. 开启服务,关闭服务, 查看
    [root@localhost bin]# cd /usr/local/zookeeper/zookeeper.3.4.11/bin/
    
    [root@localhost bin]# ./zkServer.sh stop -- 停止服务
    
    JMX enabled by default
    
    Using config: /usr/local/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
    
    Stopping zookeeper ... STOPPED
    
    [root@localhost bin]# ./zkServer.sh start -- 开启服务
    
    JMX enabled by default
    
    Using config: /usr/local/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
    
    Starting zookeeper ... STARTED
    
    [root@localhost bin]# ./zkServer.sh status -- 查看状态
    
    JMX enabled by default
    
    Using config: /usr/local/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
    
    Mode: standalone
    
    [root@localhost bin]# ./zkCli.sh -- 客户端启动, 可以查看启动状态和日志
    
    Connecting to localhost:2181
    
    2017-03-08 06:15:26,918 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
    
    2017-03-08 06:15:26,923 [myid:] - INFO [main:Environment@100] - Client environment:host.name=localhost
    
    2017-03-08 06:15:26,923 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_121
    
    2017-03-08 06:15:26,925 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
    
    2017-03-08 06:15:26,926 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/local/java/jdk1.8.0_121/jre
    
    2017-03-08 06:15:26,926 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/usr/local/zookeeper/zookeeper-3.4.6/bin/../build/classes:/usr/local/zookeeper/zookeeper-3.4.6/bin/../build/lib/*.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../conf:.:/usr/local/java/jdk1.8.0_121/lib/dt.jar:/usr/local/java/jdk1.8.0_121/lib/tools.jar:/usr/local/java/jdk1.8.0_121/jre/lib:.:/usr/local/java/jdk1.8.0_121/lib/dt.jar:/usr/local/java/jdk1.8.0_121/lib/tools.jar:/usr/local/java/jdk1.8.0_121/jre/lib:.:/usr/local/java/jdk1.8.0_121/lib/dt.jar:/usr/local/java/jdk1.8.0_121/lib/tools.jar:/usr/local/java/jdk1.8.0_121/jre/lib:
    
    2017-03-08 06:15:26,926 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
    
    2017-03-08 06:15:26,926 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
    
    2017-03-08 06:15:26,926 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
    
    2017-03-08 06:15:26,930 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
    
    2017-03-08 06:15:26,930 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
    
    2017-03-08 06:15:26,930 [myid:] - INFO [main:Environment@100] - Client environment:os.version=2.6.32-431.el6.x86_64
    
    2017-03-08 06:15:26,931 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
    
    2017-03-08 06:15:26,931 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
    
    2017-03-08 06:15:26,931 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/usr/local/zookeeper/zookeeper-3.4.6/bin
    
    2017-03-08 06:15:26,940 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@277050dc
    
    Welcome to ZooKeeper!
    
    2017-03-08 06:15:27,039 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@975] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181\. Will not attempt to authenticate using SASL (unknown error)
    
    JLine support is enabled
    
    2017-03-08 06:15:27,290 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@852] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
    
    [zk: localhost:2181(CONNECTING) 0] 2017-03-08 06:15:27,445 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x15aae45f1330000, negotiated timeout = 30000
    
    WATCHER::
    
    WatchedEvent state:SyncConnected type:None path:null
    
    [root@localhost bin]# ps -ef | grep zookeeper -- 查看zookeeper的服务进程
    

    相关命令:{start|start-foreground|stop|restart|status|upgrade|print-cmd}

    客户端连不上时,可以在客户端/etc/hosts配置ip和主机名的映射
    192.168.0.200 master

    1. zkClient简单操作
      9个基本操作指令:

    简单用例:

    # 连接 ZooKeeper 服务器
    bin/zkCli.sh -server localhost:2181
    # 查看根下有哪些节点
    [zk: localhost:2181(CONNECTED) 1] ls /
    [controller_epoch, controller, brokers, zookeeper, admin, isr_change_notification, consumers, config]
    # 查看 brokers 下有哪些子节点
    [zk: localhost:2181(CONNECTED) 4] ls /brokers
    [ids, topics, seqid]
    # 在根下创建一个 "tuchao" 节点,并设置数据为 "hello zookeeper"
    [zk: localhost:2181(CONNECTED) 5] create /tuchao "hello zookeeper"
    # 查看是否创建成功
    [zk: localhost:2181(CONNECTED) 6] ls /
    [controller_epoch, controller, brokers, zookeeper, tuchao, admin, isr_change_notification, consumers, config]
    # 查看 /tuchao 中的数据
    [zk: localhost:2181(CONNECTED) 7] get /tuchao
    hello zookeeper
    cZxid = 0x20049ab24
    ctime = Sun Oct 09 15:45:02 CST 2016
    mZxid = 0x20049ab24
    mtime = Sun Oct 09 15:45:02 CST 2016
    pZxid = 0x20049ab24
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 15
    numChildren = 0
    # 可以看到刚刚设置的数据。
    # 修改 /tuchao 中的数据为 "Happy birthday"
    [zk: localhost:2181(CONNECTED) 8] set /tuchao "Happy birthday"
    cZxid = 0x20049ab24
    ctime = Sun Oct 09 15:45:02 CST 2016
    mZxid = 0x20049b2cc
    mtime = Sun Oct 09 15:51:17 CST 2016
    pZxid = 0x20049ab24
    cversion = 0
    dataVersion = 1   # 可以发现,当数据变更时,数据版本号增加了。
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 14
    numChildren = 0
    # 再查看一次 /tuchao 中的数据
    [zk: localhost:2181(CONNECTED) 9] get /tuchao
    Happy birthday
    cZxid = 0x20049ab24
    ctime = Sun Oct 09 15:45:02 CST 2016
    mZxid = 0x20049b2cc
    mtime = Sun Oct 09 15:51:17 CST 2016
    pZxid = 0x20049ab24
    cversion = 0
    dataVersion = 1
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 14
    numChildren = 0
    # 给 /tuchao 创建一个子节点 /tuchao/abc1
    [zk: localhost:2181(CONNECTED) 10] create /tuchao/abc1 "abc1 node"
    Created /tuchao/abc1
    [zk: localhost:2181(CONNECTED) 11] ls /tuchao  
    [abc1]
    # 删除节点 /tuchao/abc1
    [zk: localhost:2181(CONNECTED) 0] delete /tuchao/abc1
    [zk: localhost:2181(CONNECTED) 1] ls /tuchao
    []
    # 查看命令帮助,输入 h
    [zk: localhost:2181(CONNECTED) 2] h
    ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history 
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port
    
    1. zkServer的四字命令


    相关文章

      网友评论

        本文标题:zookeeper单机模式搭建(整理)

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