Kafka在CentOS上的配置方法
在CentOS系统上配置Kafka需完成环境准备、下载解压、参数配置、服务启动及验证等步骤,以下是详细流程:
Kafka依赖Java运行环境(建议使用Java 8及以上版本),通过YUM包管理器安装OpenJDK:
sudo yum install java-1.8.0-openjdk-devel -y
# 验证安装
java -version
确保输出显示Java版本信息,否则无法启动Kafka。
从Apache Kafka官网下载最新稳定版本(如3.5.2),解压至指定目录(如/opt/kafka):
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
tar -zxvf kafka_2.12-3.5.2.tgz
sudo mv kafka_2.12-3.5.2 /opt/kafka
建议将Kafka安装至系统目录(如/opt),便于后续管理。
Kafka通过Zookeeper实现集群管理和协调,需先配置Zookeeper:
/opt/kafka/config/zookeeper.properties,设置数据目录和客户端端口:dataDir=/tmp/zookeeper # 数据存储路径(需提前创建并授权)
clientPort=2181 # 客户端连接端口
maxClientCnxns=0 # 最大客户端连接数(0表示无限制)
sudo mkdir -p /tmp/zookeeper
sudo chown $(whoami):$(whoami) /tmp/zookeeper # 授权当前用户
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties &
后台运行Zookeeper(&表示后台进程)。Kafka的核心配置文件为/opt/kafka/config/server.properties,需修改以下关键参数:
broker.id=0(集群中每个Broker需设置不同ID,如0、1、2);listeners=PLAINTEXT://your_server_ip:9092(Broker监听的IP和端口,your_server_ip替换为服务器实际IP);advertised.listeners=PLAINTEXT://your_server_ip:9092(客户端连接的Broker地址,需与listeners一致);log.dirs=/tmp/kafka-logs(Topic数据存储路径,需提前创建并授权);zookeeper.connect=localhost:2181(Zookeeper集群地址,多节点用逗号分隔,如zookeeper1:2181,zookeeper2:2181,zookeeper3:2181)。示例配置(单节点):
broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://your_server_ip:9092
log.dirs=/tmp/kafka-logs
zookeeper.connect=localhost:2181
num.partitions=1 # 默认分区数
default.replication.factor=1 # 默认副本因子(单节点设为1)
min.insync.replicas=1 # 最小同步副本数(单节点设为1)
修改完成后保存文件。
在终端中执行以下命令启动Kafka Broker(后台运行):
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties &
若需停止Kafka,可执行:
/opt/kafka/bin/kafka-server-stop.sh
通过创建Topic、发送/接收消息验证Kafka是否正常运行:
/opt/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
应输出test,表示Topic创建成功。/opt/kafka/bin/kafka-console-producer.sh --topic test --bootstrap-server localhost:9092
在控制台输入消息(如Hello Kafka)并按回车键发送。/opt/kafka/bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092
应显示之前发送的Hello Kafka,验证消息收发正常。若服务器启用了防火墙(如CentOS 7+的firewalld),需开放Kafka端口(默认9092):
sudo firewall-cmd --zone=public --add-port=9092/tcp --permanent # 永久开放端口
sudo firewall-cmd --reload # 重新加载防火墙规则
若系统启用了SELinux,需调整策略允许Kafka网络连接:
sudo setsebool -P httpd_can_network_connect 1
以上步骤完成后,即可在CentOS上成功配置并运行Kafka。如需搭建集群,需在多台服务器上重复上述步骤,配置不同的broker.id和advertised.listeners,并在zookeeper.connect中添加所有Zookeeper节点地址。