在 Ubuntu 上部署与配置 Kafka 的完整步骤
一 环境准备
sudo apt update && sudo apt install -y openjdk-11-jdkjava -versionsudo useradd -m -s /bin/bash kafka && sudo usermod -aG sudo kafkasudo mkdir -p /opt/kafka/{data,logs} && sudo chown -R kafka:kafka /opt/kafkawget https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgztar -xzf kafka_2.13-3.5.1.tgz && sudo mv kafka_2.13-3.5.1 /opt/kafkaecho 'export KAFKA_HOME=/opt/kafka' >> ~/.bashrc && echo 'export PATH=$PATH:$KAFKA_HOME/bin' >> ~/.bashrc && source ~/.bashrc二 单机部署与快速验证
cd /opt/kafka && bin/zookeeper-server-start.sh config/zookeeper.propertiesbin/kafka-server-start.sh config/server.propertiesbin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1bin/kafka-console-producer.sh --topic test --bootstrap-server localhost:9092bin/kafka-console-consumer.sh --topic test --bootstrap-server localhost:9092 --from-beginning三 集群部署要点
config/zookeeper.properties:
dataDir=/opt/zookeeper/dataclientPort=2181server.1=192.168.1.11:2888:3888server.2=192.168.1.12:2888:3888server.3=192.168.1.13:2888:3888dataDir 下创建 myid 文件,写入各自的 server.x 编号(如节点1写入 1)。config/server.properties:
broker.id=<本机唯一ID>listeners=PLAINTEXT://:<本机IP或0.0.0.0>:9092advertised.listeners=PLAINTEXT://<本机对外IP>:9092log.dirs=/opt/kafka/datazookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181bin/kafka-topics.sh --create --topic test --bootstrap-server <任一BrokerIP>:9092 --partitions 3 --replication-factor 3四 常用配置与优化
broker.id:每个 Broker 的唯一标识(集群内唯一)。listeners:监听地址与端口(如 PLAINTEXT://0.0.0.0:9092)。advertised.listeners:对外暴露地址(客户端实际连接地址,云服务器务必填公网或内网可达 IP)。log.dirs:消息日志目录(建议使用独立磁盘)。num.partitions:新建 Topic 的默认分区数(默认 1)。log.retention.hours:日志保留时长(默认 168 小时)。log.segment.bytes:段文件大小(默认 1GB)。bin/kafka-server-start.sh,调整 KAFKA_HEAP_OPTS(如 -Xmx2G -Xms2G)以缓解内存不足。server.properties 增加 delete.topic.enable=true(新版本默认已支持)。五 服务化与运维
/etc/systemd/system/zookeeper.service:[Unit]
Description=Apache Zookeeper
After=network.target
[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
/etc/systemd/system/kafka.service:[Unit]
Description=Apache Kafka
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reloadsudo systemctl enable --now zookeeper kafkasudo ufw allow 2181/tcpsudo ufw allow 9092/tcpsudo ufw reloadbin/kafka-topics.sh --list --bootstrap-server localhost:9092bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list