ZooKeeper-单机安装&集群安装

85 阅读3分钟

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

前面我们介绍介绍了几个常用的代理服务器,本章节我们讲来讲解Zookeeper这个中间件。

ZooKeeper 是一个分布式协调服务,广泛应用于分布式系统的配置管理、命名服务、分布式锁等场景。本文将详细介绍 ZooKeeper 单机安装集群安装的步骤。

一、准备工作

  1. JDK环境准备

由于Zookeeper是基于Java语言,所以我们需要准备JDK环境,这里实际上和我们前面讲解的Web服务器-Tomcat类似。

yum -y install java-1.8.0-openjdk

[root@localhost ~]# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)

2.ZooKeeper软件包准备

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.1-bin.tar.gz
mv apache-zookeeper-3.8.1-bin /opt/zookeeper

二、单机模式安装

#当然这里并没有修改任何配置
#正常使用至少要修改数据存储路径
cd /opt/zookeeper/confcp zoo_sample.cfg zoo.cfg

#启动单机版 
[root@localhost conf]# ../bin/zkServer.sh  
start/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

#检查服务状态,standalone是单机版
 [root@localhost conf]# ../bin/zkServer.sh  status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone

#链接zk
[root@localhost conf]# ../bin/zkCli.sh 
/usr/bin/java
Connecting to localhost:2181
#省略部分信息 
Welcome to ZooKeeper!
JLine support is enabled
2025-04-16 23:51:35,611 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):o.a.z.ClientCnxn$SendThread@1452] - Session establishment complete on server localhost/127.0.0.1:2181, session id = 0x1000079454f0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls  /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] 

三、集群模式安装(以 3 节点为例)

步骤 1:配置所有节点修改每台服务器的 zoo.cfg

这里实际建议是hosts方式,避免使用直接使用ip地址。

server.1=192.168.31.140:2888:3888
server.2=192.168.31.141:2888:3888
server.3=192.168.31.142:2888:3888
  • server.x: 节点唯一 ID,需与 myid 文件一致。

  • 2888: 节点间数据同步端口。

  • 3888: 选举通信端口。

步骤 2:创建 myid 文件

由于默认的数据目录是在/tmp/zookeeper,所以这里我还是使用这个路径。需要提前创建数据目录。

#在140执行
echo 1 > /tmp/zookeeper/myid
#在141执行
echo 2 > /tmp/zookeeper/myid
#在142执行
echo 3 > /tmp/zookeeper/myid

步骤3 :启动集群

在所有节点启动 ZooKeeper

cd /opt/zookeeper/bin ./zkServer.sh start

步骤4: 检查集群状态

cd /opt/zookeeper/bin 
./zkServer.sh status

正常三节点应该是1个leader,2个follower,这个时候集群就算搭建成功。

[root@localhost conf]# ../bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

这样我们就启动了一个三节点的Zookeeper集群。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。