前言

以kafka_2.13-2.8.0版本做示例,安装架构图如下所示,4台服务器,4个节点的Zookeeper集群(1主2从1观察)以及3个Kafka服务。

image-20210916141520025

准备工作

  • 准备多台服务器来搭建集群环境
  • Kafka需要Zookeeper做分布式协调,所以得先准备好Zookeeper集群。可以参考 在Linux搭建Zookeeper集群
  • 给系统配置hosts简化后续配置,实际IP根据自己情况修改
echo "追加hosts配置" > /dev/null
echo '
192.168.252.131 node1
192.168.252.132 node2
192.168.252.133 node3
192.168.252.134 node4' >> /etc/hosts

echo "使hosts配置生效" > /dev/null
/etc/init.d/network restart

安装和配置

下载、解压安装包

echo "创建安装目录" > /dev/null
mkdir /opt/soft

echo "下载编译后的包" > /dev/null
wget -P ~/soft/kafka https://dlcdn.apache.org/kafka/2.8.0/kafka_2.13-2.8.0.tgz

echo "解压到安装目录下" > /dev/null
tar -xf ~/soft/kafka/kafka_2.13-2.8.0.tgz -C /opt/soft/

编辑配置,除了broker.id其他的配置一般都是一样的

echo "备份配置文件" > /dev/null
cp /opt/soft/kafka_2.13-2.8.0/config/server.properties /opt/soft/kafka_2.13-2.8.0/config/server.properties.bak

echo "编辑配置文件" > /dev/null
vim /opt/soft/kafka_2.13-2.8.0/config/server.properties
# 每个Kafka配置一个唯一的ID
broker.id=0
# 监听的端口号
listeners=PLAINTEXT://:9092
# 数据存放目录
log.dirs=/var/lib/kafka-logs
# Zookeeper集群地址,/kafka代表数据存放目录,避免和其他应用混淆
zookeeper.connect=node1:2181,node2:2181,node3:2181/kafka

scp 将安装文件复制到其他服务器

echo "将安装文件复制到其他服务器" > /dev/null
scp -r /opt/soft/kafka_2.13-2.8.0 root@node1:/opt/soft/

配置环境变量

echo "追加KAFKA_HOME环境变量" > /dev/null
echo '
export KAFKA_HOME=/opt/soft/kafka_2.13-2.8.0
export PATH=$PATH:$KAFKA_HOME/bin' >> /etc/profile

echo "使环境变量生效" > /dev/null
source /etc/profile

启动和停止

# 前台启动
kafka-server-start.sh /opt/soft/kafka_2.13-2.8.0/config/server.properties

# 后台启动
kafka-server-start.sh -daemon /opt/soft/kafka_2.13-2.8.0/config/server.properties

# 停止
kafka-server-stop.sh

测试

  • 创建Topic
# 创建名为test的topic,指明分配1个分区和1个副本
kafka-topics.sh --bootstrap-server node1:9092 --create --topic test --partitions 2 --replication-factor 2
# Created topic test.
  • 创建消费者
# 创建消费者消费test
kafka-console-consumer.sh --bootstrap-server node1:9092 --topic test
  • 创建生产者,在命令行窗口输入消息,回车发送
# 创建生产者向test生产数据
kafka-console-producer.sh --broker-list node1:9092 --topic test

可以看到发送的消息都被消费了,ctrl+c 停止生产者和消费者

image-20210923105557806

image-20210923105625014

  • 清空数据
rm -rf /var/kafka-logs

参考链接

Apache - kafka

在Linux搭建Zookeeper集群