在你的 3 台服务器上(每台 16 核、128 GB 内存、1TB SSD 和 4TB SATA 硬盘),可以安装和部署一个 Kafka 集群。Kafka 是一个分布式流处理平台,特别适合这种多节点、高性能的硬件配置。

以下是完整的步骤,帮助你在这 3 台服务器上安装和配置 Kafka 服务:


1. Kafka 集群规划

Kafka 集群通常需要以下组件:

  1. Broker(Kafka 服务器实例):每个服务器上运行一个 Kafka Broker,负责存储和分发消息。
  2. Zookeeper:Kafka 依赖 Zookeeper 来管理元数据、选举 Controller 和维护分布式协调。
  3. Producer 和 Consumer:生产者(Producer)发送消息到 Kafka,消费者(Consumer)从 Kafka 读取消息。

规划角色

在你的 3 台服务器上,建议以下配置:

这样,Kafka 和 Zookeeper 都是分布式部署的,具有高可用性。


2. 安装 Kafka 和 Zookeeper

以下是安装 Kafka 和 Zookeeper 集群的具体步骤。

2.1 下载 Kafka

从 Apache Kafka 官方下载 Kafka(包含 Zookeeper):

wget https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz

解压文件:

tar -xvzf kafka_2.13-3.5.1.tgz
mv kafka_2.13-3.5.1 /opt/kafka

将 Kafka 添加到环境变量(可选):

echo "export KAFKA_HOME=/opt/kafka" >> ~/.bashrc
echo "export PATH=\$PATH:\$KAFKA_HOME/bin" >> ~/.bashrc
source ~/.bashrc

注意:确保所有 3 台服务器都安装 Kafka。如果无法访问互联网,可以手动将 Kafka 文件分发到其他服务器。


2.2 配置 Zookeeper

Kafka 依赖 Zookeeper 进行元数据管理,因此我们需要为每台服务器配置 Zookeeper。

创建 Zookeeper 数据目录

在每台服务器上创建一个目录来存储 Zookeeper 数据:

mkdir -p /data/zookeeper

配置 Zookeeper

编辑 Zookeeper 配置文件 /opt/kafka/config/zookeeper.properties

nano /opt/kafka/config/zookeeper.properties

修改以下内容:

# 数据存储路径
dataDir=/data/zookeeper

# Zookeeper 客户端端口
clientPort=2181

# 集群模式配置
server.1=server1_ip:2888:3888
server.2=server2_ip:2888:3888
server.3=server3_ip:2888:3888

说明

创建 Zookeeper 节点 ID

在每台服务器上,根据节点 ID 创建一个文件 /data/zookeeper/myid

echo "1" > /data/zookeeper/myid  # 在 Server 1 上
echo "2" > /data/zookeeper/myid  # 在 Server 2 上
echo "3" > /data/zookeeper/myid  # 在 Server 3 上

123 分别对应 zookeeper.properties 中的 server.1server.2server.3

启动 Zookeeper

在每台服务器上启动 Zookeeper:

/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties

验证 Zookeeper 是否启动成功:

netstat -tnlp | grep 2181


2.3 配置 Kafka Broker

创建 Kafka 数据目录

在每台服务器上为 Kafka 创建数据存储目录:

mkdir -p /data/kafka

编辑 Kafka 配置

编辑 Kafka 配置文件 /opt/kafka/config/server.properties

nano /opt/kafka/config/server.properties

修改以下内容:

# Broker ID(在每台服务器上设置唯一的 ID)
broker.id=1  # Server 1 设置为 1,Server 2 设置为 2,Server 3 设置为 3

# Kafka 日志存储路径
log.dirs=/data/kafka

# Zookeeper 集群连接地址
zookeeper.connect=server1_ip:2181,server2_ip:2181,server3_ip:2181

# 监听地址(绑定服务器 IP 和端口)
listeners=PLAINTEXT://server1_ip:9092  # 替换为当前服务器 IP

# 允许外部客户端连接的地址
advertised.listeners=PLAINTEXT://server1_ip:9092  # 替换为当前服务器 IP

说明


2.4 启动 Kafka Broker

在每台服务器上启动 Kafka:

/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

验证 Kafka 是否启动成功:

netstat -tnlp | grep 9092


3. 验证 Kafka 集群

3.1 测试 Kafka 集群

创建一个 Kafka 主题

在任意一台服务器上运行以下命令创建一个主题:

/opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server server1_ip:9092,server2_ip:9092,server3_ip:9092 --partitions 3 --replication-factor 2

参数说明

查看主题列表

/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server server1_ip:9092

生产消息

使用 Kafka Producer 向主题发送消息:

/opt/kafka/bin/kafka-console-producer.sh --topic test-topic --bootstrap-server server1_ip:9092

输入一些消息(如 hello kafka),然后按回车。

消费消息

使用 Kafka Consumer 从主题消费消息:

/opt/kafka/bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server server1_ip:9092

你应该可以看到 Producer 发送的消息。


4. 磁盘存储规划

你的服务器有两块硬盘(1TB SSD 和 4TB SATA),可以按以下方式规划:

  1. 1TB SSD:用于存储 Zookeeper 数据(/data/zookeeper)。
  2. 4TB SATA:用于存储 Kafka 日志数据(/data/kafka)。

确保在 server.propertieszookeeper.properties 中配置了正确的路径。


5. 监控 Kafka 集群

5.1 Kafka 自带工具

Kafka 自带工具可以提供一些基本的操作和监控功能:

5.2 使用 Kafka Manager

Kafka Manager 是一个开源的 Kafka 集群管理工具,可以更方便地监控和管理 Kafka 集群:

  1. 安装 Kafka Manager:Kafka Manager GitHub
  2. 配置 Kafka Manager 连接你的 Kafka 集群。

6. 总结

通过上述步骤,你可以在 3 台服务器上部署一个高可用的 Kafka 集群:

  1. Zookeeper
    • 分布式部署在 3 台服务器上。
  2. Kafka Broker
    • 每台服务器运行一个 Kafka Broker,使用 Zookeeper 进行协调。
  3. 存储规划
    • 使用 SSD 存储 Zookeeper 数据,使用 SATA 存储 Kafka 日志。
  4. 验证集群
    • 创建主题、发送和消费消息,确保 Kafka 集群正常工作。

这种配置适合开发、测试和生产环境,具有良好的性能和容错能力。