前言
華為云 FlexusX 實(shí)例,以創(chuàng)新的柔性算力技術(shù),為 Kafka 集群部署帶來前所未有的性能飛躍。其靈活的 CPU 與內(nèi)存配比,結(jié)合智能調(diào)度與加速技術(shù),讓 Kafka 在高并發(fā)場景下依然游刃有余。在 828 華為云企業(yè)上云節(jié)期間,F(xiàn)lexusX 實(shí)例攜手海量優(yōu)惠,助力企業(yè)輕松上云,享受數(shù)字化轉(zhuǎn)型的加速紅利。鏈接直達(dá):華為云Flexus云服務(wù)器X實(shí)例
Kafka 簡介
Kafka 是一個(gè)性能、高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),專為處理大規(guī)模數(shù)據(jù)流而設(shè)計(jì)。作為 Apache 頂級(jí)項(xiàng)目之一,Kafka 以其卓越的擴(kuò)展性、持久性和可靠性,在大數(shù)據(jù)和實(shí)時(shí)處理領(lǐng)域占據(jù)重要地位。它允許生產(chǎn)者(數(shù)據(jù)發(fā)送者)以高吞吐量向 Kafka 集群發(fā)布消息,而消費(fèi)者(數(shù)據(jù)接收者)則可以以低延遲從集群中讀取消息。Kafka 通過將消息存儲(chǔ)到多個(gè)分區(qū)中,并在多個(gè) broker(服務(wù)器)之間復(fù)制這些分區(qū),實(shí)現(xiàn)了數(shù)據(jù)的高可用性和容錯(cuò)性。
Kafka 不僅支持簡單的消息傳遞,還具備強(qiáng)大的流處理能力,能夠與各種流處理框架無縫集成,實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)轉(zhuǎn)換和分析任務(wù)。其靈活的消息模型和可擴(kuò)展的架構(gòu),使得 Kafka 能夠輕松應(yīng)對(duì)各種應(yīng)用場景,包括日志收集、事件監(jiān)控、消息隊(duì)列以及實(shí)時(shí)數(shù)據(jù)管道等。
官方網(wǎng)站:https://kafka.apache.org/
官方文檔:https://kafka.apache.org/documentation/
ZooKeeper 簡介
ZooKeeper 是一個(gè)開源的分布式協(xié)調(diào)服務(wù),它為分布式應(yīng)用提供一致性服務(wù),主要用于管理大型分布式系統(tǒng)中的配置信息、命名服務(wù)、分布式同步以及提供組服務(wù)等,通過其簡單的 API 和強(qiáng)大的功能,使得分布式系統(tǒng)中的各個(gè)組件能夠相互協(xié)調(diào)、協(xié)同工作。
官方網(wǎng)站:https://zookeeper.apache.org/
官方文檔:https://zookeeper.apache.org/doc/
華為云 Flexus X 實(shí)例部署 Kafka 集群的亮點(diǎn)
靈活配置:通過柔性計(jì)算技術(shù),自由調(diào)整 CPU、內(nèi)存資源,匹配 Kafka 需求。
高性能 &可擴(kuò)展:增強(qiáng) Kafka 的高吞吐、高可用特性,支持便捷的水平擴(kuò)展。
無縫集成 &自動(dòng)化:華為云服務(wù)助力無縫集成,支持自動(dòng)化運(yùn)維,減少人工干預(yù)。
安全可靠:集成華為云安全體系,結(jié)合 Kafka 副本機(jī)制,確保數(shù)據(jù)安全和服務(wù)可用。
成本效益:智能化運(yùn)維降低運(yùn)維成本,提高運(yùn)維效率。
響應(yīng)速度:提升業(yè)務(wù)系統(tǒng)處理實(shí)時(shí)數(shù)據(jù)流的響應(yīng)速度。
業(yè)務(wù)連續(xù)性:故障自動(dòng)遷移和容錯(cuò)能力,保障業(yè)務(wù)穩(wěn)定運(yùn)行。
促進(jìn)創(chuàng)新:靈活性和可擴(kuò)展性支持快速調(diào)整,應(yīng)對(duì)市場變化和挑戰(zhàn)。
環(huán)境規(guī)劃
本次實(shí)驗(yàn)環(huán)境中,準(zhǔn)備搭建一臺(tái) zookeeper 以及三個(gè) Kafka broker 組成的 Kafka Cluster
部署流程
需要了解:
?采用 docker 方式進(jìn)行部署 kafka 集群
?詳細(xì)購買配置實(shí)例可參考文章:快速部署華為云Flexus X實(shí)例,開啟您的云端之旅
?部署 docker 服務(wù)請(qǐng)參考文章:華為FlexusX與Docker+Nginx的高效整合之路
拉取鏡像
查看并拉取 zookeeper 鏡像(鏡像盡量拉取官方鏡像)
#默認(rèn)拉取最新版[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 端口映射到宿主機(jī)的 2181 端口environment:ZOO_MY_ID:1#設(shè)置 Zookeeper 節(jié)點(diǎn)的 ID 為 1ZOO_SERVERS:server.1=zookeeper:2888:3888;2181#配置 Zookeeper 集群信息,我們只定義了一個(gè)節(jié)點(diǎn),所以為單個(gè)kafka1:image:bitnami/kafka:latestdepends_on: -zookeeper ports: -"9092:9092"environment:KAFKA_BROKER_ID:1#設(shè)置 Kafka broker 的 ID 為 1KAFKA_ZOOKEEPER_CONNECT:zookeeper:2181#指定 Kafka 如何連接到 ZookeeperKAFKA_ADVERTISED_LISTENERS:PLAINTEXT://kafka1:9092#設(shè)置 Kafka broker 對(duì)外部客戶端廣播的地址和端口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
創(chuàng)建容器
執(zhí)行 docker-compose,開始創(chuàng)建容器
[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
查看容器狀態(tài)(全部正常運(yùn)行如果不正常請(qǐng)查看日志)
[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
基本使用
創(chuàng)建主題
進(jìn)入容器內(nèi)部,并進(jìn)入 bin 目錄下(腳本文件都在這個(gè)目錄下)
[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/
創(chuàng)建主題(任意一個(gè) kafka 即可)
?使用 kafka-topics.sh 腳本在 Kafka 集群(通過 123.249.27.118:9092 訪問)中創(chuàng)建一個(gè)名為 topic1 的新主題,該主題包含 3 個(gè)分區(qū),每個(gè)分區(qū)有 3 個(gè)副本。
Ihave no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ ./kafka-topics.sh --create--bootstrap-server123.249.27.118:9092 --replication-factor3 --partitions3 --topictopic1Createdtopic topic1.
命令不知道如何使用,可以進(jìn)行 help 查詢
./kafka-topics.sh--help
查看主題
查看主題,
?使用 kafka-topics.sh 腳本描述(或查詢)Kafka 集群(通過 123.249.27.118:9092 訪問)中名為 topic1 的主題的詳細(xì)信息。
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
通過執(zhí)行 kafka-topics.sh 腳本的 describe 命令,并指定 bootstrap-server 為 123.249.27.118:9092 以及查詢的 topic 為 topic1,我們觀察到該主題的 3 個(gè)分區(qū)被均勻且成功地分配到了 Kafka 集群的三個(gè) broker 上,這標(biāo)志著這三個(gè) broker 已經(jīng)構(gòu)建了一個(gè)高效協(xié)作、穩(wěn)定運(yùn)行的 Kafka 集群環(huán)境。
查看主題列表
Ihave no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ ./kafka-topics.sh --bootstrap-serverlocalhost:9092 --listtopic1
修改主題信息
分區(qū)數(shù)只能增加,不能減少;副本數(shù)不支持修改。
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#可以看到,已經(jīng)沒有主題存在了 Ihave no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ kafka-topics.sh --bootstrap-serverlocalhost:9092 --list
體驗(yàn)和感受
在大數(shù)據(jù)與實(shí)時(shí)流處理領(lǐng)域,Kafka 以其高吞吐量、低延遲和可擴(kuò)展性贏得了廣泛贊譽(yù)。而華為云 FlexusX 實(shí)例,以其卓越的計(jì)算性能、靈活的資源配置和穩(wěn)定的云環(huán)境,為 Kafka 集群的部署提供了理想平臺(tái)。
在 FlexusX 實(shí)例上部署 Kafka 集群,不僅能夠充分利用其強(qiáng)大的計(jì)算資源,還能通過精細(xì)化的配置與優(yōu)化,實(shí)現(xiàn)集群性能的最大化。我們結(jié)合華為云提供的專業(yè)指導(dǎo)與最佳實(shí)踐,對(duì) Kafka 集群進(jìn)行了深度優(yōu)化,包括網(wǎng)絡(luò)配置、存儲(chǔ)優(yōu)化、分區(qū)與副本策略調(diào)整等,確保 Kafka 在高并發(fā)、大數(shù)據(jù)量場景下依然能夠穩(wěn)定運(yùn)行,提供卓越的服務(wù)質(zhì)量。
值此 828 華為云企業(yè)上云節(jié)之際,誠邀您一起體驗(yàn) FlexusX 實(shí)例下的 Kafka 集群部署與優(yōu)化服務(wù)。在特惠期間,將享受到前所未有的價(jià)格優(yōu)惠與專業(yè)的技術(shù)支持,助您輕松構(gòu)建高效、穩(wěn)定的實(shí)時(shí)數(shù)據(jù)流處理系統(tǒng)。選擇華為云 FlexusX 實(shí)例,讓 Kafka 集群的部署與性能優(yōu)化變得更加簡單、高效。點(diǎn)擊下方鏈接,立即行動(dòng),把握 828 特惠,讓 Kafka 集群在 FlexusX 實(shí)例的強(qiáng)勁動(dòng)力下,開啟數(shù)據(jù)流處理的新篇章!
產(chǎn)品鏈接:華為云Flexus云服務(wù)器X實(shí)例直播建站服務(wù)器-華為云
審核編輯 黃宇
-
華為云
+關(guān)注
關(guān)注
3文章
2605瀏覽量
17475
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論