【zookeeper】如何快速搭建一个zookeeper集群

zookeeper集群搭建

本文主要讲解一个3节点的zookeeper集群搭建过程,相比其他的中间件,zk搭建方便很多,需要修改的地方也很少,欢迎参考。

准备工作

下载zookeeper

官网下载地址:http://mirror.bit.edu.cn/apache/zookeeper/

安装JDK

由于zookeeper集群的运行需要Java运行环境,所以需要首先安装 JDK。

解压zookeeper压缩包

由于每台机器的操作,有很多是重复的,所以可以同时操作三台机器,方法如下:

SecureCRT:

  • 先显示命令窗口:View–>Command Window
  • 在命令窗口空白处,右键,选择Send Command to All Sessions

进入压缩包所在目录,然后进行解压

[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-003 conf]# tar -zxvf zookeeper-3.4.10.tar.gz

修改配置

这一步可以只在一台机器上操作,改完之后,复制过来即可。

将zookeeper压缩文件解压后,我们进入到 conf 目录 ,将 zoo_sample.cfg 文件复制并重命名为 zoo.cfg 文件。

[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-003 conf]# cp zoo_sample.cfg zoo.cfg
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-003 conf]# vim zoo.cfg 

需要修改以下信息:

#基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小的session过期时间为2倍tickTime
tickTime=2000
#允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位
initLimit=10
#表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃
syncLimit=5
#存储内存中数据库快照的位置
dataDir=/neworiental/cdc/data/zk
# 客户端连接的端口号
clientPort=2181
#server.A=B:C:D
#		- A:其中 A 是一个数字,表示这个是服务器的编号;
#		- B:是这个服务器的 ip 地址;
#		- C:Leader选举的端口;
#		- D:Zookeeper服务器之间的通信端口。
server.1=172.24.29.128:2888:3888
server.2=172.24.29.129:2888:3888
server.3=172.24.29.130:2888:3888

创建目录及文件

创建dataDir目录

mkdir -p /neworiental/cdc/data/zk

创建myid文件

在上一步dataDir指定的目录下,创建myid文件。 里面只需要保存上一步server配置中本台机器IP对应的数字

cd /neworiental/cdc/data/zk
vi myid

然后分别在三台机器上填写自己的id,保存。

配置环境变量

​ 为了能够在任意目录启动zookeeper集群,我们需要配置环境变量。你也可以不配,这不是搭建集群的必要操作,只不过如果你不配置环境变量,那么每次启动zookeeper需要到安装文件的 bin 目录下去启动。

首先进入到 /etc/profile 目录,添加相应的配置信息:

vi /etc/profile

export ZK_HOME=/neworiental/cdc/zookeeper-3.4.10
export PATH=$PATH:$ZK_HOME/bin

​ 然后通过如下命令使得环境变量生效:

source /etc/profile

启动zookeeper服务

启动命令:zkServer.sh start

[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-005 conf]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /neworiental/cdc/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-005 conf]# 
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-005 conf]# 

查看集群节点状态:zkServer.sh status

[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-004 conf]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /neworiental/cdc/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-004 conf]# 
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-003 conf]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /neworiental/cdc/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-003 conf]# 
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-005 conf]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /neworiental/cdc/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-005 conf]# 

可以看到启动完成之后,其中一台为leader,其余两台为follower

停止命令:zkServer.sh stop

[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-005 conf]# zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /neworiental/cdc/zookeeper-3.4.10/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-005 conf]# 

重启命令:zkServer.sh restart

[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-003 conf]# zkServer.sh restart
ZooKeeper JMX enabled by default
Using config: /neworiental/cdc/zookeeper-3.4.10/bin/../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /neworiental/cdc/zookeeper-3.4.10/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
ZooKeeper JMX enabled by default
Using config: /neworiental/cdc/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-003 conf]# 
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-003 conf]# 

查看日志

日志文件相关的配置在zk_home/conf目录下的log4j.properties中,我尝试改了日志存储的路径,但是没有生效,就使用默认的吧。

[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-004 logs]# ll
total 20
-rw-r--r-- 1 root root 18041 Feb  2 16:39 zookeeper.log
-rw-r--r-- 1 root root     0 Feb  2 16:39 zookeeper.out
[root@JZJG-T-ZJJPTJZYZ-CDC-KAFKA-TEST-004 logs]# tail -f zookeeper.log 
2021-02-02 16:39:14,270 [myid:2] - INFO  [LearnerHandler-/172.24.29.128:56173:LearnerHandler@535] - Received NEWLEADER-ACK message from 1
2021-02-02 16:39:14,270 [myid:2] - INFO  [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Leader@961] - Have quorum of supporters, sids: [ 1,2 ]; starting up and setting last processed zxid: 0x500000000
2021-02-02 16:39:16,346 [myid:2] - INFO  [/172.24.29.129:3888:QuorumCnxManager$Listener@746] - Received connection request /172.24.29.130:26432
2021-02-02 16:39:16,347 [myid:2] - INFO  [WorkerReceiver[myid=2]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x300000000 (n.zxid), 0x1 (n.round), LOOKING (n.state), 3 (n.sid), 0x4 (n.peerEpoch) LEADING (my state)
2021-02-02 16:39:16,348 [myid:2] - INFO  [WorkerReceiver[myid=2]:FastLeaderElection@600] - Notification: 1 (message format version), 2 (n.leader), 0x400000000 (n.zxid), 0x5 (n.round), LOOKING (n.state), 3 (n.sid), 0x4 (n.peerEpoch) LEADING (my state)
2021-02-02 16:39:16,359 [myid:2] - INFO  [LearnerHandler-/172.24.29.130:57006:LearnerHandler@346] - Follower sid: 3 : info : org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer@64c854fb
2021-02-02 16:39:16,361 [myid:2] - INFO  [LearnerHandler-/172.24.29.130:57006:LearnerHandler@401] - Synchronizing with Follower sid: 3 maxCommittedLog=0x0 minCommittedLog=0x0 peerLastZxid=0x300000000
2021-02-02 16:39:16,361 [myid:2] - INFO  [LearnerHandler-/172.24.29.130:57006:LearnerHandler@475] - Sending SNAP
2021-02-02 16:39:16,361 [myid:2] - INFO  [LearnerHandler-/172.24.29.130:57006:LearnerHandler@499] - Sending snapshot last zxid of peer is 0x300000000  zxid of leader is 0x500000000sent zxid of db as 0x500000000
2021-02-02 16:39:16,367 [myid:2] - INFO  [LearnerHandler-/172.24.29.130:57006:LearnerHandler@535] - Received NEWLEADER-ACK message from 3

以上,一个3个节点的zookeeper集群就创建好了。

Guess you like

Origin blog.csdn.net/sinat_14840559/article/details/113699946