在Debian系统上部署Apache Kafka时,以下是一些最佳实践:
sudo apt update
sudo apt install openjdk-11-jdk
java -version
wget https://downloads.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz
tar -xzf kafka_2.13-3.2.0.tgz
cd kafka_2.13-3.2.0
/etc/profile
文件中添加Kafka的安装目录和命令文件所在目录。export KAFKA_HOME=/path/to/kafka
export PATH=$PATH:$KAFKA_HOME/bin
source /etc/profile
listeners=PLAINTEXT://:9092
。advertised.listeners=PLAINTEXT://your.kafka.host:9092
。zookeeper.connect=localhost:2181
。wget https://downloads.apache.org/zookeeper/stable/apache-zookeeper-3.7.0-bin.tar.gz
tar -xvzf apache-zookeeper-3.7.0-bin.tar.gz
cd apache-zookeeper-3.7.0-bin
编辑conf/zoo.cfg
配置文件,设置以下配置项:tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/lib/zookeeper
clientPort=2181
server.1=zk-node1:2888:3888
server.2=zk-node2:2888:3888
server.3=zk-node3:2888:3888
在每个Zookeeper节点上启动Zookeeper:bin/zkServer.sh start
bin/zkServer.sh status
wget https://downloads.apache.org/kafka/2.8.0/kafka_2.13-2.8.0.tgz
tar -xzf kafka_2.13-2.8.0.tgz
cd kafka_2.13-2.8.0
编辑config/server.properties
配置文件,设置以下配置项:broker.id=1
listeners=PLAINTEXT://kafka-node1:9092
log.dirs=/var/lib/kafka/logs
zookeeper.connect=zk-node1:2181,zk-node2:2181,zk-node3:2181
在每个Kafka节点上启动Kafka Broker:bin/kafka-server-start.sh config/server.properties
kafka-topics --create --topic my-topic --partitions 3 --replication-factor 3 --bootstrap-server localhost:9092
kafka-topics --alter --topic my-topic --partitions 3 --replication-factor 3 --bootstrap-server localhost:9092
num.partitions
:根据消费者线程数设置分区个数,以充分利用多核CPU。num.io.threads
:设置为总核数的50%,负责写磁盘。num.replica.fetchers
:设置为总核数的1/3。num.network.threads
:设置为总核数的2/3。compression.type
:使用lz4等压缩类型减少数据量,提升吞吐量。acks
:根据业务需求设置为all或1,平衡可靠性和性能。buffer.memory
:根据业务场景估算,建议64M以上。batch.size
:设置为1M,以减少网络开销和提高吞吐量。linger.ms
:设置为100ms以上,以允许批量发送。compression.type
:使用lz4等压缩类型。acks
:设置为all以确保消息可靠性。fetch.min.bytes
:设置为1M,以减少网络请求次数。fetch.max.wait.ms
:设置为1000ms,以平衡延迟和吞吐量。fetch.max.bytes
:设置为1M,以减少网络开销。max.poll.records
:设置为2000,以减少每次poll调用返回的记录数。通过以上步骤和配置,可以在Debian系统上成功部署和优化Kafka集群,确保其高可用性、性能和可靠性。