Kafka依赖Java运行时环境(JRE),推荐使用OpenJDK 8或11(兼容性更好)。
sudo apt update
sudo apt install openjdk-11-jdk -y # 推荐使用OpenJDK 11
java -version # 验证安装(输出需包含Java版本信息)
注:若使用OpenJDK 8,将命令中的openjdk-11-jdk替换为openjdk-8-jdk。
从Apache Kafka官网下载最新稳定版本(如3.7.0),解压至指定目录(如/opt/kafka)。
wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz # 替换为最新版本链接
tar -xzvf kafka_2.13-3.7.0.tgz
sudo mv kafka_2.13-3.7.0 /opt/kafka # 移动至/opt目录(系统级软件推荐路径)
Kafka通过Zookeeper实现集群管理和协调,需先配置Zookeeper。
sudo mkdir -p /opt/zookeeper/data # 存储Zookeeper数据
sudo cp /opt/kafka/config/zoo_sample.cfg /opt/kafka/config/zoo.cfg # 复制模板
sudo vi /opt/kafka/config/zoo.cfg # 编辑配置
修改以下内容(根据实际路径调整):dataDir=/opt/zookeeper/data # 数据存储路径
clientPort=2181 # 客户端连接端口
tickTime=2000 # 心跳间隔(毫秒)
initLimit=10 # 初始化连接超时(心跳数)
syncLimit=5 # 同步超时(心跳数)
/opt/kafka/bin/zkServer.sh start # 启动Zookeeper
netstat -nap | grep 2181 # 验证端口(需显示LISTEN状态)
编辑Kafka主配置文件server.properties,设置关键参数:
sudo vi /opt/kafka/config/server.properties
修改以下核心配置(按需调整):
# Broker唯一标识(集群中需唯一)
broker.id=0
# 监听地址(单机用localhost,集群用服务器IP)
listeners=PLAINTEXT://localhost:9092
# 对外公布的地址(集群中需指向服务器IP,供其他Broker访问)
advertised.listeners=PLAINTEXT://your_server_ip:9092
# 日志存储目录(需提前创建)
log.dirs=/opt/kafka/logs
# Zookeeper连接地址(集群中需列出所有Zookeeper节点)
zookeeper.connect=localhost:2181
# 允许删除Topic(生产环境建议关闭)
delete.topic.enable=true
# 日志保留时间(小时,默认168小时=7天)
log.retention.hours=168
将Kafka和Zookeeper路径添加至系统环境变量,方便全局调用。
sudo vi /etc/profile # 编辑全局环境变量
在文件末尾添加:
export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin
export ZOOKEEPER_HOME=/opt/kafka # Zookeeper与Kafka同目录时无需额外配置
使配置生效:
source /etc/profile
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
ps aux | grep kafka # 查看是否有kafka进程
netstat -nap | grep 9092 # 验证Kafka端口(需显示LISTEN状态)
/opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
输入消息(如Hello Kafka),按Ctrl+D结束输入。/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
应能看到生产者发送的消息,验证Kafka通信正常。通过systemd创建服务单元,实现Kafka和Zookeeper开机自动启动。
sudo vi /etc/systemd/system/zookeeper.service
添加以下内容:[Unit]
Description=Apache Zookeeper server
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/kafka/bin/zkServer.sh start
ExecStop=/opt/kafka/bin/zkServer.sh stop
Restart=always
[Install]
WantedBy=multi-user.target
sudo vi /etc/systemd/system/kafka.service
添加以下内容:[Unit]
Description=Apache Kafka Server
After=zookeeper.service
[Service]
Type=simple
User=root
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload # 重新加载systemd配置
sudo systemctl enable zookeeper # 开机自启Zookeeper
sudo systemctl enable kafka # 开机自启Kafka
sudo systemctl start zookeeper # 启动Zookeeper
sudo systemctl start kafka # 启动Kafka
以上步骤覆盖了Ubuntu下Kafka的基础配置流程,可根据实际需求调整参数(如集群配置、安全设置等)。配置完成后,即可通过Kafka API或命令行工具进行消息生产和消费。