一、前置准备:安装Java环境 Kafka依赖Java运行环境,推荐使用OpenJDK 11(兼容性更好)。执行以下命令安装:
sudo apt update
sudo apt install -y openjdk-11-jdk
# 验证安装
java -version
确保输出显示Java版本为11及以上。
二、安装并配置Zookeeper(Kafka依赖组件) Kafka需要Zookeeper管理集群元数据,以下是基础配置步骤:
/opt目录:wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
tar -xzvf apache-zookeeper-3.7.0-bin.tar.gz
sudo mv apache-zookeeper-3.7.0 /opt/zookeeper
sudo mkdir -p /opt/zookeeper/data
sudo cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
编辑zoo.cfg,设置数据目录和客户端端口:sudo nano /opt/zookeeper/conf/zoo.cfg
修改以下内容(关键参数):dataDir=/opt/zookeeper/data
clientPort=2181
/opt/zookeeper/bin/zkServer.sh start
# 验证状态
/opt/zookeeper/bin/zkServer.sh status
若输出显示“Mode: standalone”,则表示启动成功。三、下载并解压Kafka
从Apache官网下载最新稳定版(如3.7.0),解压至/opt目录:
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
四、配置Kafka Broker(核心步骤)
编辑Kafka配置文件/opt/kafka/config/server.properties,设置以下关键参数:
sudo nano /opt/kafka/config/server.properties
broker.id=0(集群中需唯一);listeners=PLAINTEXT://your_server_ip:9092(替换为服务器实际IP,若本地测试可用localhost);advertised.listeners=PLAINTEXT://your_server_ip:9092(客户端连接的地址);log.dirs=/tmp/kafka-logs(建议改为永久目录如/var/lib/kafka,并创建目录);zookeeper.connect=localhost:2181(若Zookeeper在远程服务器,替换为对应IP);num.partitions=3(根据并发需求调整,建议≥3)、default.replication.factor=1(单节点设为1,集群设为≥2)。五、配置环境变量(可选但推荐) 为方便全局使用Kafka命令,将Kafka路径添加至环境变量:
sudo nano /etc/profile
在文件末尾添加:
export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin
使配置生效:
source /etc/profile
六、启动Kafka服务
# 后台启动Kafka
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
# 验证启动状态
ps -ef | grep kafka
# 查看Kafka监听端口
sudo netstat -tulnp | grep 9092
七、测试Kafka功能
/opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3 --topic test_topic
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test_topic
输入测试消息(如“Hello Kafka”)。/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic --from-beginning
应能看到生产者发送的消息。八、优化配置(提升性能与稳定性)
echo "kafka - nofile 65535" | sudo tee -a /etc/security/limits.conf
ulimit -n 65535
sudo sysctl -w vm.swappiness=10
sudo sysctl -w vm.dirty_background_ratio=5
sudo sysctl -w vm.dirty_ratio=10
num.network.threads=8(处理网络请求)、num.io.threads=16(处理磁盘IO,建议为CPU核心数的1-2倍);log.retention.hours=168(保留7天)、log.segment.bytes=1073741824(单个日志段1GB,避免过多小文件);compression.type=lz4(减少网络传输开销,提升吞吐量);batch.size=1048576(1MB,提升生产者吞吐量)、linger.ms=100(等待100ms批量发送,平衡延迟与吞吐量)。九、配置开机自启(可选但推荐) 创建systemd服务文件,实现Kafka与Zookeeper开机自动启动:
sudo nano /etc/systemd/system/zookeeper.service
添加以下内容:[Unit]
Description=Zookeeper Service
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
User=zookeeper
Group=zookeeper
Restart=always
[Install]
WantedBy=multi-user.target
sudo nano /etc/systemd/system/kafka.service
添加以下内容:[Unit]
Description=Kafka Service
After=zookeeper.service
[Service]
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
User=kafka
Group=kafka
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable zookeeper kafka
sudo systemctl start zookeeper kafka