操作系统:centOS 9 Stream,6台,基于vmware虚拟机创建
准备工作
-
确认系统环境:
- 确保所有服务器已安装了最新更新。
- 安装Java Development Kit (JDK) 8或更高版本,因为ZooKeeper和Kafka都是基于Java开发的。例如,使用
sudo dnf install java-17-openjdk-devel
命令安装OpenJDK 17。这里我选择安装openjdk17,大家可以根据自身情况灵活选择。
-
规划集群架构:
- 分配3台服务器作为ZooKeeper节点,组成一个ZooKeeper集群,确保高可用性和数据一致性。
- 另外3台服务器作为Kafka Broker节点,组成一个Kafka集群。
安装ZooKeeper集群
在每台ZooKeeper服务器上执行以下操作:
-
下载并解压ZooKeeper:
- 访问Apache ZooKeeper官网(https://zookeeper.apache.org/releases.html)下载最新稳定版的ZooKeeper压缩包。
sudo wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
- 使用
wget
命令下载到服务器上,然后使用tar
命令解压到指定目录,如/usr/local/zookeeper-3.8.4
.tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz sudo mv apache-zookeeper-3.8.4-bin /usr/local cd /usr/local sudo mv apache-zookeeper-3.8.4-bin zookeeper-3.8.4 sudo mkdir -p /var/lib/zookeeper
- 访问Apache ZooKeeper官网(https://zookeeper.apache.org/releases.html)下载最新稳定版的ZooKeeper压缩包。
-
配置ZooKeeper:
- 编辑/usr/local/zookeeper-3.8.4/
conf/zoo.cfg
文件,可以在/etc/hosts中配置zoo1.example.com等3个主机名,根据您的服务器IP和端口规划配置以下关键参数:dataDir
: 数据存储路径,如/var/lib/zookeeper
.clientPort
: 客户端连接端口,通常设为2181
.server.x
: 定义ZooKeeper集群成员,其中x
是一个唯一的ID,每个节点对应一行,格式为server.id=hostname:port:port
。例如:
其中,第一个端口(tickTime=2000 dataDir=/var/lib/zookeeper clientPort=2181 initLimit=20 syncLimit=5 server.1=zoo1.example.com:2888:3888 server.2=zoo2.example.com:2888:3888 server.3=zoo3.example.com:2888:3888
2888
)用于集群内通信,第二个端口(3888
)用于选举。
- 编辑/usr/local/zookeeper-3.8.4/
-
创建数据目录及配置文件:
- 在每台服务器上创建
dataDir
指定的目录,并在该目录下创建一个名为myid
的文件,内容为该服务器在zoo.cfg
中对应的ID(如1、2或3)。
- 在每台服务器上创建
-
启动ZooKeeper服务:
/usr/local/zookeeper-3.8.4/bin/zkServer.sh start
安装Kafka集群
在每台Kafka服务器上执行以下操作:
-
下载并解压Kafka:
- 访问Apache Kafka官网(https://kafka.apache.org/downloads)下载最新稳定版的Kafka压缩包。
sudo wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
- 使用
wget
命令下载到服务器上,然后使用tar
命令解压到指定目录,如/usr/local/kafka-3.7
- 访问Apache Kafka官网(https://kafka.apache.org/downloads)下载最新稳定版的Kafka压缩包。
-
配置Kafka:
- 编辑
config/server.properties
文件,根据您的服务器IP和端口规划配置以下关键参数:broker.id
: 每个Broker的唯一标识,范围从0开始,依次为0、1、2。listeners
: Kafka监听的接口和协议,例如PLAINTEXT://0.0.0.0:9092
(监听所有网络接口的9092端口)。log.dirs
: Kafka日志存储路径,如/var/lib/kafka
.zookeeper.connect
: 指定ZooKeeper集群的连接字符串,包含所有ZooKeeper节点的地址和端口,例如zookeeper1.example.com:2181,zookeeper2.example.com:2181,zookeeper3.example.com:2181
.
- 编辑
-
启动Kafka服务:
/usr/local/kafka-3.7/bin/kafka-server-start.sh -daemon /usr/local/kafka-3.7/config/server.properties
验证集群
-
创建和测试主题:
- 使用Kafka自带的命令行工具(如
kafka-topics.sh
)在任意一台Kafka服务器上创建一个测试主题。 - 启动一个生产者向该主题发送消息,再启动一个消费者从该主题消费消息,验证消息传递是否正常。
- 使用Kafka自带的命令行工具(如
通过以上步骤,6台CentOS 9 Stream服务器上成功部署了一个由3台服务器组成的ZooKeeper集群和另一个由3台服务器组成的Kafka集群。记得根据实际环境调整配置文件中的IP地址、端口和路径等信息。