前言:由于 hbase等集群的搭建依赖于zookeeper,所以这里把zookeeper集群的搭建和 zookeeper原理(下一篇)等 放到了前面。
1、下载并解压zookeeper
进入zookeeper的镜像网页地址:
http://www.apache.org/dyn/closer.cgi/zookeeper/
进入所选择的版本
复制下载地址
进入自己创建的 zookeeper目录,用 wget命令下载
wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
注:从版本3.5.5开始,后面的版本要下载带有bin名称的包,这个包下载后可以直接使用,只有它里面有编译后的二进制的包。之前的tar.gz的包里面是无法直接使用的源码。(这里踩了一个坑,刚开始下的是apache-zookeeper-3.7.0.tar.gz,最后所有配置完毕后,起不来,报”Starting zookeeper ... FAILED TO START“ 的错误,通过查日志,发现启动报错:”错误: 找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain“,后来知道这个原因。)
进入解压后的文件夹,并进入conf目录(根据自己创建的目录而定)
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
解压后的apache-zookeeper-3.7.0-bin文件位于当前目录
注:如果想下载zookeeper其他版本可进入http://archive.apache.org/dist/并拉到最下面找到zookeeper,点进去 找到对应版本下载即可
2、修改配置文件
进入解压后的文件夹,并进入conf目录(根据自己创建的目录而定)
cd usr/softInstall/zookeeper/apache-zookeeper-3.7.0/conf
修改zoo_sample.cfg 文件名称为zoo.cfg
mv zoo_sample.cfg zoo.cfg
编辑该文件
vi 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=/tmp/zookeeper
dataDir=/usr/softInstall/zookeeper/dataDir
dataLogDir=/usr/softInstall/zookeeper/dataDir
# 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
## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
server.1=192.168.3.7:2888:3888
server.2=192.168.3.8:2888:3888
server.3=192.168.3.9:2888:3888
配置解释
dataDir:内存数据库快照存放地址。
dataLogDir:事务日志存放地址。
注:如果没有指定dataLogDir,默认也是存放在dataDir路径下,一般这两个地址要分开存放到不同的设备上。
我的dataDir目录:
mkdir usr/softInstall/zookeeper/dataDir
我的dataLogDir目录:
mkdir usr/softInstall/zookeeper/dataLogDir
其它配置参数:
clientPort:配置ZK监听客户端连接的端口
tickTime:心跳基本时间单位(毫秒),zookeeper中的时间一般是他的整数倍。
initLimit:tickTime的个数,表示在leader选举结束后,followers与leader同步需要的时间,如果followers比较多或leader数据非常多,同步时间相应可能会增加,则该值也要增加。这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout)。
syncLimit:也是tickTime的个数,它表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。
server.serverid=host:tickpot:electionport
其中serverid:每个服务器的指定ID(1-255,每台机器不能重复)如下面配置的myid中的id;其中tickpot:用于心跳通信的端口;其中electionport:用于选举的端口
3、同步配置文件
通过以下命令将 本机zookeeper文件夹下的内容 全部copy到另外几台电脑上,减少安装和 配置时间。#将本主机的/usr/softInstall/zookeeper目录copy到远程linux主机上/usr/softInstall的文件夹下面
scp -r /usr/softInstall/zookeeper root@192.168.3.8:/usr/softInstall
scp -r /usr/softInstall/zookeeper root@192.168.3.9:/usr/softInstall
在每个服务器的dataDir目录下建立myid文件,并在文件中写入对应的serverid(与前面zoo.cfg文件中配置的serverid对应)如我的 第三台服务器:
4、配置环境变量
在root目录下:
vi .bashrc
#Zookeeper
export ZOOKEEPER_HOME=/usr/softInstall/zookeeper/apache-zookeeper-3.7.0
export PATH=$PATH:$ZOOKEEPER_HOME/bin
使它生效:
source .bashrc
5、启动zookeeper集群
启动:zkServer.sh start
其它命令:
重新启动:zkServer.sh restart
停止:zkServer.sh stop
查看状态:zkServer.sh status(查看状态要等所有的机器都被 启动完成后查看,若还未全部启动完成,查看状态会显示下图所示信息,此时不要惊慌,等所有机器 启动完成后再次 查看,若还是出现 下图信息,查看防火墙,或telnet命令查看2888:3888端口的状态)
依次启动其它两台机器,当三台机器全部启动完毕,查看每台机器的状态,出现下面状态,则表示启动成功,且很明显第二台机器被选为leader。
至此,zookeeper集群的搭建全部完成,欢迎大家关注后续文章。