kafka 3.2.0 linux部署并测试-2022-07-25

centos 安装kafka
kafka 3.2.0 linux部署并测试

前言
kafka是一个优秀的消息队列框架,现在基于linux安装写个文档记录下。

一,更新系统

对centos系统的软件进行一些更新或者升级,从而在进行安装的时候可以很快的找到安装包。

yum install epel-release -y
yum update -y 

二,安装jdk

安装jdk有两种方式,一种方式安装oracle jdk得下载安装包,第二种方式不用下载安装包,直接通过命令执行就完成安装了,安装的是openjdk。

(1) jdk安装的第一种方式

首先到Oracle官网上下载jdk,jdk 下载地址是:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 下载之后上传到centos上,接着执行本地安装jdk。

下载完成之后上传到centos,接着输入以下命令进行安装。

yum -y localinstall jdk-8u241-linux-x64.rpm

安装完成之后,接着检查一下jdk是否安装成功。

java -version

(2)jdk安装的第二种方式

使用以下得方式进行安装,就不用下载安装包,直接在centos输入命令即可完成安装。输入的命令是:

yum install -y java-1.8.0-openjdk

安装完成之后检查是否安装成功。

java -version

由于执行kafka需要配置jdk环境变量,那接下来看一下如何配置jdk变量。

三,配置Java环境变量

如何配置Java变量呢?首先我们得检查一下环境种是否有Java变量。

echo $JAVA_HOME

检查完没有配置,我们接着来配置一下环境变量,把jdk的安装路径找到,把这个路径赋值给JAVA_HOME,写入到用户主目录下的.bash_profile中或者放到/etc/profile中。通过如下命令来进行配置。

echo ``"JAVA_HOME=$(readlink -f /usr/bin/java | sed "``s:bin/java::``")"` `| sudo tee -a /etc/profile`

接着让配置文件生效。

source /etc/profile`

配置完成之后,接下来进行kafka的安装。

四,安装kafka

  1. 下载linux 安装包
    https://kafka.apache.org/downloads
    1.1. 注意下载二进制包,如果不是下载二进制包,就要自己编译了,这里不需要这么麻烦,就直接下载了。官网推荐下载2.13版本,就下载这个版本就行了。
    1.2. 注意这个版本已经内嵌了zookeeper了,不需要再去安装zookeeper了。
    1.3. 安装了jdk1.8以及以上版本,并且配置了环境变量这里就不展开了,各位自己找文档配。

2.安装步骤
1.上传二进制文件到linux并且解压。

tar -xzf kafka_2.13-3.2.0.tgz -C  /opt/
#提取文件成功之后,接着创建一个文件的软连接,这样可以方便进行kafka的升级。
ln -s /opt/kafka_2.12-2.4.0 /opt/kafka

2.修改kafka配置

#broker实例标识,集群时要保证唯一
broker.id=1

# kafka存放数据的目录
log.dirs=/tmp/kafka-logs

# 注册中心zookeeper的地址
zookeeper.connect=localhost:2181

# 访问IP,需要保证服务能够通信
listeners=PLAINTEXT://192.168.31.96:9092

##超时将被删除,也就是说7天之前的数据将被清理掉。
log.retention.hours=168

# 是否允许自动创建topic ,若是false,就需要通过命令创建topic(=====我的只有这条没有加上了=====)
delete.topic.enable=true

3.启动zookeeper

cd kafka_2.13-3.2.0
bin/zookeeper-server-start.sh config/zookeeper.properties
  1. 启动kafka
bin/kafka-server-start.sh config/server.properties
  1. 测试是否启动成功
    5.1 先看看进程在不在
ps -ef|grep kafka

5.2 看看zookeeper进程是不是在。

ps -ef|grep zookeeper

5.3 由于通过上面的方式启动不是很方便,接下来就配置系统单元服务进行启动kafka和zookeeper。按照以下方式创建zookeeper.service系统服务单元。

[sharplee@localhost ~]$vi /etc/systemd/system/zookeeper.service
 
[Unit]
Description=Apache Zookeeper server
Documentation=http://zookeeper.apache.org
Requires=network.target remote-fs.target
After=network.target remote-fs.target
 
[Service]
Type=simple
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
User=root
Group=root
 
[Install]
WantedBy=multi-user.target

保存完成之后,来启动验证一下是否配置成功。

systemctl start zookeeper
systemctl status zookeeper
systemctl stop zookeeper

接着在配置一下kafka服务器的系统服务单元。

[sharplee@localhost ~]$ vi /etc/systemd/system/kafka.service
 
[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service
 
[Service]
Type=simple
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
 
 
[Install]
WantedBy=multi-user.target

配置完成之后,接着来启动kafka。

systemctl start kafka
systemctl status kafka
systemctl stop kafka

5.4 新建topic
listeners=PLAINTEXT://192.168.31.96:9092
ip修改为上面kafka的地址

 bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 192.168.31.96:9092

5.5 开启生产者端。

bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.31.96:9092

5.6 另外打开一个终端, 开启监听端

bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.31.96:9092

5.6 在生产端输入消息,然后再5.5的消费端能消费到数据,就证明了kafka安装成功了。

五、springboot集成

1.1 引入pom

      
            org.springframework.kafka
            spring-kafka
        

1.2 application.properties,增加配置kafka
这里需要注意key不要写错,我当时就是spring.kafka.bootstrap-servers
写成了kafka.bootstrap-servers,导致一直连的是localhost:9092一直测试半天连接不上。

spring.kafka.bootstrap-servers=192.168.31.96:9092
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.listener.ack-mode=manual_immediate
spring.listener.missing-topics-fatal=false

1.3 新增control测试

@RestController
public class KafkaControl {

    @Autowired
    private KafkaTemplate kafkaTemplate;

    @RequestMapping(value = "/hello3",method = RequestMethod.GET)
    public String index() {
        kafkaTemplate.send("quickstart-events","hillll");
        return "200";
    }
}

这里往刚刚的虚拟机topic发送消息,如果里面的消费者端收到消息则证明连接成功了。

发送成功了,看下虚拟机的情况。可以看到已经发送成功了,测试完毕。

总结

踩了些坑,总结了一些经验,刚开始不知道要检查是否启动成功了,只查看了进程,但是其实是启动失败的。用springboot连接的时候死活连接不上,
所以一定要先在linux上测试。
这个版本的安装资料比较少,网上的资料的启动方式都是错误的,参考了官网才知道新的kafka启动方式和zookeeper启动方式,官网才是好的学习方法。

#附带linux开端口的方法,适用于centos7版本
#开启端口命令
firewall-cmd --zone=public --add-port=9092/tcp --permanent
#重启防火墙
systemctl restart firewalld.service
#查看开放的端口
firewall-cmd --list-ports
#本地测试连接虚拟机的时候需要开放端口才能连接上虚拟机,这里也算是补充一个小知识点。

你可能感兴趣的:(kafka 3.2.0 linux部署并测试-2022-07-25)