版权声明:本文为博主原创文章,未经博主允许不得转载。 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表示成功)