搭建Zookeeper集群:三台服务器,一场分布式之舞

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

搭建Zookeeper集群:三台服务器,一场分布式之舞

    • 前言
    • 前置
      • 设置主机名对应关系
      • 要有java环境
    • 步骤
      • 1. 下载和解压 ZooKeeper:
      • 2. 配置 ZooKeeper:
      • 3. 配置集群节点的 `myid` 文件:
      • 4. 防火墙和端口设置:
      • 5. 启动 ZooKeeper:
      • 6. 验证 ZooKeeper:
    • 出现的问题解决(全面)

前言

在分布式系统的舞台上,Zookeeper是一位不可或缺的重要角色。如何搭建一个稳定、高性能的Zookeeper集群,成为每位系统管理员和开发者的必修课。让我们一同踏上这场集群之旅,揭秘三台服务器背后的Zookeeper配置细节,打造一个分布式一致性的乐园。

前置

设置主机名对应关系

这里因为我的ip总是变化的,也就是固定ip不能满足需求的时候

要设置好ip与主机名的对应关系

这里只要每台主机去ping另外两台主机即可,如果可达就可以使用了比如ping ubtone

要有java环境

执行两个命令java -versionjavac出现以下即可

image-20240311150114273

步骤

当搭建 Apache ZooKeeper 集群时,需要更详细的配置和操作步骤。以下是一个更详细的指南,以便您更好地理解如何配置和操作 ZooKeeper 集群:

1. 下载和解压 ZooKeeper:

# 下载 ZooKeeper
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.10/apache-zookeeper-3.5.10-bin.tar.gz# 解压
tar -zxf apache-zookeeper-3.5.10-bin.tar.gz

2. 配置 ZooKeeper:

# 进入 ZooKeeper 目录
cd apache-zookeeper-3.5.10-bin# 复制示例配置文件
cp conf/zoo_sample.cfg conf/zoo.cfg

编辑 conf/zoo.cfg 文件:

vim conf/zoo.cfg

配置文件示例:

# 必填项:ZooKeeper 数据存储目录
dataDir=/path/to/dataDir# 必填项:ZooKeeper 客户端连接端口
clientPort=2181# 选填项:ZooKeeper 集群节点信息
server.1=hostname1:2888:3888
server.2=hostname2:2888:3888
server.3=hostname3:2888:3888

每个节点的 dataDir 都应该是唯一的。clientPort 是 ZooKeeper 客户端连接的端口。server.X 是集群中每个节点的配置,其中 X 是节点编号,hostnameX 是该节点的主机名或 IP 地址。

3. 配置集群节点的 myid 文件:

在每个节点上创建一个 myid 文件,其中包含节点的编号,对应于 server.X 中的 X

# 例如,在第一个节点上:
echo "1" > /path/to/dataDir/myid# 在第二个节点上:
echo "2" > /path/to/dataDir/myid# 在第三个节点上:
echo "3" > /path/to/dataDir/myid

4. 防火墙和端口设置:

确保防火墙允许 ZooKeeper 使用的端口(默认是 2181)。根据您的防火墙工具,设置相应的规则。

5. 启动 ZooKeeper:

在每个节点上执行以下命令启动 ZooKeeper:

# ZooKeeper 3.6.0 之前版本
bin/zkServer.sh start# ZooKeeper 3.6.0 及更高版本
bin/zookeeper-server-start.sh -daemon conf/zoo.cfg

6. 验证 ZooKeeper:

连接到 ZooKeeper CLI,检查集群状态:

未命名 13

上方可以看到,有一个leader,两个follower。当你启动一个完第二个服务时候,它就会出现leader和follower

出现的问题解决(全面)

每台主机都不可达,也就是出现类似这种Cannot open channel to 2 at election address ubttwo/192.168.101.104:3888

  1. 首先我们确定防火墙是否关闭了,这个方法很多,比如使用ping,查看主机是否可达,然后使用telnet ip 2181,看端口是否可达,如果第一步没什么问题的话,就应该是第二个问题

  2. 在每一个zoo.cfg配置文件中加入配置

    quorumListenOnAllIPs=true
    

quorumListenOnAllIPs=true 是 ZooKeeper 的配置参数之一,用于指定 ZooKeeper 服务器是否监听所有的 IP 地址。当设置为 true 时,ZooKeeper 将监听服务器上的所有网络接口,而不仅仅是特定的 IP 地址。

