• centos 下 zookeeper3.4.11安装


    1、创建 /usr/local/services/zookeeper 文件夹:
        mkdir -p /usr/local/services/zookeeper
     
    2、进入到 /usr/local/services/zookeeper 目录中:
        cd /usr/local/services/zookeeper
     
    3、下载 zookeeper-3.4.11.tar.gz:
      
      wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
    4、解压缩 zookeeper-3.4.11.tar.gz:
        tar -zxvf zookeeper-3.4.11.tar.gz
     
    5、进入到 /usr/local/services/zookeeper/zookeeper-3.4.11/conf 目录中:
        cd zookeeper-3.4.11/conf/
     
    6、复制 zoo_sample.cfg 文件的并命名为为 zoo.cfg:
        cp zoo_sample.cfg zoo.cfg
     
    7、用 vim 打开 zoo.cfg 文件并修改其内容为如下:
        
    # 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.
        # dataDir=/tmp/zookeeper
     
        # 数据文件夹
        dataDir=/usr/local/services/zookeeper/zookeeper-3.4.11/data
     
        # 日志文件夹
        dataLogDir=/usr/local/services/zookeeper/zookeeper-3.4.11/logs
     
        # the port at which the clients will connect
        # 客户端访问 zookeeper 的端口号
        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
        #autopurge.snapRetainCount=3
        # Purge task interval in hours
        # Set to "0" to disable auto purge feature
        #autopurge.purgeInterval=1
      
    #集群地址配置
     server.1=192.168.1.21:2888:3888
     server.2=192.168.1.22:2888:3888
     server.3=192.168.1.23:2888:3888
     
    保存并关闭 zoo.cfg 文件:
     
    1. tickTime  = 2000:Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳。
    
    2. initLimit: 配置 Zookeeper 接受客户端(此客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已超过initLimit个tickTime长度后 Zookeeper 服务器还没有收到客户端的返回信息,则表明客户端连接失败。总的时间长度就是 initLimit * tickTime 秒。
    
    3. syncLimit: 配置 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 syncLimit * tickTime 秒 
    
    4. dataDir:   Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
    
    5. dataLogDir:若没提供的话则用dataDir。zookeeper的持久化都存储在这两个目录里。dataLogDir里是放到的顺序日志(WAL)。而dataDir里放的是内存数据结构的snapshot,便于快速恢复。为了达到性能最大化,一般建议把dataDir和dataLogDir分到不同的磁盘上,以充分利用磁盘顺序写的特性。
    
    6. clientPort:Zookeeper服务器监听的端口,以接受客户端的访问请求。
    
    7. server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,此端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

    配置集群需要设置一个myid,在dataDir路径下新建myid文件,没有后缀格式

    内容只需写当前服务器上几号服务器即可(上文中server.A=B:C:D:中的A)

         
     8、  打开指定端口并刷新防火墙配置
    firewall-cmd --zone=public --add-port=2181/tcp --permanent
    firewall-cmd --zone=public --add-port=2888/tcp --permanent
    firewall-cmd --zone=public --add-port=3888/tcp --permanent
    firewall-cmd --reload
    View Code
    9、进入到 /usr/local/services/zookeeper/zookeeper-3.4.11/bin 目录中:
        cd ../bin/
     
    10、用 vim 打开 /etc/ 目录下的配置文件 profile:
        vim /etc/profile
        并在其尾部追加如下内容:
     
    1     #zookeeper-3.4.11 config start
    2  
    3     export ZOOKEEPER_HOME=/usr/local/services/zookeeper/zookeeper-3.4.11/
    4     export PATH=$ZOOKEEPER_HOME/bin:$PATH
    5     export PATH
    6  
    7     #zookeeper-3.4.11 config end
    profile修改
     
    11、使 /etc/ 目录下的 profile 文件即可生效:
        source /etc/profile
     
    12、启动 zookeeper 服务:
        zkServer.sh start
        如打印如下信息则表明启动成功:
        ZooKeeper JMX enabled by default
        Using config: /usr/local/services/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
        Starting zookeeper ... STARTED
     
    13、查询 zookeeper 状态:
        zkServer.sh status
     
    14、关闭 zookeeper 服务:
        zkServer.sh stop
        如打印如下信息则表明成功关闭:
        ZooKeeper JMX enabled by default
        Using config: /usr/local/services/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
        Stopping zookeeper ... STOPPED
     
    15、重启 zookeeper 服务:
        zkServer.sh restart
        如打印如下信息则表明重启成功:
        ZooKeeper JMX enabled by default
        Using config: /usr/local/services/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
        ZooKeeper JMX enabled by default
        Using config: /usr/local/services/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
        Stopping zookeeper ... STOPPED
        ZooKeeper JMX enabled by default
        Using config: /usr/local/services/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
        Starting zookeeper ... STARTED
     
    此时zookeeper已经安装完成,但是我发现日志并没有按照上面设置的logs目录进行输出,所以还需要调整一下日志的输出位置和级别
    /usr/local/services/zookeeper/zookeeper-3.4.11/conf
    此目录下,log4j.properties文件
     
    # Define some default values that can be overridden by system properties
    zookeeper.root.logger=INFO, ROLLINGFILE
    zookeeper.console.threshold=INFO
    zookeeper.log.dir=.
    zookeeper.log.file=zookeeper.log
    zookeeper.log.threshold=DEBUG
    zookeeper.tracelog.dir=.
    zookeeper.tracelog.file=zookeeper_trace.log
    
    
    # DEFAULT: console appender only
    log4j.rootLogger=${zookeeper.root.logger}
    
    # Example with rolling log file
    #log4j.rootLogger=DEBUG, CONSOLE, ROLLINGFILE
    
    # Example with rolling log file and tracing
    #log4j.rootLogger=TRACE, CONSOLE, ROLLINGFILE, TRACEFILE
    
    #
    # Log INFO level and above messages to the console
    #
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.Threshold=${zookeeper.console.threshold}
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n
    
    #
    # Add ROLLINGFILE to rootLogger to get log file output
    #    Log DEBUG level and above messages to a log file
    #按照日期每天输出logs
    log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold}
    log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file}
    
    # Max log file size of 10MB
    log4j.appender.ROLLINGFILE.MaxFileSize=10MB
    # uncomment the next line to limit number of backup files
    #log4j.appender.ROLLINGFILE.MaxBackupIndex=10
    
    log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n
    
    
    #
    # Add TRACEFILE to rootLogger to get log file output
    #    Log DEBUG level and above messages to a log file
    log4j.appender.TRACEFILE=org.apache.log4j.FileAppender
    log4j.appender.TRACEFILE.Threshold=TRACE
    log4j.appender.TRACEFILE.File=${zookeeper.tracelog.dir}/${zookeeper.tracelog.file}
    
    log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout
    ### Notice we are including log4j's NDC here (%x)
    log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L][%x] - %m%n
     
    此目录下的/usr/local/services/zookeeper/zookeeper-3.4.11/bin
    zkEnv.sh
    #!/usr/bin/env bash
    
    # Licensed to the Apache Software Foundation (ASF) under one or more
    # contributor license agreements.  See the NOTICE file distributed with
    # this work for additional information regarding copyright ownership.
    # The ASF licenses this file to You under the Apache License, Version 2.0
    # (the "License"); you may not use this file except in compliance with
    # the License.  You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    # This script should be sourced into other zookeeper
    # scripts to setup the env variables
    
    # We use ZOOCFGDIR if defined,
    # otherwise we use /etc/zookeeper
    # or the conf directory that is
    # a sibling of this script's directory
    
    ZOOBINDIR="${ZOOBINDIR:-/usr/bin}"
    ZOOKEEPER_PREFIX="${ZOOBINDIR}/.."
    
    if [ "x$ZOOCFGDIR" = "x" ]
    then
      if [ -e "${ZOOKEEPER_PREFIX}/conf" ]; then
        ZOOCFGDIR="$ZOOBINDIR/../conf"
      else
        ZOOCFGDIR="$ZOOBINDIR/../etc/zookeeper"
      fi
    fi
    
    if [ -f "${ZOOCFGDIR}/zookeeper-env.sh" ]; then
      . "${ZOOCFGDIR}/zookeeper-env.sh"
    fi
    
    if [ "x$ZOOCFG" = "x" ]
    then
        ZOOCFG="zoo.cfg"
    fi
    
    ZOOCFG="$ZOOCFGDIR/$ZOOCFG"
    
    if [ -f "$ZOOCFGDIR/java.env" ]
    then
        . "$ZOOCFGDIR/java.env"
    fi
    
    if [ "x${ZOO_LOG_DIR}" = "x" ]
    then
        #日志输出路径 不需mkdir zookeeper启动时自动创建
        ZOO_LOG_DIR="/usr/local/services/zookeeper/zookeeper-3.4.11/logs"
    fi
    
    if [ "x${ZOO_LOG4J_PROP}" = "x" ]
    then
        #日志级别与log4j配置文件设置同步
        ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
    fi
    
    if [ "$JAVA_HOME" != "" ]; then
      JAVA="$JAVA_HOME/bin/java"
    else
      JAVA=java
    fi
    
    #add the zoocfg dir to classpath
    CLASSPATH="$ZOOCFGDIR:$CLASSPATH"
    
    for i in "$ZOOBINDIR"/../src/java/lib/*.jar
    do
        CLASSPATH="$i:$CLASSPATH"
    done
    
    #make it work in the binary package
    #(use array for LIBPATH to account for spaces within wildcard expansion)
    if [ -e "${ZOOKEEPER_PREFIX}"/share/zookeeper/zookeeper-*.jar ]; then
      LIBPATH=("${ZOOKEEPER_PREFIX}"/share/zookeeper/*.jar)
    else
      #release tarball format
      for i in "$ZOOBINDIR"/../zookeeper-*.jar
      do
        CLASSPATH="$i:$CLASSPATH"
      done
      LIBPATH=("${ZOOBINDIR}"/../lib/*.jar)
    fi
    
    for i in "${LIBPATH[@]}"
    do
        CLASSPATH="$i:$CLASSPATH"
    done
    
    #make it work for developers
    for d in "$ZOOBINDIR"/../build/lib/*.jar
    do
       CLASSPATH="$d:$CLASSPATH"
    done
    
    #make it work for developers
    CLASSPATH="$ZOOBINDIR/../build/classes:$CLASSPATH"
    
    case "`uname`" in
        CYGWIN*) cygwin=true ;;
        *) cygwin=false ;;
    esac
    
    if $cygwin
    then
        CLASSPATH=`cygpath -wp "$CLASSPATH"`
    fi
    
    #echo "CLASSPATH=$CLASSPATH"

    此时再重启zk日志就会输出到指定的文件夹了

  • 相关阅读:
    linux设置tomcat开机自启动
    搭建本地的git仓库
    Linux安装配置JDK
    关于HTTP GET请求的url中文参数编码
    [dataTables.js error] Uncaught TypeError: myTable.row is not a function
    DataTables warning : Requested unknown parameter '5' from the data source for row 0
    取消mod_sofia的呼叫鉴权
    TCP服务器不回复SYN的问题
    volley7--NetworkDispatcher从网络中获取数据
    volley4--RequestQueue
  • 原文地址:https://www.cnblogs.com/a15821617282/p/8336923.html
Copyright © 2020-2023  润新知