前言
华为云 FlexusX 实例,以创新的柔性算力技术,为 Kafka 集群部署带来前所未有的性能飞跃。其灵活的 CPU 与内存配比,结合智能调度与加速技术,让 Kafka 在高并发场景下依然游刃有余。在 828 华为云企业上云节期间,FlexusX 实例携手海量优惠,助力企业轻松上云,享受数字化转型的加速红利。链接直达:华为云Flexus云服务器X实例
Kafka 简介
Kafka 是一个性能、高吞吐量的分布式发布订阅消息系统,专为处理大规模数据流而设计。作为 Apache 顶级项目之一,Kafka 以其卓越的扩展性、持久性和可靠性,在大数据和实时处理领域占据重要地位。它允许生产者(数据发送者)以高吞吐量向 Kafka 集群发布消息,而消费者(数据接收者)则可以以低延迟从集群中读取消息。Kafka 通过将消息存储到多个分区中,并在多个 broker(服务器)之间复制这些分区,实现了数据的高可用性和容错性。
Kafka 不仅支持简单的消息传递,还具备强大的流处理能力,能够与各种流处理框架无缝集成,实现复杂的数据转换和分析任务。其灵活的消息模型和可扩展的架构,使得 Kafka 能够轻松应对各种应用场景,包括日志收集、事件监控、消息队列以及实时数据管道等。
官方网站:https://kafka.apache.org/
官方文档:https://kafka.apache.org/documentation/
ZooKeeper 简介
ZooKeeper 是一个开源的分布式协调服务,它为分布式应用提供一致性服务,主要用于管理大型分布式系统中的配置信息、命名服务、分布式同步以及提供组服务等,通过其简单的 API 和强大的功能,使得分布式系统中的各个组件能够相互协调、协同工作。
官方网站:https://zookeeper.apache.org/
官方文档:https://zookeeper.apache.org/doc/
华为云 Flexus X 实例部署 Kafka 集群的亮点
灵活配置:通过柔性计算技术,自由调整 CPU、内存资源,匹配 Kafka 需求。
高性能 &可扩展:增强 Kafka 的高吞吐、高可用特性,支持便捷的水平扩展。
无缝集成 &自动化:华为云服务助力无缝集成,支持自动化运维,减少人工干预。
安全可靠:集成华为云安全体系,结合 Kafka 副本机制,确保数据安全和服务可用。
成本效益:智能化运维降低运维成本,提高运维效率。
响应速度:提升业务系统处理实时数据流的响应速度。
业务连续性:故障自动迁移和容错能力,保障业务稳定运行。
促进创新:灵活性和可扩展性支持快速调整,应对市场变化和挑战。
环境规划
本次实验环境中,准备搭建一台 zookeeper 以及三个 Kafka broker 组成的 Kafka Cluster
部署流程
需要了解:
•采用 docker 方式进行部署 kafka 集群
•详细购买配置实例可参考文章:快速部署华为云Flexus X实例,开启您的云端之旅
•部署 docker 服务请参考文章:华为FlexusX与Docker+Nginx的高效整合之路
拉取镜像
查看并拉取 zookeeper 镜像(镜像尽量拉取官方镜像)
#默认拉取最新版[root@flexusx-251f~]# docker search zookeeperNAMEDESCRIPTION STARS OFFICIALzookeeperApache ZooKeeper is an open-source server wh… 1452 [OK]bitnamizookeeperBitnami container image for ZooKeeper 122chainguardzookeeperMinimal image with Apache Zookeeper. 0rapidfortzookeeperRapidFort optimized, hardened image for Zook… 9ubuntuzookeeperZooKeeper maintains configuration informatio… 13..............................[root@flexusx-251f~]# docker pull zookeeperUsingdefault tag latestlatestPulling from libraryzookeeperf7ec5a41d630Already existsfaf4c47c8c61Pull complete810072571fafPull completeca2026cde8dePull complete560b60c59d86Pull complete48a7bbbfc8ebPull complete56ff45ef75e6Pull completee28096689586Pull completeDigestsha256ecc855e80a6c36a9864e7c1ccc0b68a13595871f88bc8a97e7f2c82a8e9803b2StatusDownloaded newer image for zookeeperlatestdocker.iolibraryzookeeperlatest
查看并拉取 kafka 镜像(镜像尽量拉取官方镜像)
[root@flexusx-251f~]# docker search kafkaNAMEDESCRIPTION STARS OFFICIALchainguard/kafkaMinimal image with Kafka. 0bitnami/kafkaBitnami container image for Apache Kafka 884ubuntu/kafkaApache Kafka, a distributed event streaming … 51apache/kafkaApache Kafka 63rancher/kafka2bitnamicharts/kafka..............................[root@flexusx-251f~]# docker pull bitnami/kafkaUsingdefault tag: latestlatest:Pulling from bitnami/kafka2449408de487:Pull completeDigest:sha256:999ba91863ef67e13c5704c3145154d0484671222dab2a603bfdeedc4a9fbad7Status:Downloaded newer image for bitnami/kafka:latestdocker.io/bitnami/kafka:latest
编写 docker-compose.yaml
编写 docker-compose.yaml
[root@flexusx-251f~]# mkdir /kafka[root@flexusx-251f~]# cd /kafka/[root@flexusx-251f kafka]# vim docker-compose.yamlversion:'2.9'services:zookeeper:image:zookeeper:latestports: -"2181:2181"#将容器的 2181 端口映射到宿主机的 2181 端口environment:ZOO_MY_ID:1#设置 Zookeeper 节点的 ID 为 1ZOO_SERVERS:server.1=zookeeper:2888:3888;2181#配置 Zookeeper 集群信息,我们只定义了一个节点,所以为单个kafka1:image:bitnami/kafka:latestdepends_on: -zookeeper ports: -"9092:9092"environment:KAFKA_BROKER_ID:1#设置 Kafka broker 的 ID 为 1KAFKA_ZOOKEEPER_CONNECT:zookeeper:2181#指定 Kafka 如何连接到 ZookeeperKAFKA_ADVERTISED_LISTENERS:PLAINTEXT://kafka1:9092#设置 Kafka broker 对外部客户端广播的地址和端口KAFKA_LISTENER_SECURITY_PROTOCOL_MAP:PLAINTEXT:PLAINTEXT KAFKA_INTER_BROKER_PROTOCOL_VERSION:2.8KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR:1kafka2:image:bitnami/kafka:latest depends_on: -zookeeper ports: -"9093:9092"environment:KAFKA_BROKER_ID:2KAFKA_ZOOKEEPER_CONNECT:zookeeper:2181 KAFKA_ADVERTISED_LISTENERS:PLAINTEXT://kafka2:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP:PLAINTEXT:PLAINTEXT KAFKA_INTER_BROKER_PROTOCOL_VERSION:2.8KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR:1kafka3:image:bitnami/kafka:latest depends_on: -zookeeper ports: -"9094:9092"environment:KAFKA_BROKER_ID:3KAFKA_ZOOKEEPER_CONNECT:zookeeper:2181 KAFKA_ADVERTISED_LISTENERS:PLAINTEXT://kafka3:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP:PLAINTEXT:PLAINTEXT KAFKA_INTER_BROKER_PROTOCOL_VERSION:2.8KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR:1
创建容器
执行 docker-compose,开始创建容器
[root@flexusx-251fkafka]# docker-compose up -dWARN[0000]/kafka/docker-compose.yaml:the attribute `version`is obsolete, it will be ignored, please remove it to avoid potential confusion[+]Running 5/5✔Network kafka_default Created 0.0s✔Container kafka-zookeeper-1 Started 0.2s✔Container kafka-kafka2-1 Started 0.3s✔Container kafka-kafka3-1 Started 0.3s✔Container kafka-kafka1-1 Started 0.3s
查看容器状态(全部正常运行如果不正常请查看日志)
[root@flexusx-251fkafka]# docker-compose psWARN[0000]/kafka/docker-compose.yaml:the attribute `version`is obsolete, it will be ignored, please remove it to avoid potential confusionNAMEIMAGE COMMAND SERVICE CREATED STATUS PORTSkafka-kafka1-1bitnami/kafka:latest "/opt/bitnami/script…"kafka1 7 seconds ago Up 6 seconds 0.0.0.0:9092->9092/tcp, :::9092->9092/tcpkafka-kafka2-1bitnami/kafka:latest "/opt/bitnami/script…"kafka2 7 seconds ago Up 6 seconds 0.0.0.0:9093->9092/tcp, :::9093->9092/tcpkafka-kafka3-1bitnami/kafka:latest "/opt/bitnami/script…"kafka3 7 seconds ago Up 6 seconds 0.0.0.0:9094->9092/tcp, :::9094->9092/tcpkafka-zookeeper-1zookeeper:latest "/docker-entrypoint.…"zookeeper 7 seconds ago Up 6 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 8080/tcp
放行安全组
放行端口 2181,9092,9093,9094
基本使用
创建主题
进入容器内部,并进入 bin 目录下(脚本文件都在这个目录下)
[root@flexusx-251fkafka]# docker exec -itkafka-kafka1-1 /bin/bashIhave no name!@6a5684babfc1:/$ lsbindev etc lib64 opt run srv usrbitnamidocker-entrypoint-initdb.d home media proc run.sh sys varbootentrypoint.sh lib mnt root sbin tmpIhave no name!@6a5684babfc1:/$ cd /opt/bitnami/kafka/bin/
创建主题(任意一个 kafka 即可)
•使用 kafka-topics.sh 脚本在 Kafka 集群(通过 123.249.27.118:9092 访问)中创建一个名为 topic1 的新主题,该主题包含 3 个分区,每个分区有 3 个副本。
Ihave no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ ./kafka-topics.sh --create--bootstrap-server123.249.27.118:9092 --replication-factor3 --partitions3 --topictopic1Createdtopic topic1.
命令不知道如何使用,可以进行 help 查询
./kafka-topics.sh--help
查看主题
查看主题,
•使用 kafka-topics.sh 脚本描述(或查询)Kafka 集群(通过 123.249.27.118:9092 访问)中名为 topic1 的主题的详细信息。
Ihave no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ kafka-topics.sh --describe--bootstrap-server123.249.27.118:9092 --topictopic1[2024-09-1102:21:00,753] WARN [AdminClient clientId=adminclient-1] The DescribeTopicPartitions API is not supported, using Metadata API to describe topics. (org.apache.kafka.clients.admin.KafkaAdminClient)Topic:topic1 TopicId: V1q3U6OxR1G5Umo203kvPQ PartitionCount: 3 ReplicationFactor: 3 Configs:Topic:topic1 Partition: 0 Leader: 3 Replicas: 3,1,2 Isr: 3,1,2 Elr: N/A LastKnownElr: N/ATopic:topic1 Partition: 1 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3 Elr: N/A LastKnownElr: N/ATopic:topic1 Partition: 2 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1 Elr: N/A LastKnownElr: N/A
通过执行 kafka-topics.sh 脚本的 describe 命令,并指定 bootstrap-server 为 123.249.27.118:9092 以及查询的 topic 为 topic1,我们观察到该主题的 3 个分区被均匀且成功地分配到了 Kafka 集群的三个 broker 上,这标志着这三个 broker 已经构建了一个高效协作、稳定运行的 Kafka 集群环境。
查看主题列表
Ihave no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ ./kafka-topics.sh --bootstrap-serverlocalhost:9092 --listtopic1
修改主题信息
分区数只能增加,不能减少;副本数不支持修改。
Ihave no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ ./kafka-topics.sh --bootstrap-serverlocalhost:9092 --alter--topictopic1 --partitions4[2024-09-1103:23:54,240] WARN [AdminClient clientId=adminclient-1] The DescribeTopicPartitions API is not supported, using Metadata API to describe topics. (org.apache.kafka.clients.admin.KafkaAdminClient)Ihave no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ kafka-topics.sh --describe--bootstrap-server123.249.27.118:9092 --topictopic1[2024-09-1103:24:17,033] WARN [AdminClient clientId=adminclient-1] The DescribeTopicPartitions API is not supported, using Metadata API to describe topics. (org.apache.kafka.clients.admin.KafkaAdminClient)Topic:topic1 TopicId: V1q3U6OxR1G5Umo203kvPQ PartitionCount: 4 ReplicationFactor: 3 Configs:Topic:topic1 Partition: 0 Leader: 3 Replicas: 3,1,2 Isr: 3,1,2 Elr: N/A LastKnownElr: N/ATopic:topic1 Partition: 1 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3 Elr: N/A LastKnownElr: N/ATopic:topic1 Partition: 2 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1 Elr: N/A LastKnownElr: N/ATopic:topic1 Partition: 3 Leader: 3 Replicas: 3,2,1 Isr: 3,2,1 Elr: N/A LastKnownElr: N/A
删除主题
Ihave no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ kafka-topics.sh --bootstrap-serverlocalhost:9092 --delete--topictopic1#可以看到,已经没有主题存在了 Ihave no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ kafka-topics.sh --bootstrap-serverlocalhost:9092 --list
体验和感受
在大数据与实时流处理领域,Kafka 以其高吞吐量、低延迟和可扩展性赢得了广泛赞誉。而华为云 FlexusX 实例,以其卓越的计算性能、灵活的资源配置和稳定的云环境,为 Kafka 集群的部署提供了理想平台。
在 FlexusX 实例上部署 Kafka 集群,不仅能够充分利用其强大的计算资源,还能通过精细化的配置与优化,实现集群性能的最大化。我们结合华为云提供的专业指导与最佳实践,对 Kafka 集群进行了深度优化,包括网络配置、存储优化、分区与副本策略调整等,确保 Kafka 在高并发、大数据量场景下依然能够稳定运行,提供卓越的服务质量。
值此 828 华为云企业上云节之际,诚邀您一起体验 FlexusX 实例下的 Kafka 集群部署与优化服务。在特惠期间,将享受到前所未有的价格优惠与专业的技术支持,助您轻松构建高效、稳定的实时数据流处理系统。选择华为云 FlexusX 实例,让 Kafka 集群的部署与性能优化变得更加简单、高效。点击下方链接,立即行动,把握 828 特惠,让 Kafka 集群在 FlexusX 实例的强劲动力下,开启数据流处理的新篇章!
产品链接:华为云Flexus云服务器X实例直播建站服务器-华为云
审核编辑 黄宇
-
华为云
+关注
关注
3文章
2607浏览量
17477
发布评论请先 登录
相关推荐
评论