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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: ZooKeeper【部署 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)

为保证集群高可用,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伪集群,安装部署启动成功 😏

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
4月前
|
消息中间件 存储 监控
构建高可用性Apache Kafka集群:从理论到实践
【10月更文挑战第24天】随着大数据时代的到来,数据传输与处理的需求日益增长。Apache Kafka作为一个高性能的消息队列服务,因其出色的吞吐量、可扩展性和容错能力而受到广泛欢迎。然而,在构建大规模生产环境下的Kafka集群时,保证其高可用性是至关重要的。本文将从个人实践经验出发,详细介绍如何构建一个高可用性的Kafka集群,包括集群规划、节点配置以及故障恢复机制等方面。
162 4
|
5月前
|
存储 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
73 1
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
|
5月前
|
数据处理 Apache 数据库
将 Python UDF 部署到 Apache IoTDB 的详细步骤与注意事项
【10月更文挑战第21天】将 Python UDF 部署到 Apache IoTDB 中需要一系列的步骤和注意事项。通过仔细的准备、正确的部署和测试,你可以成功地将自定义的 Python UDF 应用到 Apache IoTDB 中,为数据处理和分析提供更灵活和强大的支持。在实际操作过程中,要根据具体情况进行调整和优化,以确保实现最佳的效果。还可以结合具体的代码示例和实际部署经验,进一步深入了解和掌握这一过程。
54 2
|
5月前
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
116 5
|
5月前
|
资源调度 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
89 2
|
5月前
|
消息中间件 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
71 2
|
3月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
431 33
The Past, Present and Future of Apache Flink
|
5月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
1090 13
Apache Flink 2.0-preview released
|
5月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
191 3
|
6月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。

热门文章

最新文章

推荐镜像

更多