【Kafka】(一)Kafka的单机配置,以及集群环境部署

1. 环境介绍

Kafka在2.8版本之前是必须使用zookeeper(后面统称为ZK)作为数据存储的节点的,需要把Kafka中一些重要的数据存储在ZK中,在2.8版本之后,Kafka提出了去ZK化,将重要的数据存储在自身的节点中了,本篇博客还是以ZK作为重要数据存储节点来搭建,后续的博客中,我会将不用ZK搭建的Kafka教程也更新出来,如果有兴趣的可以关注我一下,后面我将持续的更新。

2.部署前的准备

我们这次搭建的是2台kafka集群以及1台ZK节点,使用2台centos7的虚拟机,ZK的集群部署在后面的博客中我会更新,我们先用1台ZK节点,在配置中的区别不大。

  • centos7中JDK环境的搭建:这里可以参考我的CI/CD专栏中jenkins那篇博客,里面有安装JDK环境的教程

  • Kafka版本3.0.0:Kafka3.0.0下载地址
    在这里插入图片描述

  • ZK版本3.5.9:Zookeeper3.5.9下载地址
    在这里插入图片描述

  • 2台虚拟机(Centos7系统),命名为centos1和centos2
    在这里插入图片描述
    为了我们后续使用方便,我们将虚拟机设置成NAT模式,并且把IP地址给固定一下,虚拟机还不会使用的,可以从我的博客中的工具专栏里面找到安装的方法。下面我们教一下如何设置主机名和固定IP地址

设置主机名

配置主机名
在这里插入图片描述
配置完主机名之后需要重启一下虚拟机

固定IP

vi  /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述
各位根据自己虚拟机的真实情况编写,可能网关和可以分配的IP和我这里不一样。可在虚拟机的虚拟网络编辑器中查看
另一台虚拟机的地址,我这里设置成了192.168.181.129

设置完成之后,记得重启一下网络的服务

systemctl restart network.service

3. 搭建kafka集群

将我们下载的压缩包上传到服务器中
在这里插入图片描述

3.1 解压压缩包

解压压缩包到 /usr/local 目录下

tar -zxvf /home/kafka/kafka_2.12-3.0.0.tgz -C /usr/local
tar -zxvf /home/zookeeper/apache-zookeeper-3.7.0-bin.tar.gz -C /usr/local

解压后把文件改一下名称

mv apache-zookeeper-3.7.0-bin zookeeper
mv kafka_2.12-3.0.0 kafka

此时,/usr/local 下的目录结构应该是这个样子的,
在这里插入图片描述

3.2 搭建Zookeeper

1.在zookeeper目录中新建一个data文件夹

mkdir /usr/local/zookeeper/data

2.接下来配置zookeeper的配置文件,首先我们先将zoo_sample.cfg文件复制一份出来

cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg

3.接下来,我们编辑 zoo.cfg文件

vi /usr/local/zookeeper/conf/zoo.cfg

修改存放数据的目录为我们刚刚新建的data目录
在这里插入图片描述
退出保存 !wq
4.为了让我们在任何的目录下都能使用ZK的命令,这里我们需要配置一下ZK的环境变量

vi /etc/profile

在文件中添加如下的配置

#zookeeper environment
export ZK_HOME=/usr/local/zookeeper
export PATH=$PATH:${ZK_HOME}/bin

在这里插入图片描述
退出保存 !wq
使配置文件生效

source /etc/profile

5.接下来,启动一下我们ZK试试

zkServer.sh start 

看到如下的信息,基本表示我们的ZK已经启动成功了
在这里插入图片描述
6.为了验证一下 ,我们连接一下ZK试试

zkCli.sh

这里看到,我们已经进入了ZK的命令行,表示ZK已经搭建成功了
在这里插入图片描述

3.3 搭建Kafka集群

1.配置Kafka的环境变量

vi /etc/profile

添加如下信息

#Kafka environment
export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:${KAFKA_HOME}/bin

配置生效

source /etc/profile

2.在Kafka文件夹中新建一个data目录存放数据

mkdir -p /usr/local/kafka/data

3.编辑Kafka的配置文件

vi /usr/local/kafka/config/server.properties

这里关注4个参数

# kafka集群中的唯一ID
broker.id=0
# kafka节点的IP地址
listeners=PLAINTEXT://192.168.181.128:9092
# kafka存储数据的地址
log.dirs=/usr/local/kafka/data
# ZK节点地址
zookeeper.connect=192.168.181.128:2181/kafka
# 如果这里配置的是ZK的集群,后面的地址用逗号分隔,例如192.168.181.128:2181,192.168.181.129:2181/kafka,后面的/kafka目录是指定在ZK中把Kafka中的数据全部存在这个目录下,如果后面我们不用Kakfa了,方便把ZK的数据给清理一下

4.启动Kafka,看看能不能工作

kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties

在这里插入图片描述
这里看到我们的kafka已经启动起来了

5.我们将我们配置好kafka文件发送到centos2这台机器

scp -r /usr/local/kafka/ root@192.168.181.129:/usr/local/kafka/

我这里配置ssh免密登陆,如果没有配置的可以参考的我的linux专栏中的文章,没有配置的需要输入一下另一台机器的密码

6.将另一台机器的配置修改一下
环境变量这些就不说了,和上面的一样,主要修改一下kafka中的server.properties

vi /usr/local/kafka/config/server.properties

主要修改以下几个参数

# 因为刚刚的那台Kakfa我们设置成了0,所以这台我们设置成1
broker.id=1
# 配置成本台机器的地址
listeners=PLAINTEXT://192.168.181.129:9092

7.启动第二台Kafka

 kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties

这里可能有的人会启动不起来,因为我们刚刚把centos1这台机器的kafka发送到centos2,centos1这台机器中data文件夹已经有数据了,所以启动不起来,只要把centos2kafka里面的 data文件夹给删除重新建一下就好了
8.在centos1机器中ZK节点中查看一下borkers,看看是不是有两台Kafka节点连了上来

zkCli.sh
ls /kafka/brokers/ids

在这里插入图片描述
可以看到,我们的kafka数据全部存到了ZK中的kafka目录中,并且brokers里面已经有两台机器注册进来了。

4. 简单的生产者消费者测试

1 我们在128的这台节点上新建一个first主题

kafka-topics.sh --bootstrap-server 192.168.181.128:9092 --create --topic first --partitions 2 --replication-factor  2

2.我们试试在129这台机器上能不能看到这个主题

kafka-topics.sh --bootstrap-server 192.168.181.129:9092 --list

kafka-topics.sh --bootstrap-server 192.168.181.129:9092 --topic  first --describe

在这里插入图片描述
可以看到,我们集群环境已经搭建成功了,两台机器的数据是互通的
3.我们在128上作为提供者,在129上消费看看能不能成功

生产者

kafka-console-producer.sh --bootstrap-server 192.168.181.128:9092 --topic first

消费者

kafka-console-consumer.sh --bootstrap-server 192.168.181.129:9092 --topic first

在这里插入图片描述
在这里插入图片描述
可以看到,我们在128往first主题发送信息,在129的broker中依然可以接收到,说明我们的集群环境搭建成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值