美文网首页
Kafka集群搭建

Kafka集群搭建

作者: QuoVadis_k | 来源:发表于2020-07-26 16:43 被阅读0次

    Kafka集群搭建

    准备工作


    单机模式

    解压安装包

    解压我们下载的安装包;解压后进到kafka的目录

    tar -xvf kafka_2.13-2.5.0.tgz
    cd kafka_2.13-2.5.0
    

    启动kafka

    启动之前要先启动zk。 如果你的zk是在本地跑的且端口是默认的2181,无需修改配置文件;否则,你需要修改一下配置文件:

    config/server.properties 文件中 修改 zookeeper.connect 配置项为你的zk的地址即可。

    比如我的zk集群搭在3个虚拟机节点上,我这里需要修改为:

    zookeeper.connect=192.168.199.238:2181,192.168.199.239:2181,192.168.199.240:2181
    
    bin/kafka-server-start.sh config/server.properties
    
    
    // 启动成功的日志:
    // ......
    // ......
    // INFO [KafkaServer id=0] started (kafka.server.KafkaServer) 
    

    测试一下kafka的使用

    新开一个terminal ,创建一个名叫 test 的topic:

    > bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
    Created topic test.
    
    // 列出来kafka中的topic
    > bin/kafka-topics.sh --list --bootstrap-server localhost:9092
    test
    

    使用producer发送消息:

    > bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
    
    // 发送的消息:
    >ceshi
    >test
    

    再新开一个terminal ,使用消费者接收一下消息:

    > bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
    
    // 接收到的消息:
    ceshi
    test
    

    可以看到,刚才prodcuer发的两条消息这边都打印出来了。单机的kafka就算完成了。接下来开始搭建3个节点的kafka集群。


    集群搭建

    准备工作

    • 准备3个节点 ,这里使用了3个虚拟机节点 ,我这里准备了 192.168.199.238 192.168.199.239 192.168.199.240 3个节点
    • 3个节点都准备好kafka的安装包,并解压 ,具体命令参考上述 单机模式 的命令

    修改配置文件

    主要修改三项配置:

    • broker.id 这个是必须要改的,且必须是个整形。需要保持唯一 。这里238对应 0,239对应1,240对应2
    • listeners ,这个也是必填的,默认是没有配置这一项的,注释掉了
      • 238节点配置 :listeners=PLAINTEXT://192.168.199.238:9092
      • 239节点配置 :listeners=PLAINTEXT://192.168.199.239:9092
      • 240节点配置 :listeners=PLAINTEXT://192.168.199.240:9092
    • log.dirs 这个路径默认是在 /tmp 下的,我们改掉它,我改到了 /data/kafka-logs ,可以根据自己的习惯改,或者选择不改它
    • zookeeper.connect 这个是zk的集群地址,可以根据自己的情况修改

    启动kafka

    3个节点分别执行启动命令:

    bin/kafka-server-start.sh config/server.properties
    

    测试一下

    创建一个topic

    • replication-factor 3 复制三份
    • partitions 1 一个分区
    > bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 1 --topic repl-test
    OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
    Created topic repl-test.
    

    查看一下刚才创建的topic的状态

    > bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic repl-test
    OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
    Topic: repl-test        PartitionCount: 1       ReplicationFactor: 3    Configs: segment.bytes=1073741824
            Topic: repl-test        Partition: 0    Leader: 1       Replicas: 1,0,2 Isr: 1,0,2
    

    测试一下发送消息

    > bin/kafka-console-producer.sh --bootstrap-server 192.168.199.239:9092 --topic repl-test-topic
    
    // 发送的消息: 
    >test message 1
    >test message 2
    

    测试一下接收消息

    > bin/kafka-console-consumer.sh --bootstrap-server 192.168.199.239:9092 --from-beginning --topic repl-test
    OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
    
    // 接收到的消息:
    test message 1
    test message 2
    

    接收消息也没问题了。

    测试容灾

    这里我把刚才producer 和 consumer 连接的 239节点给干掉,可以看到 consumer的日志打印,已经自动切换到了238节点上:

     WARN [Consumer clientId=consumer-console-consumer-43719-1, groupId=console-consumer-43719] Connection to node 0 (/192.168.199.238:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
    

    再次测试发送消息接收消息:

    producer也打印了切换节点的日志:

    WARN [Producer clientId=console-producer] Connection to node 0 (/192.168.199.238:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
    
    // producer :
    >test meesage 3
    
    // consumer:
    test meesage 3
    

    总结

    Kafka 作为消息队列,在项目中也是很重要的一个部分,是要必须要掌握的。

    这里简单的总结一下集群搭建的流程,总体来说也是不难,参考官网文档可以很顺利的走下来,官网案例是在一台主机上启动了多个实例来搭建的伪集群,只要掌握了几个关键的地方,搭建一个真·集群也是非常容易的。


    参考:

    kafka quickstart

    相关文章

      网友评论

          本文标题:Kafka集群搭建

          本文链接:https://www.haomeiwen.com/subject/rctglktx.html