在 Debian 上搭建高可用 Kafka 集群
一 架构与准备
sudo apt update && sudo apt install -y openjdk-17-jdksudo useradd -m -s /bin/bash kafkasudo mkdir -p /opt/kafka /data/kafka-logs /data/kafka-metasudo chown -R kafka:kafka /opt/kafka /data/kafka-logs /data/kafka-meta二 部署方式一 KRaft 模式(Kafka 4.x 推荐)
cd /opt && curl -O https://downloads.apache.org/kafka/4.1.1/kafka_2.13-4.1.1.tgztar -xzf kafka_2.13-4.1.1.tgz && ln -s kafka_2.13-4.1.1 kafkachown -R kafka:kafka /opt/kafka*scp -r 将解压目录分发到 kafka-2 / kafka-3,并创建软链 /opt/kafkasu - kafka -c "cd /opt/kafka && bin/kafka-storage.sh random-uuid"process.roles=broker,controller
controller.quorum.voters=1@kafka-1:9093,2@kafka-2:9093,3@kafka-3:9093
controller.listener.names=CONTROLLER
listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
inter.broker.listener.name=PLAINTEXT
log.dirs=/data/kafka-logs
node.id=1,advertised.listeners=PLAINTEXT://192.168.10.11:9092node.id=2,advertised.listeners=PLAINTEXT://192.168.10.12:9092node.id=3,advertised.listeners=PLAINTEXT://192.168.10.13:9092su - kafka -c "cd /opt/kafka && bin/kafka-storage.sh format -t <ClusterID> -c config/kraft/server.properties"su - kafka -c "cd /opt/kafka && bin/kafka-server-start.sh -daemon config/kraft/server.properties"ss -lntp | grep -E ':(9092|9093)',应看到 9092/9093 处于监听状态。三 部署方式二 ZooKeeper 模式(Kafka 2.x/3.x)
conf/zoo.cfg:tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/lib/zookeeper
clientPort=2181
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888
dataDir 下创建文件 myid,内容分别为 1/2/3bin/zkServer.sh start;bin/zkServer.sh statusconfig/server.properties:broker.id=<唯一ID: 0/1/2>
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<本机IP>:9092
log.dirs=/var/lib/kafka/logs
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
bin/kafka-server-start.sh -daemon config/server.propertiesss -lntp | grep 9092;创建测试 Topic:
bin/kafka-topics.sh --create --topic test --partitions 3 --replication-factor 3 --zookeeper zk1:2181四 验证与常用运维命令
--bootstrap-server;ZooKeeper 使用 --zookeeper):
bin/kafka-topics.sh --bootstrap-server 192.168.10.11:9092 --listbin/kafka-topics.sh --zookeeper zk1:2181 --listbin/kafka-topics.sh --bootstrap-server 192.168.10.11:9092 --describe --topic testbin/kafka-topics.sh --zookeeper zk1:2181 --describe --topic testbin/kafka-console-producer.sh --bootstrap-server 192.168.10.11:9092 --topic testbin/kafka-console-consumer.sh --bootstrap-server 192.168.10.11:9092 --topic test --from-beginning