1+X云计算运维与开发(中级)实战案例——Kafka集群部署

前言

Kafka 是一种开源的流处理平台和消息系统,被设计用于构建实时数据管道和流式应用程序,可以处理大规模的实时数据流,并提供高吞吐量、持久性存储和分布式处理能力。
在实时数据处理、日志聚合、指标监控、事件驱动架构等场景下,Kafka有着广泛的应用。它的高性能、可扩展性以及丰富的功能使其成为了大数据领域中的重要工具之一。

Kafka中发布订阅的对象是topic。用户可以为每类数据创建一个topic,把向topic发布消息的客户端称作producer,从topic订阅消息的客户端称作Consumer。Producers和Consumers可以同时从多个topic读写数据。一个Kafka集群由一个或多个broker服务器组成,它负责持久化和备份具体的kafka消息。

  • topic:消息存放的目录即主题。
  • Producer:生产消息到topic的一方。
  • Consumer:订阅topic消费消息的一方。
  • Broker:Kafka的服务实例就是一个broker

如果你是初学者,那么我之前发布的文章对一些简单操作有详细讲解,你可以从中入手,本文对之前讲过的操作不会详细说明。

虚拟机使用的是考试提供的xnode1、xnode2、xnode3
环境准备:配置好zookeeper集群,即在上一个实验的基础上继续做,具体配置方法可以查看我的上一篇文章

各节点规划如下:

虚拟机 IP/24 主机名 节点
xnode1 192.168.200.11 zookeeper1 集群节点
xnode2 192.168.200.12 zookeeper2 集群节点
xnode3 192.168.200.13 zookeeper3 集群节点

操作过程

确保你已经完成了之前的zookeeper集群搭建,在此基础上继续本实验!

解压Kafka软件包

#xnode2和xnode3没有自带Kafka软件包,需要从xnode1拷贝过去
#这里一样是用到scp命令,你要用远程传输工具也可以
[root@zookeeper1 ~]# scp kafka_2.11-1.1.1.tgz root@zookeeper2:/root/
root@zookeeper2's password: 
kafka_2.11-1.1.1.tgz                                        100%   55MB  54.8MB/s   00:01
[root@zookeeper1 ~]# scp kafka_2.11-1.1.1.tgz root@zookeeper3:/root/
root@zookeeper3's password: 
kafka_2.11-1.1.1.tgz                                        100%   55MB  54.8MB/s   00:01    
[root@zookeeper1 ~]# 

#三台机都解压软件包
[root@zookeeper1/2/3 ~]# tar -zxf kafka_2.11-1.1.1.tgz 
#三台机均切换至kafka的config目录
[root@zookeeper1/2/3 ~]# cd kafka_2.11-1.1.1/config/
[root@zookeeper1/2/3 config]# 

修改Kafka配置文件

#修改服务器配置文件server.properties
[root@zookeeper1/2/3 config]# vi server.properties 
#将21行的broker.id的值分别改为1、2、3
#将31行的注释去掉,并改为listeners=PLAINTEXT://本机ip:9092	
#将123行的zookeeper.connect的值改为:节点1ip:2181, 节点2ip:2181, 节点3ip:2181
#文件修改前:
[root@zookeeper1/2/3 config]# sed -n '21p;31p;123p' server.properties
broker.id=0
#listeners=PLAINTEXT://:9092
zookeeper.connect=localhost:2181
#文件修改后:
#zookeeper1:
[root@zookeeper1 config]# sed -n '21p;31p;123p' server.properties
broker.id=1
listeners=PLAINTEXT://192.168.200.11:9092
zookeeper.connect=192.168.200.11:2181,192.168.200.12:2181,192.168.200.13:2181
#zookeeper2:
[root@zookeeper2 config]# sed -n '21p;31p;123p' server.properties
broker.id=2
listeners=PLAINTEXT://192.168.200.12:9092
zookeeper.connect=192.168.200.11:2181,192.168.200.12:2181,192.168.200.13:2181
#zookeeper3:
[root@zookeeper3 config]# sed -n '21p;31p;123p' server.properties
broker.id=3
listeners=PLAINTEXT://192.168.200.13:9092
zookeeper.connect=192.168.200.11:2181,192.168.200.12:2181,192.168.200.13:2181
[root@zookeeper3 config]# 
#broker.id: 每个broker的唯一标识符,不能一样
#zookeeper.connect:用于指定broker连接到ZooKeeper集群的地址。因为有3台ZooKeeper服务器,所以在这里也设置为3台。
#listeners:用于指定broker监听客户端连接的网络地址和端口。在配置集群的时候,必须设置,不然以后的操作会报找不到leader的错误。

启动服务

#三台机子切换至kafka的bin目录
[root@zookeeper1/2/3 config]# cd ../bin/
[root@zookeeper1/2/3 bin]# 
#启动服务
[root@zookeeper1/2/3 bin]# ./kafka-server-start.sh -daemon ../config/server.properties 
#可用jps命令查看服务是否在运行
[root@zookeeper1/2/3 bin]# jps
3152 Kafka
3218 Jps
2747 QuorumPeerMain

测试服务

#我们创建一个topic(主题)测试一下
[root@zookeeper1 bin]# ./kafka-topics.sh --create \
> --zookeeper 192.168.200.11:2181 --replication-factor 1 \
> --partitions 1 --topic test
Created topic "test".
#命令很长,\只是我用来将其拆成多行的,看着美观一点
#--zookeeper 指定ZooKeeper的连接信息
#--replication-factor 指定topic的复制因子。复制因子定义了每个分区(partition,Kafka中消息的逻辑容器,能够允许消息在集群中并行处理和存储)的副本数,为1即设置每个分区只有一个副本
#--partitions 指定topic的分区数目。为1即设置主题只有一个分区
#--topic 指定topic的名称
#在另外两台机子看看是否能查到这个topic
[root@zookeeper2 bin]# ./kafka-topics.sh --list --zookeeper 192.168.200.11:2181 test
test
[root@zookeeper3 bin]# ./kafka-topics.sh --list --zookeeper 192.168.200.11:2181 test
test

后语

Kafka的应用场景:

  1. 日志收集:公司用Kafka可以收集各种服务的log,通过Kafka以统一接口服务的方式开放给各种Consumer,例如Hadoop、HBase、Solr等。
  2. 消息系统:解耦、生产者和消费者、缓存消息等。
  3. 用户活动跟踪:Kafka经常被用来记录Web用户或者App用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到Kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到Hadoop、数据仓库中做离线分析和挖掘。
  4. 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据、生产各种操作的集中反馈,比如报警和报告。
  5. 流式处理:比如Spark streaming和Storm。

你可能感兴趣的:(1+X云计算运维与开发(中级),云计算,运维,kafka)