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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 【4月更文挑战第10天】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伪集群,安装部署启动成功 :smirk:

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
13天前
|
SQL 机器学习/深度学习 分布式计算
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
32 1
|
13天前
|
消息中间件 分布式计算 监控
大数据-78 Kafka 集群模式 集群的应用场景与Kafka集群的搭建 三台云服务器
大数据-78 Kafka 集群模式 集群的应用场景与Kafka集群的搭建 三台云服务器
39 6
|
12天前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
28 4
|
13天前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
25 3
|
13天前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
112 1
|
负载均衡 应用服务中间件 Apache
关于配置并发访问的服务器apache、nginx
一、 apache,nginx比较     关于Apache与Nginx的优势比较  (apache计算密集型   nginx io密集型  各有优势,不存在谁取代谁) 二、nginx 基于nginx的tomcat负载均衡和集群(超简单)  侧重点简单配置,缺点多人访问时,session ...
1260 0
|
2月前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
42 1
|
3天前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
224 4
Apache Flink 2.0-preview released
|
8天前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
25 3
|
1月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。

推荐镜像

更多