在Debian系统上配置Apache Kafka的高可用性(HA)涉及多个步骤,包括设置Zookeeper集群、Kafka broker集群以及相关的配置。以下是一个基本的指南:
Kafka需要Java运行环境,首先确保你的Debian系统上安装了Java。
sudo apt update
sudo apt install openjdk-11-jdk
从Apache Kafka官网下载最新版本的Kafka,并解压到你的服务器上。
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
Kafka使用Zookeeper来管理集群状态。你需要配置多个Zookeeper实例来确保高可用性。
在每个Zookeeper节点上创建数据目录。
mkdir -p /var/lib/zookeeper/data
mkdir -p /var/log/zookeeper
在每个Zookeeper节点上创建zoo.cfg文件,并添加以下内容:
tickTime=2000
dataDir=/var/lib/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
在每个节点上创建myid文件,内容为该节点的ID(例如,在zoo1上创建/var/lib/zookeeper/data/myid,内容为1)。
在每个节点上启动Zookeeper服务。
bin/zkServer.sh start
在每个Kafka broker节点上进行配置。
在每个Kafka节点上创建数据目录。
mkdir -p /var/lib/kafka/data
mkdir -p /var/log/kafka
编辑config/server.properties文件,添加或修改以下配置:
broker.id=1 # 每个broker的唯一ID
listeners=PLAINTEXT://:9092
log.dirs=/var/lib/kafka/data
zookeeper.connect=zoo1:2181,zoo2:2181,zoo3:2181
default.replication.factor=3
min.insync.replicas=2
在每个broker节点上,将broker.id设置为不同的值(例如,分别为1、2、3)。
在每个节点上启动Kafka broker服务。
bin/kafka-server-start.sh config/server.properties
使用Kafka自带的工具验证集群状态。
bin/kafka-topics.sh --bootstrap-server zoo1:2181 --list
你应该能够看到所有的topic列表。
创建一个高可用的topic。
bin/kafka-topics.sh --bootstrap-server zoo1:2181 --create --topic my-topic --partitions 3 --replication-factor 3
验证topic是否正确复制到所有broker。
bin/kafka-topics.sh --bootstrap-server zoo1:2181 --describe --topic my-topic
你应该看到每个partition的leader和replicas都分布在不同的broker上。
通过以上步骤,你可以在Debian系统上配置一个高可用的Kafka集群。确保在生产环境中使用SSL/TLS加密通信,并定期备份Zookeeper和Kafka的数据目录。