ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)

本文档详细介绍了如何在一台服务器上搭建Zookeeper的伪集群,包括前期准备、安装配置、修改配置、标识节点、启动集群以及验证集群状态。通过这个过程,可以在JDK11环境下,利用三个不同的数据和日志目录,模拟出一个由三个节点组成的Zookeeper集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为保证集群高可用,Zookeeper 集群的节点数最好是奇数,最少有三个节点,所以这里搭建一个三个节点的集群,可是我只有两天服务器怎么办呢?我试过两台服务器组件集群,但是无法启动,所以这里部署一个【一台服务器三个节点】的伪集群。

我使用的安装文件是 apache-zookeeper-3.6.0-bin.tar.gz ,以下内容均以此版本进行说明。

1. 前期准备

zookeeper需要运行在Java环境下,【zookeeper-3.6.0】版本在jdk1.8下正常运行,这台云服务器安装的是JDK11【这里顺便测试一下能否在JDK11下运行】:

[root@aliyun ~]# java -version
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

关闭防火墙:

# 查看防火墙状态
[root@aliyun ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

# 如果是开启状态 关闭防火墙 
[root@aliyun ~]# systemctl stop firewalld.service

2. 安装配置

2.1 解压

# 准备伪集群目录【zookeeper-cluster 数据文件夹 日志文件夹】【这里不知道有没有简单方法 知道的小伙伴在评论区分享一下 造福大家】
mkdir /usr/local/zookeeper-cluster
cd /usr/local/zookeeper-cluster
mkdir data log
cd /usr/local/zookeeper-cluster/data
mkdir 01 02 03
cd /usr/local/zookeeper-cluster/log
mkdir 01 02 03

# 解压【这次不直接移动到/usr/local下】
[root@aliyun zookeeper]# tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz

2.2 修改配置

拷贝配置样本 zoo_sample.cfg 为 zoo.cfg 并进行修改【zookeeper 程序文件复制成三份后 zoo.cfg 还需要进行修改 将X修改成 1 2 3】【参数配置这里不再进行解释】可参考之前的《zookeeper 集群版》配置说明:

# 默认配置
tickTime=2000
initLimit=10
syncLimit=5
# 需要进行配置的
dataDir=/usr/local/zookeeper-cluster/data/0X
dataLogDir=/usr/local/zookeeper-cluster/log/0X
clientPort=218X
# 【如果是多台服务器 则集群中每个节点通讯端口和选举端口可相同 伪分布式不能相同】
server.1=aliyun:2287:3387
server.2=aliyun:2288:3388
server.3=aliyun:2289:3389

2.3 复制zookeeper程序文件

# 复制到 zookeeper01 zookeeper02 zookeeper03 【这里只贴出一个】 
cp -r /home/zookeeper/apache-zookeeper-3.6.0-bin/. /usr/local/zookeeper-cluster/zookeeper01

修改每个 zookeeper 程序文件的 zoo.cfg,这里只贴出 zookeeper01 的:

vim /usr/local/zookeeper-cluster/zookeeper01/conf/zoo.cfg
# 默认配置【三个配置文件相同】
tickTime=2000
initLimit=10
syncLimit=5
# 配置数据和日志文件夹及客户端端口【三个配置文件不同】
dataDir=/usr/local/zookeeper-cluster/data/01 【另外两台 02 03】
dataLogDir=/usr/local/zookeeper-cluster/log/01 【另外两台 02 03】
clientPort=2181 【另外两台 2182 2183# 配置通讯端口和选举端口【三个配置文件相同】
server.1=aliyun:2287:3387
server.2=aliyun:2288:3388
server.3=aliyun:2289:3389

2.4 标识节点

分别在三个节点的数据存储目录下新建 myid 文件,并写入对应的节点标识。Zookeeper 集群通过myid 文件识别集群节点,并通过上文配置的节点通信端口和选举端口来进行节点通信,选举出 leader节点。

echo "1" > /usr/local/zookeeper-cluster/data/01/myid
echo "2" > /usr/local/zookeeper-cluster/data/02/myid
echo "3" > /usr/local/zookeeper-cluster/data/03/myid

2.5 启动集群

/usr/local/zookeeper-cluster/zookeeper01/bin/zkServer.sh start
/usr/local/zookeeper-cluster/zookeeper02/bin/zkServer.sh start
/usr/local/zookeeper-cluster/zookeeper03/bin/zkServer.sh start

# 【这里只贴出其中一个节点的成功日志】
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-cluster/zookeeper01/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

2.5 集群验证

使用 jps 查看进程,可看到有三个zookeeper进程:

[root@aliyun ~]# jps -l
10993 org.apache.zookeeper.server.quorum.QuorumPeerMain
1652 org.apache.zookeeper.server.quorum.QuorumPeerMain
11048 org.apache.zookeeper.server.quorum.QuorumPeerMain

使用 zkServer.sh status 查看集群各个节点状态:

/usr/local/zookeeper-cluster/zookeeper01/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper02/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper03/bin/zkServer.sh status

# 可以看到myid是2的是leader 1和3是follower【初始化的选举机制可自行了解一下】
[root@aliyun zookeeper01]# /usr/local/zookeeper-cluster/zookeeper01/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-cluster/zookeeper01/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
[root@aliyun zookeeper01]# /usr/local/zookeeper-cluster/zookeeper02/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-cluster/zookeeper02/bin/../conf/zoo.cfg
Client port found: 2182. Client address: localhost.
Mode: leader
[root@aliyun zookeeper01]# /usr/local/zookeeper-cluster/zookeeper03/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-cluster/zookeeper03/bin/../conf/zoo.cfg
Client port found: 2183. Client address: localhost.
Mode: follower

至此,一台服务器实现三个节点的ZooKeeper伪集群,安装部署启动成功 😏

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

シ風

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值