研究kafka的过程中,需要搭建zookeeper集群,过程比较简单,记录一下:
依然是三个虚拟机Centos7环境
192.168.20.3 Master
192.168.20.4 Slave1
192.168.20.5 Slave2
1.下载及配置环境变量
https://zookeeper.apache.org/
官方下载zk的tar包,我下载的是3.4.14版本
放linux下 我的路径是 opt/soft/
tar zxvf zookeeper-3.4.14.tar.gz
然后sudo vim /etc/profile
配置环境变量(也可以不配置):
# zk
export ZOOKEEPER_HOME=/opt/soft/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin
执行source /etc/profile
2.ZK集群配置
进入zookeeper的conf目录下
能发现三个文件,我们主要关注 zoo_sample.cfg
文件
执行cp zoo_sample.cfg zoo.cfg
源文件备份一下
然后vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
dataLogDir=/opt/soft/softLogs/zk
clientPort=2181
server.1=Master:2888:3888
server.2=Slave1:2888:3888
server.3=Slave2:2888:3888
这么写精简一些,简单说一下
- tickTime:心跳时间,每个 tickTime 服务器之间会发送一个心跳。
- initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
- syncLimit:Leader和Follower 之间发送消息,请求和应答时间,最长不能超过的时间,这边设置为5,那么时间就是 5*2000=10 秒。
- dataDir:存的是快照日志,后续需要手动去清理
- dataLogDir:不设置的话就会存在dataDir里面去,这边单独提出来比较好,因为他记录的是事务日志,最好是和快照区分开,否则会影响性能。
- clientPort:默认是2181,不用多说了,客户端连接 Zookeeper 服务器的端口。
- server.* : 这个是zk服务的id,后面可以伴随数字,数字可以自己去设置,后面接上集群机器,但是要注意一点,后续需要在dataDir创建一个myid文件,记录自己的id,好作区分。
然后,我们可以把这个改好的zk配置,分发到其他两台机器上!!!主要是配置,其他都差不多。
然后看dataDir,我的路径是/tmp/zookeeper
所以一路去创建文件夹,然后进入这个文件夹。
根据配置文件vim myid
Master机器,我们里面写1
Slave1机器,我们写2
Slave2机器,我们写3
保存。
完成配置,接下来就去看看是否启动!!
3.启动
分别去三台机器的zookeeper的bin目录下
开启:zkServer.sh start
都开启后我们可以看一下是否成功了!
使用jps
命令查看是否启动,看到QuorumPeerMain证明成功了。
查看状态:zkServer.sh status
Using config是使用的配置文件
Mode是角色
角色分为leader和follower
一般情况下,zk集群只有一个leader,剩下的都是follower,leader一般来响应客户端的读写请求。而follower是去同步数据,一旦leader挂掉,就会从follower中投票选举一个新leader出来。
这边多提一句,快照和事务的日志文件可以定期删掉,因为zk它默认是不清理的,所以可以通过写脚本加crontab定时器的形式去定期清理。
网友评论