zookeeper部署(集群模式)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ricardo_leite/article/details/77371942

必要条件:Java环境

  • 安装脚本
ZK_HOME="/usr/local/zookeeper-3.4.9"
DATA_DIR="/app/data/zookeeper"
LOG_DIR="/app/logs/zookeeper"
INST_DIR="/app/install"
sudo mkdir -p "$INST_DIR"
[ -f "$INST_DIR"/zookeeper-3.4.9.tar.gz ] || wget https://www.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz && sudo mv zookeeper-3.4.9.tar.gz "$INST_DIR"
function decompress() {
        if [ ! -d "${ZK_HOME}" ];then
        sudo tar zxvf "$INST_DIR"/zookeeper-3.4.9.tar.gz -C /usr/local/
        sudo chmod 755 -R ${ZK_HOME}
    fi
}
function copyConfTemplate() {
    sudo cp "$INST_DIR"/zk_conf/* ${ZK_HOME}/conf/
}
function localize() {
    sudo mkdir -p "${LOG_DIR}"
    sudo chmod a+w -R "${LOG_DIR}"
    sudo mkdir -p ${DATA_DIR}
    sudo chmod a+w -R ${DATA_DIR}
    touch ${DATA_DIR}/myid
    #不同机器获取本机ip地址的脚本可能不同,建议先在命令行试一下结果
    host_ip=`ifconfig eth0 | grep -w "inet" | awk '{ print $2}'`
    server_id=`grep "${host_ip}" ${ZK_HOME}/conf/zoo.cfg | awk -F'=' '{print $1}' | awk -F'.' '{print $2}'`
    echo "${host_ip}----${server_id}"
    echo "${server_id}" > ${DATA_DIR}/myid
}
decompress;
copyConfTemplate;
localize;
  • 配置文件
    注意以下两个文件的存放目录是/app/install/zk_conf,需要提前建好,部署脚本里用到这个路径。

    zoo.cfg(需要把zk-server1-ip、zk-server2-ip、zk-server3-ip改成实际部署的机器ip,或者配置hosts)

# The number of milliseconds of each tick
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=/app/data/zookeeper
# the port at which the clients will connect
clientPort=2181
server.1=zk-server1-ip:3888:4888
server.2=zk-server2-ip:3888:4888
server.3=zk-server3-ip:3888:4888
# 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

log4j.properties

# Define some default values that can be overridden by system properties
zookeeper.root.logger=INFO, CONSOLE
zookeeper.console.threshold=INFO
zookeeper.log.dir=/app/logs/zookeeper/
zookeeper.log.file=zookeeper.log
zookeeper.log.threshold=DEBUG
zookeeper.tracelog.dir=.
zookeeper.tracelog.file=zookeeper_trace.log

#
# ZooKeeper Logging Configuration
#

# Format is "<default threshold> (, <appender>)+

# 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
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
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
  • 执行部署
    sh zookeeper.sh

  • 启动

    sh /usr/local/zookeeper-3.4.9/bin/zkServer.sh start

  • 验证

    /usr/local/zookeeper-3.4.9/bin/zkServer.sh status(正常会显示leader还是follower)

这里写图片描述

或者jps(显示QuorumPeerMain表示成功)

扫描二维码关注公众号,回复: 5965886 查看本文章

这里写图片描述

猜你喜欢

转载自blog.csdn.net/ricardo_leite/article/details/77371942