zoukankan      html  css  js  c++  java
  • linux搭建kafka2.3.0集群

    本次实战将要搭建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

  • 相关阅读:
    51Nod 1009 数字1的数量(思维)
    「CTSC 2008」祭祀
    「CSA Round #41」BFS-DFS
    「CEOI2008」order
    「HEOI 2016/TJOI 2016」求和
    「HAOI 2018」染色
    「CF 961G」Partitions
    「WC 2007」剪刀石头布
    「POI 2010」Bridges
    「CQOI 2014」危桥
  • 原文地址:https://www.cnblogs.com/tyhj-zxp/p/13203892.html
Copyright © 2011-2022 走看看