Kafka-单机安装&集群安装

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

我们上一章介绍了中间件:Zookeeper,本章将介绍另外一个中间件:Kafka。目前这2个中间件都是基于JAVA语言。

本小节我们将进行Kafka的安装,截止到2025年,最新的Kafka最新版本默认不依赖Zookeeper,而由于刚刚发布,我们业务使用的大部分版本应该都是需要依赖的ZooKeeper的版本。我们选择的是2.8.2版本,这个版本开始可以不依赖Zookeeper,我们后期有需要可以调整。

一、准备工作

1.安装JAVA环境

yum -y install java-1.8.0-openjdk

2.安装ZooKeeper

这里为了方便测试,只启动了单机版的Zookeeper,更详细的说明可以查看我们的历史文章:ZooKeeper安装

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.1-bin.tar.gz
cd apache-zookeeper-3.8.1-bin/conf
cp zoo_sample.cfg zoo.cfg
../bin/zkServer.sh  start

​​​​​​3.准备Kafka

wget https://archive.apache.org/dist/kafka/2.8.2/kafka_2.13-2.8.2.tgz
tar xvf kafka_2.13-2.8.2.tgz

二、单机启动

由于是单机启动,并且ZooKeeper也刚好在本机,所以我们默认不需要修改任何配置就可以直接启动。如果不在一起则修改配置文件:config/server.properties文件。​​​​​​​

[root@localhost ~]# cd kafka_2.13-2.8.2
[root@localhost kafka_2.13-2.8.2]# ls
bin  config  hs_err_pid1470.log  libs  LICENSE  licenses  logs  NOTICE  site-docs
[root@localhost kafka_2.13-2.8.2]# bin/kafka-server-start.sh config/server.properties
#启动成功的日志
[2025-05-05 23:39:57,490] INFO Kafka version: 2.8.2 (org.apache.kafka.common.utils.AppInfoParser)
[2025-05-05 23:39:57,490] INFO Kafka commitId: 3146c6ff4a24cc24 (org.apache.kafka.common.utils.AppInfoParser)
[2025-05-05 23:39:57,490] INFO Kafka startTimeMs: 1746459597487 (org.apache.kafka.common.utils.AppInfoParser)
[2025-05-05 23:39:57,492] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
[2025-05-05 23:39:57,546] INFO [broker-0-to-controller-send-thread]: Recorded new controller, from now on will use broker localhost:9092 (id: 0 rack: null) (kafka.server.BrokerToControllerRequestThread)
#zk里面写入了数据
#由于没有修改任何配置,所有数据都被写在根目录下(zk)
#为了方便管理,可以把所有数据都写某一个固定目录,比如/kafka
[zk: localhost:2181(CONNECTED) 0] ls /
[admin, brokers, cluster, config, consumers, controller, controller_epoch, feature, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
[zk: localhost:2181(CONNECTED) 1] 

​​​​​​​​​​​​​​

三、集群启动

这里我清理单机的历史数据,并且为了方便管理只修改了存储zk的路径,其他都没有修改。其实对于Kafka来说,它的集群和ZooKeeper集群还不一样,ZooKeeper集群以节点或者说进程为主,而Kafka则是里面的以Topic的分区来识别。​​​​​​​

#配置修改
vi config/server.properties
#每个节点需要不一样,这里以0,1,2 来区分
broker.id=0  #其他2个是1 和2 
#这里为了好区分把写入的zk的路径进行了区分
zookeeper.connect=192.168.31.143:2181/kafka
#这里需要换成真实的ip地址 ,否则你可能会遇到坑 
listeners=PLAINTEXT://192.168.31.145:9092

分别启动

#3台节点启动kafka
./bin/kafka-server-start.sh config/server.properties

​​​​​​​

四、检查集群

 ./bin/kafka-broker-api-versions.sh \
 --bootstrap-server 192.168.31.145:9092

图片

ZooKeeper里面的数据可以看到这个集群有3个节点,及3个节点的链接地址。这样我们就完成了集群版的Kafka的启动,为了方便演示和降低难度,这里我们以最少修改配置启动集群。

#zk里面的数据
[zk: localhost:2181(CONNECTED) 15] get /kafka/brokers/ids/2
{"features":{},"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://192.168.31.145:9092"],"jmx_port":-1,"port":9092,"host":"192.168.31.145","version":5,"timestamp":"1746462680835"}
[zk: localhost:2181(CONNECTED) 16] get /kafka/brokers/ids/1
{"features":{},"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://192.168.31.144:9092"],"jmx_port":-1,"port":9092,"host":"192.168.31.144","version":5,"timestamp":"1746462677744"}
[zk: localhost:2181(CONNECTED) 17] get /kafka/brokers/ids/0
{"features":{},"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://192.168.31.143:9092"],"jmx_port":-1,"port":9092,"host":"192.168.31.143","version":5,"timestamp":"1746462652017"}

​​​​​​​

当然我们这里的启动都是以前台方式启动的,实际环境还需要换成后台或者使用systemctl方式启动。这里启动成功以后,我们就需要往里面写数据,下个小节我们讲解主题消息(Topic)。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值