前言
以kafka_2.13-2.8.0版本做示例,安装架构图如下所示,4台服务器,4个节点的Zookeeper集群(1主2从1观察)以及3个Kafka服务。
准备工作
- 准备多台服务器来搭建集群环境
- 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 停止生产者和消费者
- 清空数据
rm -rf /var/kafka-logs