阅读 166

kafka集群部署

kafka集群部署

参考链接: https://ken.io/note/kafka-cluster-deploy-guide

一.前言

1.1kafka简介

Kafka是一个开源的分布式消息引擎/消息中间件,同时Kafka也是一个流处理平台。Kakfa支持以发布/订阅的方式在应用间传递消息,同时并基于消息功能添加了Kafka Connect、Kafka Streams以支持连接其他系统的数据(Elasticsearch、Hadoop等)

Kafka最核心的最成熟的还是他的消息引擎,所以Kafka大部分应用场景还是用来作为消息队列削峰平谷。另外,Kafka也是目前性能最好的消息中间件。

1.2kafka架构

在Kafka集群(Cluster)中,一个Kafka节点就是一个Broker,消息由Topic来承载,可以存储在1个或多个Partition中。发布消息的应用为Producer、消费消息的应用为Consumer,多个Consumer可以促成Consumer Group共同消费一个Topic中的消息。

概念/对象简单说明
Brokerkafka节点
Topic主题,用来承载消息
Partition分区,用于主题分片存储
Producer生产者,向主题发布消息的应用
Consumer消费者,从主题订阅消息的应用
Consumer Group消费者组,由多个消费者组成

1.3准备工作

  • 1.kafka服务器

准备3台CentOS服务器,并配置好静态IP、主机名

服务器名IP说明
zookeeper01192.168.172.8zookeeper+kafka节点1
zookeeper02192.168.172.9zookeeper+kafka节点2
zookeeper03192.168.172.10zookeeper+kafka节点3
  • 2.软件版本说明

说明
Linux ServerCentos 7
Kafka2.2.0

zookeeper的部署过程,参考:https://www.cnblogs.com/even160941/p/14666971.html

二.部署过程

2.1应用&数据目录

  • 创建应用目录

mkdir /usr/kafka
  • 创建Kafka数据目录

mkdir /kafkamkdir /kafka/logschmod 777 -R /kafka

2.2下载&解压

Kafka官方下载地址:https://kafka.apache.org/downloads
这里下载的是2.2版本的kafka

  • 创建并进入下载目录

mkdir /home/downloadscd /home/downloads
  • 下载安装包
    下载链接: https://mirrors.tuna.tsinghua.edu.cn/apache/kafka

  • 解压到应用目录

tar -zvxf kafka_2.12-2.2.0.tgz -C /usr/kafkakafka_2.12-2.2.0.tgz 其中2.12是Scala编译器的版本,2.2.0才是Kafka的版本

2.3Kafka节点配置

  • 进入应用目录

cd /usr/kafka/kafka_2.12-2.2.0/
  • 修改配置文件

vim config/server.properties
  • 通用配置
    配置日志目录、指定ZooKeeper服务器

# A comma separated list of directories under which to store log fileslog.dirs=/kafka/logs# root directory for all kafka znodes.zookeeper.connect=192.168.88.21:2181,192.168.88.22:2181,192.168.88.23:2181
  • 分节点配置

Kafka01:

broker.id=0

Kafka02:

broker.id=1

Kafka03

broker.id=2

2.4防火墙配置

  • 有两种方式配置:

1.开放端口

firewall-cmd --add-port=9092/tcp --permanent重新加载防火墙配置
firewall-cmd --reload

2.关闭防火墙&selinux==disabled

systemctl stop firewalldsystemctl disable firewalldsetenforce 0getenforcevim /etc/selinux/configSELINUX=disabled

2.5.启动Kafka

进入kafka根目录cd /usr/kafka/kafka_2.12-2.2.0/
启动
/bin/kafka-server-start.sh config/server.properties &

启动成功输出示例(最后几行)

[2021-04-16 03:39:52,597] INFO Kafka commitId: fc1aaa116b661c8a (org.apache.kafka.common.utils.AppInfoParser)[2021-04-16 03:39:52,597] INFO Kafka startTimeMs: 1561531737175 (org.apache.kafka.common.utils.AppInfoParser)[2021-04-16 03:39:52,598] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)

三.Kafka测试

3.1创建Topic

在zookeeper01(kafka01)(Broker)上创建测试Topic:test,这里我们指定了3个副本、1个分区

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

topic在zookeeper01(kafka01)上创建后也会同步到集群中另外两个Broker:zookeeper02(kafka02)、zookeeper03(kafka03)

3.2查看Topic

我们可以通过命令列出指定Broker的

bin/kafka-topics.sh --list --bootstrap-server 192.168.172.8:9092

3.3发送消息

这里我们向Broker(id=0)的Topic=test发送消息

bin/kafka-console-producer.sh --broker-list  192.168.172.8:9092  --topic test

消息内容

test hhh

3.4消费消息

在zookeeper02(kafka02)上消费Broker03的消息

bin/kafka-console-consumer.sh --bootstrap-server 192.168.172.10:9092 --topic test --from-beginning

在zookeeper03(kafka03)上消费Broker02的消息

bin/kafka-console-consumer.sh --bootstrap-server 192.168.172.9:9092 --topic test --from-beginning

然后均能收到消息

test hhh

这是因为这两个消费消息的命令是建立了两个不同的Consumer
如果我们启动Consumer指定Consumer Group Id就可以作为一个消费组协同工,1个消息同时只会被一个Consumer消费到

bin/kafka-console-consumer.sh --bootstrap-server 192.168.172.9:9092 --topic test --from-beginning --group testbin/kafka-console-consumer.sh --bootstrap-server 192.168.172.10:9092 --topic test --from-beginning --group test

四.备注

4.1kafka常用配置项说明

kafka常用broker配置说明:


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