在 Ubuntu 上部署与配置 Apache Kafka
一 环境准备与安装
sudo apt update && sudo apt install openjdk-11-jdk -yjava -versionwget https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgztar -xzf kafka_2.13-3.5.1.tgzsudo mv kafka_2.13-3.5.1 /usr/local/kafkaecho 'export KAFKA_HOME=/usr/local/kafka' >> ~/.bashrcecho 'export PATH=$PATH:$KAFKA_HOME/bin' >> ~/.bashrcsource ~/.bashrc二 配置与启动
/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.propertiesconfig/server.properties):
broker.id=0listeners=PLAINTEXT://0.0.0.0:9092advertised.listeners=PLAINTEXT://<服务器公网或内网IP>:9092log.dirs=/var/lib/kafka/logs(确保目录存在并可写)zookeeper.connect=localhost:2181/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.propertiessudo netstat -tulnp | grep 9092 应看到 :9092 处于监听状态。三 基础功能测试
--bootstrap-server):
/usr/local/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1/usr/local/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092/usr/local/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning--zookeeper localhost:2181(不推荐长期使用)。四 生产环境建议
After=network.target、Restart=on-failure 等,然后执行 sudo systemctl daemon-reload && sudo systemctl enable --now zookeeper kafka。sudo ufw allow 2181/tcp 与 sudo ufw allow 9092/tcp,并 sudo ufw reload。log.dirs 指向持久化目录(如 /var/lib/kafka/logs),并确保运行 Kafka 的用户对该目录拥有读写权限。listeners 设为 0.0.0.0:9092,advertised.listeners 设为服务器的 公网或内网 IP:9092,否则外部客户端可能无法连接。export KAFKA_HEAP_OPTS="-Xmx2G -Xms2G"num.network.threads、num.io.threads、batch.size、linger.ms、message.max.bytes、log.retention.hours、default.replication.factor、num.partitions(按业务与硬件酌情调整)。五 常见问题排查
advertised.listeners 配置为客户端可达的 IP:9092。--bootstrap-server localhost:9092;旧脚本使用 --zookeeper localhost:2181 仅作兼容。sudo netstat -tulnp | grep 9092 检查 9092 是否被 Kafka 占用,若未占用请检查 server.properties 的 listeners 与日志报错。tail -f logs/server.log,关注启动报错、磁盘空间、ZooKeeper 连通性等关键信息。