邹阳

导航

 

本次实战将要搭建3台kafka集群,3台服务器的ip分别是192.168.220.101,192.168.220.102,192.168.220.133

安装KAFKA

下载kafka:

官网http://kafka.apache.org/downloads下载相应版本的kafka,本集群使用版本为:kafka_2.12-2.3.0.tgz

分别上传到以上3台服务器。

安装:

直接解压即可 tar -zxvf  kafka_2.12-2.3.0.tgz

配置server.properties:

首先编辑192.168.220.101服务器上的kafka的服务器配置文件:/usr/local/kafka_2.12-2.3.0/config/server.properties

broker.id=0  #集群中各个节点该值不能重复
listeners=PLAINTEXT://192.168.220.101:9092 #当前节点服务器的地址和端口
advertised.listeners=PLAINTEXT://192.168.220.101:9092 #当前节点服务器的地址和端口
log.dirs=/usr/local/kafka_2.12-2.3.0/logs  #这个目录需要手动创建
zookeeper.connect=192.168.220.101:2181  #zk集群的地址,多个以逗号分隔
zookeeper.connection.timeout.ms=60000  #连接zk的超时时间,默认是6000,最好设置大一点,以免超时

再分别编辑192.168.220.102,192.168.220.133的kafka服务器配置文件server.properties,只需改动上面配置的前3项即可。

启动kafka

分别在3台服务器的kafka的中执行命令:./bin/kafka-server-start.sh  config/server.properties 

#备注”-daemon"在后台运行,不占用当前窗口

启动成功后,查看zk,可以看到ids对应我们设置的三个broker.id

[zk: localhost:2181(CONNECTED) ] ls /brokers/ids
[0, 1, 2]

查看其中的一个详情

[zk: localhost:2181(CONNECTED) 8] get /brokers/ids/1
{"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://192.168.220.102:9092"],"jmx_port":-1,"host":"192.168.220.102","timestamp":"1593329740027","port":9092,"version":4}

 

测试KAFKA

1、创建Topic

在192.168.220.101(Broker)上创建Tpoic:book,这里我们指定了3个分区,2个副本

[root@localhost bin]# ./kafka-topics.sh --create --zookeeper 192.168.220.101:2181   --topic book  --partitions 3  --replication-factor 2

再在192.168.220.102(Broker)上创建Tpoic:user,这里我们指定了5个分区,2个副本

[root@localhost bin]# ./kafka-topics.sh --create --zookeeper 192.168.220.102:2181   --topic user  --partitions 5  --replication-factor 2

Topic在一个broker上创建后也会同步到集群中另外两个Broker。

2、查看topic  --list

可以在任意一台broker上查看,比如在192.168.220.133上查看集群的topic列表信息

[root@localhost bin]# ./kafka-topics.sh --bootstrap-server 192.168.220.133:9092 --list
__consumer_offsets
book
user

3.查看指定的topic详情    --describe --topic user

[root@localhost bin]# ./kafka-topics.sh   --bootstrap-server  192.168.220.133:9092   --describe --topic user
Topic:user    PartitionCount:5    ReplicationFactor:2    Configs:segment.bytes=1073741824
    Topic: user    Partition: 0    Leader: 0    Replicas: 0,1    Isr: 0,1
    Topic: user    Partition: 1    Leader: 1    Replicas: 1,2    Isr: 1,2
    Topic: user    Partition: 2    Leader: 2    Replicas: 2,0    Isr: 2,0
    Topic: user    Partition: 3    Leader: 0    Replicas: 0,2    Isr: 0,2
    Topic: user    Partition: 4    Leader: 1    Replicas: 1,0    Isr: 1,0
Partition:0,1,2,3,4 数字代表user这个topic的分区编号
Leader:0,1,2 数字代表的是broker的id编号,也就是集群中的服务器编号
Replicas:0,1,2 数字代表的是broker的id编号,也就是集群中的服务器编号
Isr:0,1,2 数字代表的是broker的id编号,也就是集群中的服务器编号

具体分析如下:
Topic: user    Partition: 0    Leader: 0    Replicas: 0,1    Isr: 0,1 
表示的意思是user分区0有两个副本,分别在broker0和1上(Replicas:0,1),其中broker0上的副本是leader(Leader:0),那么broker1上的副本自然就是fllower,
所以在broker0和broker1上应该都会创建user-0(表示主题user的第0个分区)文件,分别代表分区0的leader和fllower副本。
去192.168.220.101,192.168.220.102上查看logs目录,确实都有user-0文件

192.168.220.101关于user主题的文件:

   192.168.220.102关于user主题的文件:

 为了深入理解这里的数字概念,再创建一个topic:it,指定5个分区,3个副本。
[root@localhost bin]# ./kafka-topics.sh --create --zookeeper 192.168.220.101:2181   --topic it  --partitions 5  --replication-factor 3
Created topic it.
[root@localhost bin]#  ./kafka-topics.sh   --bootstrap-server  192.168.220.102:9092   --describe --topic it
Topic:it    PartitionCount:5    ReplicationFactor:3    Configs:segment.bytes=1073741824
    Topic: it    Partition: 0    Leader: 0    Replicas: 0,2,1    Isr: 0,2,1
    Topic: it    Partition: 1    Leader: 1    Replicas: 1,0,2    Isr: 1,0,2
    Topic: it    Partition: 2    Leader: 2    Replicas: 2,1,0    Isr: 2,1,0
    Topic: it    Partition: 3    Leader: 0    Replicas: 0,1,2    Isr: 0,1,2
    Topic: it    Partition: 4    Leader: 1    Replicas: 1,2,0    Isr: 1,2,0

可以看到it的分区0分配到了3个broker(0,2,1)上面。it的其他分区也都分别分配到了3个broker上了,因为副本数等于broker数,而且相同的副本不能分配到同一个broker上,所以只能这样分配。

注意:副本数不能大于broker数量,因为有个前提就是相同的副本不能分配在同一个broker上

 

4.启动生产者,准备发送消息 

 --broker-list 可以指定整个集群的所有ip,也可以只指定其中任意一个 

 --topic  指定要发送消息所属主题

[root@localhost bin]# ./kafka-console-producer.sh --broker-list 192.168.220.101:9092  --topic book

5.启动2个消费者,准备消费消息

[root@localhost bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.220.102:9092 --from-beginning --topic book
[root@localhost bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.220.133:9092 --from-beginning --topic book

 

 

posted on 2020-06-28 18:29  邹阳  阅读(514)  评论(0编辑  收藏  举报