zoukankan      html  css  js  c++  java
  • 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中的消息。

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

    1.3准备工作

    • 1.kafka服务器

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

    服务器名 IP 说明
    zookeeper01 192.168.172.8 zookeeper+kafka节点1
    zookeeper02 192.168.172.9 zookeeper+kafka节点2
    zookeeper03 192.168.172.10 zookeeper+kafka节点3
    • 2.软件版本说明
    说明
    Linux Server Centos 7
    Kafka 2.2.0

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

    二.部署过程

    2.1应用&数据目录

    • 创建应用目录
    mkdir /usr/kafka
    
    • 创建Kafka数据目录
    mkdir /kafka
    mkdir /kafka/logs
    chmod 777 -R /kafka
    

    2.2下载&解压

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

    • 创建并进入下载目录
    mkdir /home/downloads
    cd /home/downloads
    
    • 下载安装包
      下载链接: https://mirrors.tuna.tsinghua.edu.cn/apache/kafka

    • 解压到应用目录

    tar -zvxf kafka_2.12-2.2.0.tgz -C /usr/kafka
    kafka_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 files
    log.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 firewalld
    systemctl disable firewalld
    setenforce 0
    getenforce
    vim /etc/selinux/config
    SELINUX=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 test
    
    bin/kafka-console-consumer.sh --bootstrap-server 192.168.172.10:9092 --topic test --from-beginning --group test
    

    四.备注

    4.1kafka常用配置项说明

    kafka常用broker配置说明:

    4.2附录

    https://kafka.apache.org/

    https://zh.wikipedia.org/zh-cn/Kafka

  • 相关阅读:
    ES6关于Promise的用法
    JS进阶篇--JS数组reduce()方法详解及高级技巧
    JavaScript常用数组操作方法,包含ES6方法
    揭密 Vue 的双向绑定
    JavaScript(E5,6) 正则学习总结学习,可看可不看!
    利用scons构建project
    cuda核函数再调用核函数,多层并行
    使用微信JSSDK实现图片上传
    android 自己定义水平和圆形progressbar 仅仅定义一些style就能够
    [LeetCode] 035. Search Insert Position (Medium) (C++)
  • 原文地址:https://www.cnblogs.com/even160941/p/14667974.html
Copyright © 2011-2022 走看看