# https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
# ==================================================================安装 jdk
mkdir -p /usr/java
tar -zxvf ~/jdk-8u111-linux-x64.tar.gz -C /usr/java
rm -r ~/jdk-8u111-linux-x64.tar.gz
# http://archive.apache.org/dist/zookeeper/
# ==================================================================安装 zookeeper
# zookeeper集群搭建要至少3台服务器,服务器都要部署zookeeper
tar -zxvf ~/zookeeper-3.4.12.tar.gz -C /usr/local
rm -r ~/zookeeper-3.4.12.tar.gz
# 配置环境变量
# ==================================================================node1 node2 node3
vi /etc/profile # 在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL下添加
export JAVA_HOME=/usr/java/jdk1.8.0_111
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.12 export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$ZOOKEEPER_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# ==================================================================node1
# 使环境变量生效
source /etc/profile # 检查是否配置成功
java -version # 查看配置结果
echo $JAVA_HOME echo $ZOOKEEPER_HOME # 创建数据文件和日志存放目录
mkdir $ZOOKEEPER_HOME/{data,logs} cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
vi $ZOOKEEPER_HOME/conf/zoo.cfg
dataDir=/usr/local/zookeeper-3.4.12/data
dataLogDir=/usr/local/zookeeper-3.4.12/logs
clientPort=2181
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888 vi $ZOOKEEPER_HOME/conf/log4j.properties zookeeper.log.dir=/usr/local/zookeeper-3.4.12/logs
zookeeper.tracelog.dir=/usr/local/zookeeper-3.4.12/logs
# ==================================================================node2 node3
mkdir -p /usr/java
# 同步到其他节点
# ==================================================================node1
scp -r $JAVA_HOME node2:/usr/java/
scp -r $JAVA_HOME node3:/usr/java/ scp -r $ZOOKEEPER_HOME node2:/usr/local/
scp -r $ZOOKEEPER_HOME node3:/usr/local/
# ==================================================================node2 node3
# 使环境变量生效
source /etc/profile # 检查是否配置成功
java -version # 查看配置结果
echo $JAVA_HOME
echo $ZOOKEEPER_HOME
# 在zookeeper的data目录下分别编辑myid
# ==================================================================node1
echo "1" > $ZOOKEEPER_HOME/data/myid # 查看myid
cat $ZOOKEEPER_HOME/data/myid
# ==================================================================node2
echo "2" > $ZOOKEEPER_HOME/data/myid
# ==================================================================node3
echo "3" > $ZOOKEEPER_HOME/data/myid
# 启动
# ==================================================================node1 node2 node3
zkServer.sh start
zkServer.sh status # zkServer.sh stop
# $ZOOKEEPER_HOME/bin/zkServer.sh start
# $ZOOKEEPER_HOME/bin/zkServer.sh status
# $ZOOKEEPER_HOME/bin/zkServer.sh stop shutdown -h now # 快照 zookeeper
# 先不用配置kafka SASL认证配置,待kafka配置好后再进行
# ==================================================================kafka SASL认证配置
vi $ZOOKEEPER_HOME/conf/zoo.cfg
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
# ==================================================================参考
# cat $ZOOKEEPER_HOME/conf/zoo.cfg
# tickTime:CS通信心跳数
# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位
tickTime=2000
# initLimit:LF初始通信时限
# 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)
initLimit=5
# syncLimit:LF同步通信时限
# 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)
syncLimit=2
# dataDir:数据文件目录
# Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里
dataDir=/usr/local/zookeeper-3.4.12/data
# dataLogDir:日志文件目录
# Zookeeper保存日志文件的目录
dataLogDir=/usr/local/zookeeper-3.4.12/logs
# clientPort:客户端连接端口
# 客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求
clientPort=2181
# 数据文件保存最近的3个快照,默认是都保存,时间长的话会占用很大磁盘空间
autopurge.snapRetainCount=3
# 单位为小时,每小时清理一次快照数据
autopurge.purgeInterval=1
# server.N 服务器名称与地址
# 从N开始依次为:服务编号、服务地址、LF通信端口、选举端口
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888