当前位置:   article > 正文

Kafka从零安装到实现基本通信_kafka3.7安装

kafka3.7安装


前言

因项目需求要使用kafka实现消息队列,从零开始学习安装。


一、zookeeper安装

Zookeeper是一个分布式的协调服务,主要用于维护集群的元数据信息和配置信息。Kafka集群依赖于Zookeeper来存储和管理Kafka的元数据信息和配置信息。

安装

从官网https://dlcdn.apache.org/zookeeper/上下载,这里选择3.7.0版本。

PS: zookeeper从3.5.5开始,带有bin名称的包才是编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包,无法直接使用。

配置

  1. 解压
    tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
  2. 复制config文件夹下zoo_sample.cfg,重命名为zoo.cfg,作为zookeeper配置文件
  3. 修改配置文件
tickTime=2000   #session的会话时间 以ms为单位
initLimit=10      #服务器启动以后,master和slave通讯的时间
syncLimit=5       #master和slave之间的心跳检测时间,检测slave是否存活
dataDir=/tmp/zookeeper  #保存zk的快照和数据,自行指定
clientPort=2181      #客户端访问zk的端口

# 在末尾添加
#2888是数据同步和消息传递端口,3888是选举端口
server.1=server1IP:2888:3888 
server.2=server2IP:2888:3888
server.3=server3IP:2888:3888
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 在 3 中数据目录下建立myid文件,在三个服务器上内容分别为1,2,3
    echo 1>>dataDir/myid
  2. 分别在三个服务器上启动zookeeper
    bin/zkServer.sh start
  3. 查看zookeeper状态
    bin/zkServer.sh status
    可以看到有一个leader,两个follower

注意事项

  1. 分布式zookeeper集群必须大于等于三台,且最好为奇数台。如果只有2台,通过 6 步骤查看状态时为standalone
    原因:必须满足n/2+1=m, m必须大于部署zk机器数的一半n/2可用时才认为集群可用,而且奇数台更节省资源
2/2+1=2 一台不能坏
3/2+1=2 可以坏掉一台

4/2+1=3 只能坏一台
5/2+1=3 可以坏2台
  • 1
  • 2
  • 3
  • 4
  • 5
  1. myid不要重复,不能缺失,影响leader的选举
    参考:https://www.cnblogs.com/veblen/p/10992103.html
  2. 安装及修改配置文件时,可以在第一台服务器上配置完,通过scp语句传到另外的服务器上,再去改部分配置文件。

kafka安装、配置及建立基本通信

安装

从官网https://kafka.apache.org/downloads上下载,这里选择 kafka_2.13-3.1.0.tgz版本。

配置

  1. 解压
    tar -zxvf kafka_2.13-3.1.0.tgz
  2. 修改三台服务器上config/server.properties配置文件
#以master节点为例
broker.id=1 # 每台服务器上不同

#listeners = PLAINTEXT://your.host.name:9092
#9092为kafka端口号
listeners=PLAINTEXT://server1IP:9092
host.name=server1IP
#端口号为zookeeper端口号
zookeeper.connect=server1IP:2180,server2IP:2181,server1IP3:2181

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. 在zookeeper启动的前提下,在每个节点上启动broker
#后台运行
bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
#通过jps命令查看是否启动
jps
#jps结果
21938 Kafka
4885 Jps
12326 QuorumPeerMain
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 创建topic
bin/kafka-topics.sh --create --bootstrap-server server1IP:9092 --replication-factor 1 --partitions 1 --topic test
  • 1
  1. 查看topic
bin/kafka-topics.sh --describe --bootstrap-server server1IP:9092 --topic test
#结果
Topic: test	TopicId: r5H3D_sAQIGmCSQMaMiYmQ	PartitionCount: 1	ReplicationFactor: 1	Configs: segment.bytes=1073741824
	Topic: test	Partition: 0	Leader: 3	Replicas: 3	Isr: 3
  • 1
  • 2
  • 3
  • 4
  1. 启动生产者
bin/kafka-console-producer.sh --topic test --bootstrap-server server1IP:9092
  • 1
  1. 启动消费者
bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server server1IP:9092
  • 1

注意事项

  1. 配置文件中listeners一定要配置,否则会导致生产者无法生产及消费者无法消费(请求不到)。

  2. QuorumPeerMain表示zookeeper是否启动,通过jps没有看到的话要重启zookeeper。
    重启zookeeper可能遇到端口被占用的情况:

#重启zookeeper
./zkServer.sh restart

#如果遇到重启失败,先看端口是否被占用,root账户下查看,避免看不到某些进程的id
sudo netstat -tunlp
#释放端口重启zookeeper
sudo kill -9 id
./zkServer.sh start
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 创建topic的语句在新版本有所变化,使用旧版本语句会报错。
    在旧版本里创建topic语句为
bin/kafka-topics.sh --create --zookeeper server1IP:9092 --replication-factor 1 --partitions 1 --topic test
  • 1

新版本变为

bin/kafka-topics.sh --create --bootstrap-server server1IP:9092 --replication-factor 1 --partitions 1 --topic test
  • 1

总结

以上对Kafka的基本安装流程做了介绍,包括了前置安装zookeeper的部分内容。标注了遇到的一些坑,版本一致的前提下按照上述流程操作基本都能成功完成安装。由于上述内容是22年4月完成的,使用新版本的时候可能会有不兼容的操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/444771
推荐阅读
相关标签
  

闽ICP备14008679号