zookeeper—安装

1. ZooKeeper的下载

ZooKeeper下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/ 本次安装使用的是3.4.12这个版本

zookeeper 镜像下载 zookeeper 安装_Java

2. ZooKeeper安装环境准备

  1. 三个centos7的虚拟机(zk集群一般是奇数,因为集群超过一半的server活着,即可对外提供服务,也就是2n+1个服务允许n个失效)
  2. 需要安装jdk8版本

3. ZooKeeper安装

  1. 上传并解压zookeeper-3.4.12.tar.gz
mkdir zookeeper   #建立目录
cd zookeeper #进入安装目录
rz   #上传zookeeper-3.4.12.tar.gz
tar -zxvf zookeeper-3.4.12.tar.gz   #解压文件

zookeeper 镜像下载 zookeeper 安装_Linux_02


2. 设置zookeeper的配置文件

1)设置zoo.cfg文件

#在这个目录中:zookeeper-3.4.12/conf,创建zoo.cfg文件
cd zookeeper-3.4.12/conf
cp zoo_sample.cfg zoo.cfg

2)设置zoo.cfg配置文件的内容:

# 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=/home/baql/app/zookeeper/zookeeper-3.4.12/data
# the port at which the clients will connect
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
dataLogDir=/home/baql/app/zookeeper/zookeeper-3.4.12/logs
# 集群相关配置
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

3)配置说明:

tickTime
心跳基本时间单位,毫秒级,ZK基本上所有的时间都是这个时间的整数倍。
initLimit
tickTime的个数,表示在leader选举结束后,followers与leader同步需要的时间,如果followers比较多或者说leader的数据灰常多时,同步时间相应可能会增加,那么这个值也需要相应增加。当然,这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout)
syncLimit
tickTime的个数,这时间容易和上面的时间混淆,它也表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。
dataDir
内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上。
clientPort
配置ZK监听客户端连接的端口
server.serverid=host:tickpot:electionport
server:固定写法
serverid:每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复)
host:主机名
tickpot:心跳通信端口
electionport:选举端口

4)新建data和logs两个文件夹

mkdir data   #上面dataDir对应的目录,需要手动创建
mkdir logs   #保存日志的文件目录,下面流程介绍

zookeeper 镜像下载 zookeeper 安装_Java_03


5)在节点配置dataDir指定的目录下,也就是新创建的data目录下,创建一个myid的文件,内容是一个数字,用来表示当前主机。也就是对应zoo.cfg配置文件下的server.X,myid的值即为X,上面第一个server.1=master:2888:3888,所以myid的值为1

cd data
echo "1" > myid

6)设置日志配置文件(忽略)

# Define some default values that can be overridden by system properties
# zookeeper.root.logger=INFO, CONSOLE
# 改为 
zookeeper.root.logger=INFO, ROLLINGFILE

# 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
# 改为--每天一个log日志文件,而不是在同一个log文件中递增日志
log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ROLLINGFILE.MaxFileSize=10MB
#改为---改为每天一个log日志,就不用限制同一个long文件大小了
#log4j.appender.ROLLINGFILE.MaxFileSize=10MB

前后对比

zookeeper 镜像下载 zookeeper 安装_zookeeper_04


zookeeper 镜像下载 zookeeper 安装_配置文件_05

7)修改bin/zkEvn.sh(忽略)

if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="."
fi

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,CONSOLE"
fi
改为
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="$ZOOBINDIR/../logs"
fi

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi

前后对比

zookeeper 镜像下载 zookeeper 安装_Java_06

4. ZooKeeper集群安装

  1. 把整个zookeeper目录复制到其他两台服务器上:
scp -r  /home/baql/app/zookeeper root@192.168.177.130:/home/baql/app
scp -r  /home/baql/app/zookeeper root@192.168.177.129:/home/baql/app
  1. 修改myid的值
vim myid  #一个把值修改为2,另一个修改为3
  1. hosts配置(三台主机都要配置)

在/etc/hosts配置一下主机–IP映射,注意,每个节点的hostname分别对应master,slave1,slave2

192.168.177.131 master
192.168.177.130 slave1
192.168.177.129 slave2

zookeeper 镜像下载 zookeeper 安装_zookeeper_07

  1. 环境变量的配置(三台主机都要配置)

在/etc/profile配置zookeeper的环境变量,注意路径。

#Set ZOOKEEPER_HOME ENVIRONMENT
export ZOOKEEPER_HOME=/home/baql/app/zookeeper/zookeeper-3.4.12
export PATH=$PATH:$ZOOKEEPER_HOME/bin

zookeeper 镜像下载 zookeeper 安装_zookeeper_08

5. 启动zookeeper集群

启动前使用ping命令,看一下主机之间能否ping通,ping通之后把防火墙关闭
service iptables stop。

启动命令:./zkServer.sh start

进入bin目录,启动顺序为 master > slave1 > slave2。
也可以利用CRT的同时向多个窗口发送命令的功能,这样启动

zookeeper 镜像下载 zookeeper 安装_zookeeper_09


查看启动状态:./zkServer.sh statusmaster节点(leader)

zookeeper 镜像下载 zookeeper 安装_zookeeper_10


slave1 节点(follower)

zookeeper 镜像下载 zookeeper 安装_配置文件_11

6. 查看日志

如果无法正常启动,可以查看日志

zookeeper 镜像下载 zookeeper 安装_zookeeper_12


根据日志里面错误,逐步排查。

7. 进入zookeeper

zkCli.sh -server localhost:2181

zookeeper 镜像下载 zookeeper 安装_zookeeper_13


好了,环境搭建完成。