一、基础环境准备
sudo apt update && sudo apt install -y openjdk-11-jdk
验证安装:java -version(需显示Java版本信息)。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
/opt/zookeeper/conf/zoo.cfg):tickTime=2000
dataDir=/var/lib/zookeeper # 数据目录(需提前创建:sudo mkdir -p /var/lib/zookeeper)
clientPort=2181
initLimit=5
syncLimit=2
server.1=your_server_ip:2888:3888 # 集群模式下需配置多个节点
sudo /opt/zookeeper/bin/zkServer.sh start
验证状态:sudo /opt/zookeeper/bin/zkServer.sh status(需显示“Mode: leader”或“Mode: follower”)。二、Kafka核心配置(server.properties)
编辑/opt/kafka/config/server.properties(以单节点为例),关键参数如下:
broker.id=0(集群中每个Broker需唯一);listeners=PLAINTEXT://your_server_ip:9092(替换为服务器公网/内网IP);advertised.listeners=PLAINTEXT://your_server_ip:9092(客户端连接的地址);log.dirs=/var/lib/kafka/logs(需提前创建:sudo mkdir -p /var/lib/kafka/logs,并赋予权限:sudo chown -R kafka:kafka /var/lib/kafka/logs);zookeeper.connect=your_server_ip:2181(集群模式下用逗号分隔多个节点,如ip1:2181,ip2:2181,ip3:2181);log.retention.hours=168(日志保留7天,可根据需求调整);num.partitions=3(默认分区数,根据业务负载调整)、default.replication.factor=1(单节点设为1,集群设为≥2)。三、系统优化配置
/opt/kafka/bin/kafka-server-start.sh,设置堆内存(根据服务器内存调整,建议占总内存的1/4-1/2):export KAFKA_HEAP_OPTS="-Xms2G -Xmx2G" # 初始堆内存2G,最大堆内存2G
可选:添加垃圾回收器参数(如G1):-XX:+UseG1GC。echo "kafka soft nofile 65536" | sudo tee -a /etc/security/limits.conf
echo "kafka hard nofile 65536" | sudo tee -a /etc/security/limits.conf
echo "net.core.somaxconn=32768" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog=16384" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p # 生效配置
noatime选项(减少磁盘IO)。四、开机自启配置 创建systemd服务文件,实现Kafka与Zookeeper开机自动启动:
/etc/systemd/system/zookeeper.service):[Unit]
Description=Apache Zookeeper server
After=network.target
[Service]
Type=simple
User=kafka
ExecStart=/opt/zookeeper/bin/zkServer.sh start-foreground
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
/etc/systemd/system/kafka.service):[Unit]
Description=Apache Kafka Server
After=zookeeper.service
Requires=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=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable zookeeper kafka
sudo systemctl start zookeeper kafka
五、稳定运行维护
sudo systemctl status kafka;/opt/kafka/bin/kafka-topics.sh --describe --bootstrap-server your_server_ip:9092;/opt/kafka/bin/kafka-consumer-groups.sh --bootstrap-server your_server_ip:9092 --describe。log.retention.hours=168保留7天),定期清理旧日志;使用logrotate工具自动化日志轮转。/var/lib/zookeeper)和Kafka日志目录(/var/lib/kafka/logs),避免数据丢失。