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


前言

因项目需求要使用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. 在 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. 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. 在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. 创建topic
bin/kafka-topics.sh --create --bootstrap-server server1IP:9092 --replication-factor 1 --partitions 1 --topic test
  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. 启动生产者
bin/kafka-console-producer.sh --topic test --bootstrap-server server1IP:9092
  1. 启动消费者
bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server server1IP:9092

注意事项

  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. 创建topic的语句在新版本有所变化,使用旧版本语句会报错。
    在旧版本里创建topic语句为
bin/kafka-topics.sh --create --zookeeper server1IP:9092 --replication-factor 1 --partitions 1 --topic test

新版本变为

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

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值