具体来说,这个配置项的含义是:

  • quorumListenOnAllIPs=true 时,ZooKeeper 服务器将接受来自任何 IP 地址的连接请求。
  • quorumListenOnAllIPs=false 时,ZooKeeper 服务器将仅接受来自指定 IP 地址的连接请求。

默认情况下,quorumListenOnAllIPs 的值为 true,这意味着 ZooKeeper 服务器会监听所有的 IP 地址。这在一些场景中可能是有用的,特别是在多网卡或多 IP 地址的环境中,以确保 ZooKeeper 能够接受来自所有网络接口的连接。

在配置文件(通常是 zoo.cfg)中,可以按以下方式设置该选项:

quorumListenOnAllIPs=true

或者

quorumListenOnAllIPs=false

具体选择取决于您的网络环境和需求。如果您的 ZooKeeper 服务器部署在一个具有多个网络接口的主机上,可能需要将其设置为 true 以确保能够接受来自所有接口的连接。在其他情况下,可以根据需要设置为 false

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/600179.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

健康元 穿越周期看底色

中国创新药正在迈进2.0时代。 进入2024年之后,越来越多的国内创新药企开始主动调整研发管线,缩减研发开支,甚至是直接被“溢出”了市场。 在“风向标”的融资端,过去的2023年也是中国创新药融资市场连续第二年出现一二级市场融资…

LabVIEW数控磨床振动分析及监控系统

LabVIEW数控磨床振动分析及监控系统 在现代精密加工中,数控磨床作为关键设备之一,其加工质量直接影响到产品的精度与性能。然而,磨削过程中的振动是影响加工质量的主要因素之一,不仅会导致工件表面质量下降,还可能缩短…

达梦备份与恢复

达梦备份与恢复 基础环境 操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本:DM Database Server 64 V8 架构:单实例1 设置bak_path路径 --创建备份文件存放目录 su - dmdba mkdir -p /dm8/backup--修改dm.ini 文件…

222,完全二叉树的节点数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑灵活爬坡产品的虚拟电厂两阶段分布鲁棒优化运营策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

conda创建虚拟环境太慢,Collecting package metadata (current_repodata.json): failed

(省流版:只看加粗红色,末尾也有哦) 平时不怎么用conda,在前公司用服务器的时候用的是公司的conda源,在自己电脑上直接用python创建虚拟环境完事儿,所以对conda的配置并不熟悉~~【狗头】。但是python虚拟环境的最大缺点…

企业IT运维事中故障定位方法及工具

企业IT故障定位指诊断故障直接原因或根因,故障定位有助于故障恢复动作更加有效。故障定位通常是整个故障过程中耗时最长的环节,定位的目标围绕在快速恢复的基础上,而非寻找问题根因,后者由问题管理负责。通常大部分可用性故障&…

解决 VSCode 编辑器点击【在集成终端中打开】出现新的弹框

1、问题描述 在 VSCode 的项目下,鼠标右键,点击【在集成终端中打开】,出现新的一个弹框。新版的 VSCode 会有这个问题,一般来说我们都希望终端是在 VSCode 的控制台中打开的,那么如何关闭这个弹框呢? 2、解…

MUX VLAN

目录 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.使用Hybrid端口实现网络需求 3.使用Mux VLAN实现网络需求 原理概述 在实际的企业网络环境中,往往需要所有的终端用户都能够访问某些特定的服务器,而用户之间的访问控制规则则比较复杂。在…

Linux 多线程与线程控制(程序均有详细注释)

多线程与线程控制 线程的基本概念线程的特点页表多线程 线程控制线程的创建线程传参线程id资源回收---线程等待线程id和LWP 封装一个线程库线程互斥和线程同步线程互斥基本原理线程安全VS线程不安全锁的诞生可重入VS线程安全 死锁死锁的定义 线程同步条件变量接口 生成消费者模…

Mysql底层原理五:如何设计、用好索引

1.索引的代价 空间上的代价 时间上的代价 每次对表中的数据进⾏增、删、改操作时,都需要去修改各个B树索引。⽽且我们讲过,B树每层节点都是按照索引列的值从⼩到⼤的顺序排序⽽组成了双 向链表。不论是叶⼦节点中的记录,还是内节点中的记录&a…

MySQL5.7导入MySQL8.0以上版本的几种错误

【错误原因1】/!40000 DROP DATABASE IF EXISTS springbootra863/; 【解决办法】给这一行删了