zookeeper cluster in a single machine

Zookeeper集群环境搭建步骤
该博客介绍了Zookeeper集群环境搭建。环境为Ubuntu系统、JDK 1.8、Zookeeper 3.4.12。步骤包括解压文件并复制成3份,创建配置文件和myid文件,最后启动服务器并检查状态,可通过命令查看是follower还是leader模式。

Environment

OS:Ubuntu
JDK: 1.8
Zookeeper: 3.4.12

Steps

unzip the tar.gz and make 3 copies

tar -xvf zookeeper-3.4.12.tar.gz

after copy there are 3 zookeeper folders

zookeeper-1
zookeeper-2
zookeeper-3

create each configuration file

vim zookeeper-1/conf/zoo.cfg
vim zookeeper-2/conf/zoo.cfg
vim zookeeper-3/conf/zoo.cfg
mkdir -p /var/data/zookeeper1/data
mkdir -p /var/data/zookeeper2/data
mkdir -p /var/data/zookeeper3/data
mkdir -p /var/data/zookeeper1/log
mkdir -p /var/data/zookeeper2/log
mkdir -p /var/data/zookeeper3/log
chmod 755 /var/data/zookeeper1/data
chmod 755 /var/data/zookeeper2/data
chmod 755 /var/data/zookeeper3/data
chmod 755 /var/data/zookeeper1/log
chmod 755 /var/data/zookeeper2/log
chmod 755 /var/data/zookeeper3/log

File content show below:

# time unit(milliesecond)
tickTime=2000
# data folder
dataDir=/var/data/zookeeper1/data
# log folder
dataLogDir=/var/data/zookeeper1/log
# server port
clientPort=2181
# timeout {initLimit}*{tickTime} when foller connect to leader
initLimit=5
# the synctime for the foller and leader, if timeout the foller will discard
syncLimit=2
#server.{myid}={host}:{heartbeat port}:{data port}
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883
tickTime=2000
dataDir=/var/data/zookeeper1/data
dataLogDir=/var/data/zookeeper1/log
clientPort=2182
initLimit=5
syncLimit=2
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883
tickTime=2000
dataDir=/var/data/zookeeper1/data
dataLogDir=/var/data/zookeeper1/log
clientPort=2183
initLimit=5
syncLimit=2
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883

create myid file

This file will contains the content which configured in zoo.cfg

vim /var/data/zookeeper1/data/myid
vim /var/data/zookeeper2/data/myid
vim /var/data/zookeeper3/data/myid

Start the server and check status

 zoopeeper1/bin/zkServer.sh start
 zoopeeper2/bin/zkServer.sh start
 zoopeeper3/bin/zkServer.sh start

you can check the status use below command

zookeeper-1/bin/zkServer.sh status

It will return Mode: follower or Mode: leader

### Kafka连接ZooKeeper时出现'The cluster ID'相关的报错解决方案 当Kafka启动时,如果遇到 `The Cluster ID z_SaQmL6QjS90SF3GPUchg doesn't match stored clusterId Some(vgWMqaPzTL-syRv5zJxaKA) in meta.properties` 的错误信息,这表明Kafka Broker尝试加入的集群ID与存储在 `meta.properties` 文件中的集群ID不匹配[^1]。以下是详细的解决方法: #### 1. 确认ZooKeeper配置是否正确 检查Kafka的 `server.properties` 文件中 `zookeeper.connect` 参数的配置是否正确。确保该参数指向了正确的ZooKeeper地址和端口(默认为2181)。例如: ```properties zookeeper.connect=localhost:2181 ``` 如果ZooKeeper运行在多个节点上,则需要列出所有节点的地址和端口,用逗号分隔[^2]。 #### 2. 检查ZooKeeper服务状态 确认ZooKeeper服务是否已经正常启动。可以通过以下命令检查ZooKeeper的状态: ```bash echo stat | nc localhost 2181 ``` 如果返回ZooKeeper的相关统计信息,则表示ZooKeeper正在运行;否则需要启动ZooKeeper服务[^2]。 #### 3. 清理旧的元数据 如果确认ZooKeeper配置正确且服务已启动,但仍然出现上述错误,可以尝试清理Kafka的旧元数据。具体步骤如下: - 停止Kafka Broker。 - 删除Kafka日志目录中与元数据相关的文件。通常,这些文件位于 `logs` 或 `data` 目录下,名称为 `meta.properties`。 - 删除ZooKeeper中与Kafka相关的节点数据。可以通过以下命令删除相关路径下的内容: ```bash echo "rmr /kafka" | nc localhost 2181 ``` - 修改Kafka的 `server.properties` 文件中的 `broker.id` 配置,确保其唯一性,并重新生成新的元数据[^1]。 #### 4. 检查防火墙策略 如果Kafka和ZooKeeper运行在不同的服务器上,确保防火墙没有阻止ZooKeeper的端口(默认为2181)。可以通过以下命令临时关闭防火墙进行测试: ```bash systemctl stop firewalld ``` 或者添加允许ZooKeeper端口的规则[^2]。 #### 5. 验证Kafka与ZooKeeper版本兼容性 确保Kafka和ZooKeeper的版本兼容。例如,Kafka 0.11.0 版本通常需要搭配 Zookeeper 3.4.x 或更高版本使用[^3]。如果不兼容,可能会导致连接问题或元数据不一致。 ### 示例代码:清理ZooKeeper节点 以下是一个简单的脚本,用于清理ZooKeeper中与Kafka相关的节点: ```bash #!/bin/bash ZK_HOST="localhost" ZK_PORT="2181" ZK_PATH="/kafka" echo "Deleting $ZK_PATH from ZooKeeper..." echo "rmr $ZK_PATH" | nc $ZK_HOST $ZK_PORT echo "Deletion complete." ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值