在你的 3 台服务器上(每台 16 核、128 GB 内存、1TB SSD 和 4TB SATA 硬盘),可以安装和部署一个 Kafka 集群。Kafka 是一个分布式流处理平台,特别适合这种多节点、高性能的硬件配置。
以下是完整的步骤,帮助你在这 3 台服务器上安装和配置 Kafka 服务:
Kafka 集群通常需要以下组件:
在你的 3 台服务器上,建议以下配置:
这样,Kafka 和 Zookeeper 都是分布式部署的,具有高可用性。
以下是安装 Kafka 和 Zookeeper 集群的具体步骤。
从 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 文件分发到其他服务器。
Kafka 依赖 Zookeeper 进行元数据管理,因此我们需要为每台服务器配置 Zookeeper。
在每台服务器上创建一个目录来存储 Zookeeper 数据:
mkdir -p /data/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
说明:
server1_ip
、server2_ip
和 server3_ip
分别替换为 3 台服务器的 IP 地址。2888
和 3888
是 Zookeeper 的内部通信端口。在每台服务器上,根据节点 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 上
1
、2
、3
分别对应zookeeper.properties
中的server.1
、server.2
、server.3
。
在每台服务器上启动 Zookeeper:
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
验证 Zookeeper 是否启动成功:
netstat -tnlp | grep 2181
在每台服务器上为 Kafka 创建数据存储目录:
mkdir -p /data/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
说明:
broker.id
:每个 Kafka Broker 都需要唯一的 ID。zookeeper.connect
:指定 Zookeeper 集群的地址。listeners
和 advertised.listeners
:设置 Kafka 的监听地址。在每台服务器上启动 Kafka:
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
验证 Kafka 是否启动成功:
netstat -tnlp | grep 9092
在任意一台服务器上运行以下命令创建一个主题:
/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
参数说明:
--topic test-topic
:主题名称。--partitions 3
:主题分区数。--replication-factor 2
:副本因子(每个分区有 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 发送的消息。
你的服务器有两块硬盘(1TB SSD 和 4TB SATA),可以按以下方式规划:
/data/zookeeper
)。/data/kafka
)。确保在 server.properties
和 zookeeper.properties
中配置了正确的路径。
Kafka 自带工具可以提供一些基本的操作和监控功能:
查看 Kafka 主题详情:
/opt/kafka/bin/kafka-topics.sh --describe --topic test-topic --bootstrap-server server1_ip:9092
Kafka Manager 是一个开源的 Kafka 集群管理工具,可以更方便地监控和管理 Kafka 集群:
通过上述步骤,你可以在 3 台服务器上部署一个高可用的 Kafka 集群:
这种配置适合开发、测试和生产环境,具有良好的性能和容错能力。