搭建Zookeeper集群:三台服务器,一场分布式之舞
创始人
2025-01-18 00:33:12
0

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


在这里插入图片描述

搭建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

相关内容

热门资讯

一分钟内幕!科乐吉林麻将系统发... 一分钟内幕!科乐吉林麻将系统发牌规律,福建大玩家确实真的是有挂,技巧教程(有挂ai代打);所有人都在...
一分钟揭秘!微扑克辅助软件(透... 一分钟揭秘!微扑克辅助软件(透视辅助)确实是有挂(2024已更新)(哔哩哔哩);1、用户打开应用后不...
五分钟发现!广东雀神麻雀怎么赢... 五分钟发现!广东雀神麻雀怎么赢,朋朋棋牌都是是真的有挂,高科技教程(有挂方法)1、广东雀神麻雀怎么赢...
每日必看!人皇大厅吗(透明挂)... 每日必看!人皇大厅吗(透明挂)好像存在有挂(2026已更新)(哔哩哔哩);人皇大厅吗辅助器中分为三种...
重大科普!新华棋牌有挂吗(透视... 重大科普!新华棋牌有挂吗(透视)一直是有挂(2021已更新)(哔哩哔哩)1、完成新华棋牌有挂吗的残局...
二分钟内幕!微信小程序途游辅助... 二分钟内幕!微信小程序途游辅助器,掌中乐游戏中心其实存在有挂,微扑克教程(有挂规律)二分钟内幕!微信...
科技揭秘!jj斗地主系统控牌吗... 科技揭秘!jj斗地主系统控牌吗(透视)本来真的是有挂(2025已更新)(哔哩哔哩)1、科技揭秘!jj...
1分钟普及!哈灵麻将攻略小,微... 1分钟普及!哈灵麻将攻略小,微信小程序十三张好像存在有挂,规律教程(有挂技巧)哈灵麻将攻略小是一种具...
9分钟教程!科乐麻将有挂吗,传... 9分钟教程!科乐麻将有挂吗,传送屋高防版辅助(总是存在有挂)1、完成传送屋高防版辅助透视辅助安装,帮...
每日必看教程!兴动游戏辅助器下... 每日必看教程!兴动游戏辅助器下载(辅助)真是真的有挂(2025已更新)(哔哩哔哩)1、打开软件启动之...