• Kafka集群环境的部署


    一、Kafka集群环境的重要性

    1. 数据处理和分发:Kafka被用于数据处理和分发系统,因为它能够高效地处理大规模的数据流。一个稳定可靠的Kafka集群环境可以确保数据的可靠传输和存储。

    2. Kafka集群环境可以用于实时流处理,支持实时数据的传输、处理和分析。

    3. Kafka集群环境可以作为数据的中心化存储和备份平台,确保数据的安全性和可靠性。

    4. 通过搭建Kafka集群环境,可以实现分布式的消息处理和存储,具备弹性和高可用性,能够应对大量数据和高并发的处理需求。

    5. Kafka集群环境可以根据需求进行横向扩展,以满足不断增长的数据规模和业务需求,并且支持性能的优化和调整。

    在这里插入图片描述

    二、准备工作

    硬件需求:

    1. 建议至少三台服务器用于构建一个基本的高可用性Kafka集群。

    2. 建议使用多核处理器、大内存容量和快速的存储设备,以确保高性能和可靠性。

    在规划Kafka集群环境的硬件时,要综合考虑数据处理需求、性能、可靠性和安全性等因素,以确保构建一个稳定、高性能、可扩展和高可用的Kafka集群环境。

    软件组件的选型与版本选择:

    1. 选择最新的稳定版本的Apache Kafka。始终推荐使用公认的稳定版本,以获取最新的功能和安全更新。同时,确保使用Kafka官方发布的版本而不是开发版本或预览版。

    2. Linux是部署Kafka的首选操作系统,因为它对于高性能、可靠性和网络负载具有良好的支持。

    3. Kafka需要Java环境来运行,选择官方推荐的版本:JDK 8/11/16。

    配置Kafka集群的网络和安全设置:

    1. 网络配置:为每台服务器分配静态IP地址,确保在集群中能够稳定地进行通信。为每台服务器设置唯一的主机名,方便在集群中进行识别和通信。

    2. 配置防火墙规则:Kafka使用的端口包括9092(用于Broker之间的通信)、2181(用于ZooKeeper)、9094(用于TLS/SSL加密通信)等。

    三、多节点Kafka集群部署

    由于资源有限,博主只准备了两台服务器:

    服务器IP
    1号192.168.11.59
    2号192.168.11.235

    3.1、 zookeeper部署

    zookeeper先只部署一台,在1号机器(192.168.11.59)上启动zookeeper。

    sh zookeeper-server-start.sh -daemon ../config/zookeeper.properties
    
    • 1

    注意:shell脚本在kafka安装目录的bin文件夹中。

    3.2、 启动1号机器的broker

    (1)修改server.properties(在config目录)。

    broker.id=0
    
    zookeeper.connect=192.168.11.59:2181
    
    • 1
    • 2
    • 3

    修改broker.id(也可以改为-1,自动分配)和配置对应的zookeeper ip地址。

    (2)启动kafka。

    sh kafka-server-start.sh -daemon ../config/server.properties
    
    • 1

    默认端口为:9092,可以通过命令lsof -i:9092查看kafka是否启动成功。

    $ lsof -i:9092
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    java    84858  fly  152u  IPv6 802800      0t0  TCP *:9092 (LISTEN)
    java    84858  fly  168u  IPv6 813310      0t0  TCP localhost:50918->fly-virtual-machine:9092 (CLOSE_WAIT)
    java    84858  fly  172u  IPv6 810764      0t0  TCP localhost:50920->fly-virtual-machine:9092 (CLOSE_WAIT)
    java    84858  fly  180u  IPv6 812452      0t0  TCP localhost:50924->fly-virtual-machine:9092 (ESTABLISHED)
    java    84858  fly  181u  IPv6 810766      0t0  TCP fly-virtual-machine:9092->localhost:50924 (ESTABLISHED)
    java    84858  fly  186u  IPv6 815339      0t0  TCP 192.168.11.59:9092->192.168.11.59:42758 (ESTABLISHED)
    java    84858  fly  187u  IPv6 815340      0t0  TCP fly-virtual-machine:9092->localhost:50978 (ESTABLISHED)
    java    84858  fly  188u  IPv6 815341      0t0  TCP fly-virtual-machine:9092->localhost:50980 (ESTABLISHED)
    java    88485  fly   89u  IPv6 813836      0t0  TCP 192.168.11.59:42758->192.168.11.59:9092 (ESTABLISHED)
    java    88485  fly   90u  IPv6 813837      0t0  TCP localhost:50978->fly-virtual-machine:9092 (ESTABLISHED)
    java    88485  fly   91u  IPv6 813838      0t0  TCP localhost:50980->fly-virtual-machine:9092 (ESTABLISHED)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3.3、 启动2号机器的broker

    (1)修改server.properties(在config目录)。

    broker.id=1
    
    zookeeper.connect=192.168.11.59:2181
    
    • 1
    • 2
    • 3

    修改broker.id(也可以改为-1,自动分配)和配置对应的zookeeper ip地址。
    (2)启动kafka。

    sh kafka-server-start.sh -daemon ../config/server.properties
    
    • 1

    默认端口为:9092,可以通过命令lsof -i:9092查看kafka是否启动成功。

    3.4、查看kafka集群

    (1)创建主题。

    sh kafka-topics.sh --create --zookeeper 192.168.11.59:2181 -replication-factor 2 --partitions 2 --topic kafka-2
    
    • 1

    (2)查看主题。

    sh kafka-topics.sh --describe --zookeeper 192.168.11.59:2181 --topic kafka-2
    
    • 1

    显示消息:

    Topic:kafka-2	PartitionCount:2	ReplicationFactor:2	Configs:
    	Topic: kafka-2	Partition: 0	Leader: 1	Replicas: 1,0	Isr: 1,0
    	Topic: kafka-2	Partition: 1	Leader: 0	Replicas: 0,1	Isr: 0
    
    
    • 1
    • 2
    • 3
    • 4

    3.5、测试集群

    开启一个生产者,两个消费者。当两个消费者同属一个消费组开启后,消费者轮流收到发送者的数据。

    (1)生产者:

    sh kafka-console-producer.sh --broker-list 192.168.11.59:9092 --topic kafka-2
    
    • 1

    (2)消费者:

    sh kafka-console-consumer.sh --bootstrap-server 192.168.11.59:9092 --topic kafka-2
    
    • 1

    默认是group 0,也可以指定,比如:

    sh kafka-console-consumer.sh --bootstrap-server 192.168.31.249:9092 --topic kafka-2 --group 0 --from-beginning
    
    • 1

    kafka-console-consumer.sh部分支持的参数:

    参数值类型说明有效值
    –topicstring被消费的topic
    -partitioninteger指定分区 除非指定’–offset’,否则从分区结束(latest)开始消费
    –offsetstring执行消费的起始offset位置 默认值:latestlatest、earliest
    –consumer-propertystring将用户定义的属性以key=value的形式传递给使用者
    –consumer.configstring消费者配置属性文件 请注意,[consumerproperty]优先于此配置
    –from-beginning从存在的最早消息开始,而不是从最新消息开始
    –groupstring指定消费者所属组的ID

    总结

    本节演示了一个zookeeper加两个broker的部署,实际使用总只是三个zookeeper,三个broker。部署方式相同。

    在构建Kafka集群环境时,还需要考虑使用监控和管理工具,例如Prometheus、Grafana、Kafka Manager等,以便对Kafka集群进行监控、管理和故障排除。
    在这里插入图片描述

  • 相关阅读:
    Perl学习教程之单行命令详解
    SpringBoot 接口数据加解密技巧
    zabbix监控Linux
    Redis:单线程为何还能这么快?
    如何在一个传统的html中,引入vueJs并使用vue复制组件?
    【threejs教程8】threejs添加3D场景键盘控制
    大一作业HTML网页作业:中华传统文化题材网页设计(纯html+css实现)
    第三章:Qt Creator 之 3.1 Qt Creator特色
    Kotlin 开发Android app(六):Kotlin 中的空判断 问号和感叹号
    Redis学习(1)—— 下载、安装、启动服务、连接redis服务
  • 原文地址:https://blog.csdn.net/Long_xu/article/details/128081210