Kafka kvoodid on mitme rentnikuga Kafka klastrite lahutamatud osad. Need takistavad Kafka klastri jõudlust negatiivselt halvasti käituvatel rakendustel, mis kulutavad klastri ressursse üle. Lisaks võimaldavad need tsentraalset voogesituse andmeplatvormi kasutada mitme rentniku platvormina ning seda kasutada alla- ja ülesvoolu rakendused mitmel äriliinil. Kafka toetab kahte tüüpi kvoote: võrgu ribalaiuse kvoodid ja taotleda määrakvoote. Võrgu ribalaiuse kvoodid määravad baitide kiiruse läved, näiteks kui palju andmeid saavad kliendirakendused igale Kafka klastri üksikule maaklerile toota ja tarbida, mõõdetuna baitides sekundis. Taotluse määrakvoodid piiravad aja protsenti, mille iga maakler kulutab klienditaotluste taotluste töötlemisele. Olenevalt teie konfiguratsioonist saab Kafka kvoodid määrata konkreetsetele kasutajatele, konkreetsetele kliendi ID-dele või mõlemale.
In Osa 1 Selle kaheosalise seeria osas arutasime Kafka kvootide jõustamise kontseptsioone Amazoni hallatav voogesitus Apache Kafka jaoks (Amazon MSK) klastrid kasutamise ajal AWS-i identiteedi- ja juurdepääsuhaldus (IAM) juurdepääsu kontroll.
Selles postituses juhendame teid samm-sammult läbi Kafka kvootide seadistamise MSK klastris, kasutades IAM-i juurdepääsu juhtimist ja testides neid näidiskliendirakenduste kaudu.
Lahenduse ülevaade
Järgmine joonis, mida me esmakordselt tutvustasime Osa 1, illustreerib, kuidas Kafka kliendirakendused (ProducerApp-1
, ConsumerApp-1
ja ConsumerApp-2
) juurdepääs Topic-B
MSK klastris, võttes endale IAM-i kirjutamise ja lugemise rollid. Igal tootja- ja tarbijakliendirakendusel on kvoot, mis määrab, kui palju andmeid nad saavad baitides sekundis toota või tarbida. The ProducerApp-1
kvoot võimaldab toota kuni 1024 baiti sekundis maakleri kohta. Samamoodi on ConsumerApp-1
ja ConsumerApp-2
kvoodid võimaldavad neil maakleri kohta tarbida vastavalt 5120 ja 1024 baiti sekundis. Järgmine on arhitektuuriskeemil näidatud voo lühike selgitus:
- P1 -
ProducerApp-1
(selle kauduProducerApp-1-Role
IAM roll) eeldabTopic-B-Write-Role
IAM-i roll, kellele sõnumeid saataTopic-B
- P2 - Koos
Topic-B-Write-Role
IAM-i roll,ProducerApp-1
hakkab sõnumeid saatmaTopic-B
- C1 -
ConsumerApp-1
(selle kauduConsumerApp-1-Role
IAM roll) jaConsumerApp-2
(selle kauduConsumerApp-2-Role
IAM roll) oletadaTopic-B-Read-Role
IAM-i roll sõnumite lugemiseksTopic-B
- C2 - Koos
Topic-B-Read-Role
IAM-i roll,ConsumerApp-1
jaConsumerApp-2
alustada sõnumite tarbimistTopic-B
Pange tähele, et see postitus kasutab AWS-i käsurea liides (AWS CLI), AWS CloudFormation mallid ja AWS-i juhtimiskonsool AWS-i ressursside varustamise ja muutmise eest ning ette nähtud ressursside eest tasutakse teie AWS-i kontole.
Kõrgetasemelised sammud on järgmised:
- Varustage IAM-i juurdepääsukontrolliga MSK-klaster ja Amazon Elastic Compute Cloud (Amazon EC2) eksemplarid kliendirakenduste jaoks.
- Looma
Topic-B
MSK klastris. - Looge kliendirakendustele juurdepääsuks IAM-i rollid
Topic-B
. - Käivitage tootja- ja tarbijarakendusi kvoote määramata.
- Konfigureerige kliendirakenduste tootmis- ja tarbimiskvoodid.
- Pärast kvootide määramist käivitage rakendused uuesti.
Eeldused
Soovitatav on lugeda Osa 1 enne jätkamist. Alustamiseks vajate järgmist.
- AWS-i konto, mida selles postituses nimetatakse demokontoks, eeldades, et selle konto ID on
1111 1111 1111
- Demokonto AWS-i ressursside loomise, kustutamise ja muutmise õigused
Varustage IAM-i juurdepääsukontrolli ja EC2 eksemplaridega MSK-klaster
See samm hõlmab IAM-i juurdepääsukontrolliga MSK-klastri ettevalmistamist demokonto VPC-s. Lisaks loome neli EC2 eksemplari, et teha konfiguratsioonimuudatusi MSK klastris ning hostitootja ja tarbijakliendi rakendustes.
CloudFormationi virna juurutamine
- Kloonige GitHubi hoidla CloudFormationi mallifailide ja näidiskliendirakenduste allalaadimiseks tehke järgmist.
- Valige AWS CloudFormationi konsoolil Hoidla navigeerimispaanil.
- Vali Loo virn.
- eest Valmistage mall ettevalige Mall on valmis.
- eest Malli allikasvalige Laadige üles mallifail.
- Laadige üles
cfn-msk-stack-1.yaml
fail alatesamazon-msk-kafka-quotas/cfn-templates
kataloog, seejärel valige järgmine. - eest Virna nimi, sisenema
MSKStack
. - Jätke parameetrid vaikeväärtusteks ja valige järgmine.
- Kerige jaotise allossa Konfigureerige virna valikud leht ja vali järgmine jätkama.
- Kerige jaotise allossa Ülevaade lehel märkige ruut Tunnistan, et CloudFormation võib luua IAM-i ressursseja vali LIITU.
Virna valmimiseks kulub umbes 30 minutit. Pärast virna edukat loomist luuakse järgmised ressursid:
- Kolme privaatse alamvõrgu ja ühe avaliku alamvõrguga VPC
- MSK-klaster kolme maakleriga, millel on lubatud IAM-i juurdepääsukontroll
- Nimetatud EC2 eksemplar
MSKAdminInstance
MSK klastri sätete muutmiseks ning AWS-i ressursside loomiseks ja muutmiseks - EC2 eksemplarid
ProducerApp-1
,ConsumerApp-1
jaConsumerApp-2
, üks iga kliendirakenduse jaoks - Eraldi IAM-i roll iga EC2 eksemplari jaoks, mis majutab klientrakendust, nagu on näidatud arhitektuuriskeemil
- Virnast Väljundid pane tähele
MSKClusterArn
väärtus.
Looge MSK klastris teema
Looma Topic-B
MSK klastris tehke järgmised sammud:
- Navigeerige Amazon EC2 konsoolis töötavate EC2 eksemplaride loendisse.
- Valige
MSKAdminInstance
EC2 eksemplar ja valige Võta meiega ühendust. - Kohta Session Manager valige vahekaart Võta meiega ühendust.
- Käivitage brauseris avaneval uuel vahelehel järgmised käsud:
- Määrake keskkonnamuutuja osutama MSK Cluster Brokers IAM lõpp-punktile:
- Võtke teadmiseks selle väärtus
BOOTSTRAP_BROKERS_IAM
. - Käivitage loomiseks järgmine Kafka CLI käsk
Topic-B
MSK klastris:
Kuna MSK-klastril on IAM-i juurdepääsukontroll, on see valik --command-config
osutab config_iam.properties
, mis sisaldab IAM-i juurdepääsu juhtimiseks vajalikke atribuute, mille on loonud MSKStack
CloudFormationi virn.
Kafka CLI käskude käivitamisel võivad ilmuda järgmised hoiatused, kuid võite neid ignoreerida.
- Et seda kontrollida
Topic-B
on loodud, loetlege kõik teemad:
Looge kliendirakendustele IAM-rollid, et pääseda juurde teemale B
See samm hõlmab loomist Topic-B-Write-Role
ja Topic-B-Read-Role
nagu on näidatud arhitektuuriskeemil. Topic-B-Write-Role
võimaldab sisse kirjutada Topic-B
, ja seda võib eeldada ProducerApp-1
. Sarnasel viisil, ConsumerApp-1
ja ConsumerApp-2
võib eeldada Topic-B-Read-Role
lugemistoimingute tegemiseks Topic-B
. Lugemistoimingute tegemiseks Topic-B
, ConsumerApp-1
ja ConsumerApp-2
peab kuuluma ka jooksul määratud tarbijarühmadesse MSKStack
virnavärskendus järgmises etapis.
Looge rollid järgmiste sammudega.
- Valige AWS CloudFormationi konsoolil Hoidla navigeerimispaanil.
- valima
MSKStack
Ja vali Värskendused. - eest Valmistage mall ette, valige Asenda praegune mall.
- eest Malli allikasvalige Laadige üles mallifail.
- Laadige üles
cfn-msk-stack-2.yaml
fail alatesamazon-msk-kafka-quotas/cfn-templates
kataloog, seejärel valige järgmine. - Esitage järgmised virna parameetrid:
-
- eest Teema B ARN, sisestage
Topic-B
RNA.
- eest Teema B ARN, sisestage
ARN peab olema vormindatud kujul arn:aws:kafka:region:account-id:topic/msk-cluster-name/msk-cluster-uuid/Topic-B
. Kasutage varem märgitud MSK klastri ARN klastri nime ja klastri UUID-d ning sisestage oma AWS-i piirkond. Lisateabe saamiseks vaadake IAM-i juurdepääsukontroll Amazon MSK jaoks.
-
- eest ConsumerApp-1 tarbijarühma nimi, sisenema
ConsumerApp-1
tarbijarühm ARN.
- eest ConsumerApp-1 tarbijarühma nimi, sisenema
See peab olema vormindatud kujul arn:aws:kafka:region:account-id:group/msk-cluster-name/msk-cluster-uuid/consumer-group-name
-
- eest ConsumerApp-2 tarbijarühma nimi, sisenema
ConsumerApp-2
tarbijarühm ARN.
- eest ConsumerApp-2 tarbijarühma nimi, sisenema
Kasutage sarnast vormingut nagu eelmine ARN.
- Vali järgmine jätkama.
- Kerige jaotise allossa Konfigureerige virn valikute leht ja valige järgmine jätkama.
- Kerige jaotise allossa Ülevaade lehel märkige ruut Tunnistan, et CloudFormation võib luua IAM-i ressursseja vali Värskenda virna.
Virna värskendamiseks kulub umbes 3 minutit. Pärast virna edukat värskendamist luuakse järgmised ressursid:
- Teema-B-Kirjuta-Roll – IAM-i roll, millel on luba kirjutustoimingute tegemiseks
Topic-B
. Selle usalduspoliitika võimaldabProducerApp-1-Role
IAM-i roll seda endale võtta. - Teema-B-Loe-Roll – IAM-i roll, millel on luba lugemistoimingute tegemiseks
Topic-B
. Selle usalduspoliitika võimaldabConsumerApp-1-Role
jaConsumerApp-2-Role
IAM-i rollid seda endale võtta. LisaksConsumerApp-1
jaConsumerApp-2
peab kuuluma ka tarbijarühmadesse, mille määrasite virna värskendamisel lugemistoimingute tegemiseksTopic-B
.
- Virnast Väljundid pane tähele
TopicBReadRoleARN
jaTopicBWriteRoleARN
väärtused.
Käivitage tootja- ja tarbijarakendusi kvoote määramata
Siin me jookseme ProducerApp-1
, ConsumerApp-1
ja ConsumerApp-2
oma kvoote kehtestamata. Eelmistest sammudest vajate BOOTSTRAP_BROKERS_IAM
väärtus, Topic-B-Write-Role
ARN ja Topic-B-Read-Role
ARN. Kliendirakenduste lähtekood ja nende pakendatud versioonid on saadaval aadressil GitHubi hoidla.
Käivitage rakendus ConsumerApp-1
Käivitada ConsumerApp-1
rakendus, täitke järgmised sammud:
- Amazon EC2 konsoolil valige
ConsumerApp-1
EC2 eksemplar ja valige Võta meiega ühendust. - Kohta Session Manager valige vahekaart Võta meiega ühendust.
- Käivitage brauseris avaneval uuel vahelehel järgmised käsud:
- Käivita
ConsumerApp-1
rakendus, kust sõnumeid tarbidaTopic-B
:
Leiad lähtekoodi GitHubis. Käsurea parameetri üksikasjad on järgmised:
- -bootstrap-serverid – MSK klastri alglaadimisvahendaja IAM-i lõpp-punkt.
- –olema-rolli-arn -
Topic-B-Read-Role
IAM roll ARN. Võttes seda rolli,ConsumerApp-1
loeb selle teema sõnumeid. - – piirkond – Teie kasutatav piirkond.
- – teema-nimi – Teema nimi, millest
ConsumerApp-1
loeb sõnumeid. Vaikimisi onTopic-B
. - - tarbijarühm – tarbijarühma nimi
ConsumerApp-1
, nagu on määratud virna värskendamise ajal. - –rolli-seansi-nimi -
ConsumerApp-1
eeldabTopic-B-Read-Role
kasutades AWS-i turvamärgi teenus (AWS STS) SDK.ConsumerApp-1
kasutab seda rolliseansi nime helistamiselassumeRole
funktsiooni. - -kliendi ID - Kliendi ID jaoks
ConsumerApp-1
. - –prinditarbijakvoodi mõõdikud – lipp, mis näitab, kas kliendi mõõdikud peaks terminalis printima
ConsumerApp-1
. - -cw-dimension-nimi - Amazon CloudWatch dimensiooni nimi, mida kasutatakse kliendi piiramise mõõdikute avaldamiseks
ConsumerApp-1
. - -cw-dimensiooni väärtus – CloudWatchi dimensiooni väärtus, mida kasutatakse kliendi piiramismõõdikute avaldamiseks
ConsumerApp-1
. - –cw-nimeruum – nimeruum kus
ConsumerApp-1
avaldab piiramise jälgimiseks CloudWatchi mõõdikud.
- Kui olete ülejäänud parameetritega rahul, kasutage järgmist käsku ja muutke
--assume-role-arn
ja--region
vastavalt teie keskkonnale:
. fetch-throttle-time-avg
ja fetch-throttle-time-max
kliendimõõdikud peaksid näitama 0.0, mis näitab, et piiranguid ei toimu ConsumerApp-1
. Pidage meeles, et me pole tarbimiskvooti määranud ConsumerApp-1
veel. Lase veidi aega joosta.
Käivitage rakendus ConsumerApp-2
Käivitada ConsumerApp-2
rakendus, täitke järgmised sammud:
- Amazon EC2 konsoolil valige
ConsumerApp-2
EC2 eksemplar ja valige Võta meiega ühendust. - Kohta Session Manager valige vahekaart Võta meiega ühendust.
- Käivitage brauseris avaneval uuel vahelehel järgmised käsud:
- Käivita
ConsumerApp-2
rakendus, kust sõnumeid tarbidaTopic-B
:
Koodil on sarnased käsurea parameetrite üksikasjad nagu ConsumerApp-1
eelnevalt arutatud, välja arvatud järgmised:
- - tarbijarühm – tarbijarühma nimi
ConsumerApp-2
, nagu on määratud virna värskendamise ajal. - –rolli-seansi-nimi -
ConsumerApp-2
eeldabTopic-B-Read-Role
kasutades AWS STS SDK-d.ConsumerApp-2
kasutab seda rolliseansi nime helistamiselassumeRole
funktsiooni. - -kliendi ID - Kliendi ID jaoks
ConsumerApp-2
.
- Kui olete ülejäänud parameetritega rahul, kasutage järgmist käsku ja muutke
--assume-role-arn
ja--region
vastavalt teie keskkonnale:
. fetch-throttle-time-avg
ja fetch-throttle-time-max
kliendimõõdikud peaksid näitama 0.0, mis näitab, et piiranguid ei toimu ConsumerApp-2
. Pidage meeles, et me pole tarbimiskvooti määranud ConsumerApp-2
veel. Lase veidi aega joosta.
Käivitage rakendus ProducerApp-1
Käivitada ProducerApp-1
rakendus, täitke järgmised sammud:
- Amazon EC2 konsoolil valige
ProducerApp-1
EC2 eksemplar ja valige Võta meiega ühendust. - Kohta Session Manager valige vahekaart Võta meiega ühendust.
- Käivitage brauseris avaneval uuel vahelehel järgmised käsud:
- Käivita
ProducerApp-1
sõnumite saatmise alustamiseksTopic-B
:
Leiad lähtekoodi GitHubis. Käsurea parameetri üksikasjad on järgmised:
- -bootstrap-serverid – MSK klastri alglaadimisvahendaja IAM-i lõpp-punkt.
- –olema-rolli-arn -
Topic-B-Write-Role
IAM roll ARN. Võttes seda rolli,ProducerApp-1
kirjutan teemale sõnumeid. - – teema-nimi -
ProducerApp-1
saadab sellele teemale sõnumeid. Vaikimisi onTopic-B
. - – piirkond - AWS-i piirkond, mida kasutate.
- -teadete arv – Sõnumite arv
ProducerApp-1
avaldus saadetakse teemasse. - –rolli-seansi-nimi -
ProducerApp-1
eeldabTopic-B-Write-Role
kasutades AWS STS SDK-d.ProducerApp-1
kasutab seda rolliseansi nime helistamiselassumeRole
funktsiooni. - -kliendi ID – kliendi ID
ProducerApp-1
. - -tootja tüüpi -
ProducerApp-1
saab joosta ka sünkroonselt or asünkroonselt. Valikud on sünkroonida or async. - – trükitootja kvoodimõõdikud – lipp, mis näitab, kas kliendi mõõdikud tuleks terminalile printida ProducerApp-1.
- -cw-dimension-nimi – CloudWatchi dimensiooni nimi, mida kasutatakse kliendi piiramismõõdikute avaldamiseks ProducerApp-1.
- -cw-dimensiooni väärtus – CloudWatchi dimensiooni väärtus, mida kasutatakse kliendi piiramismõõdikute avaldamiseks ProducerApp-1.
- –cw-nimeruum – nimeruum, kus ProducerApp-1 avaldab piiramise jälgimiseks CloudWatchi mõõdikud.
- Kui olete ülejäänud parameetritega rahul, kasutage järgmist käsku ja muutke
--assume-role-arn
ja--region
vastavalt teie keskkonnale. Sünkroonse Kafka tootja käivitamiseks kasutab see valikut--producer-type sync
:
Teise võimalusena kasutage --producer-type async
asünkroonse tootja juhtimiseks. Lisateabe saamiseks vaadake Asünkroonne saatmine.
. produce-throttle-time-avg
ja produce-throttle-time-max
kliendimõõdikud peaksid näitama 0.0, mis näitab, et piiranguid ei toimu ProducerApp-1
. Pidage meeles, et me pole tootekvooti määranud ProducerApp-1
veel. Kontrollige seda ConsumerApp-1
ja ConsumerApp-2
saab sõnumeid tarbida ja märgata, et neid ei piirata. Peatage tarbija- ja tootjakliendi rakendused, vajutades Ctrl + C nende vastavatel brauseri vahekaartidel.
Määrake kliendirakenduste tootmis- ja tarbimiskvoodid
Nüüd, kui oleme käivitanud tootja- ja tarbijarakendused ilma kvootideta, määrame nende kvoodid ja käivitame need uuesti.
avage Seansijuht terminal jaoks MSKAdminInstance
EC2 eksemplari, nagu varem kirjeldatud, ja käivitage järgmised käsud, et leida MSK-klastri ühe maakleri vaikekonfiguratsioon. MSK klastrid on varustatud Kafka kvootide vaikekonfiguratsiooniga.
Järgmine ekraanipilt näitab Broker-1
vaikeväärtused quota.consumer.default
ja quota.producer.default
.
ProducerApp-1 kvoodi konfiguratsioon
Asendage kohahoidjad kõigis selle jaotise käskudes väärtustega, mis vastavad teie kontole.
Vastavalt varem käsitletud arhitektuuriskeemile määrake ProducerApp-1
tootmiskvoot kuni 1024 baiti sekundis. Sest <ProducerApp-1 Client Id>
ja <ProducerApp-1 Role Session>
, veenduge, et kasutaksite samu väärtusi, mida kasutasite töötamise ajal ProducerApp-1
varem (producerapp-1-client-id
ja producerapp-1-role-session
vastavalt):
Kontrollige ProducerApp-1
toota kvooti, kasutades järgmist käsku:
Saate selle eemaldada ProducerApp-1
toota kvooti, kasutades järgmist käsku, kuid ära käivita käsku järgmisena katsetame kvoote.
ConsumerApp-1 kvoodi konfiguratsioon
Asendage kohahoidjad kõigis selle jaotise käskudes väärtustega, mis vastavad teie kontole.
Määrame tarbimiskvoodiks 5120 baiti sekundis ConsumerApp-1
. Foorum <ConsumerApp-1 Client Id>
ja <ConsumerApp-1 Role Session>
, veenduge, et kasutaksite samu väärtusi, mida kasutasite töötamise ajal ConsumerApp-1
varem (consumerapp-1-client-id
ja consumerapp-1-role-session
vastavalt):
kafka-configs.sh --bootstrap-server $BOOTSTRAP_BROKERS_IAM --command-config config_iam.properties --alter --add-config 'consumer_byte_rate=5120' --entity-type clients --entity-name <ConsumerApp-1 Client Id> --entity-type users --entity-name arn:aws:sts::<AWS Account Id>:assumed-role/MSKStack-TopicBReadRole-xxxxxxxxxxx/<ConsumerApp-1 Role Session>
Kontrollige ConsumerApp-1
tarbi kvooti, kasutades järgmist käsku:
Saate selle eemaldada ConsumerApp-1
tarbida kvooti, kasutades järgmist käsku, kuid ära käivita käsku järgmisena katsetame kvoote.
ConsumerApp-2 kvoodi konfiguratsioon
Asendage kohahoidjad kõigis selle jaotise käskudes väärtustega, mis vastavad teie kontole.
Määrame tarbimiskvoodiks 1024 baiti sekundis ConsumerApp-2
. Foorum <ConsumerApp-2 Client Id>
ja <ConsumerApp-2 Role Session>
, veenduge, et kasutaksite samu väärtusi, mida kasutasite töötamise ajal ConsumerApp-2
varem (consumerapp-2-client-id
ja consumerapp-2-role-session
vastavalt):
Kontrollige ConsumerApp-2
tarbi kvooti, kasutades järgmist käsku:
Nagu ka ConsumerApp-1
, saate eemaldada ConsumerApp-2
tarbida kvooti, kasutades sama käsku ConsumerApp-2
kliendi ja kasutaja andmed.
Pärast kvootide määramist käivitage tootja- ja tarbijarakendus uuesti
Käivitame rakendused uuesti, et kontrollida kvootide mõju.
Käivitage ProducerApp-1 uuesti
Kordus ProducerApp-1
in sünkroonne režiimis sama käsuga, mida varem kasutasite. Järgmine ekraanipilt illustreerib, millal ProducerApp-1
saavutab oma kvoodi mis tahes maakleri puhul produce-throttle-time-avg
ja produce-throttle-time-max client
mõõdikute väärtus on suurem kui 0.0. Väärtus üle 0.0 näitab seda ProducerApp-1
on drosseldatud. Lubama ProducerApp-1
mõneks sekundiks töötamiseks ja seejärel peatamiseks kasutades Ctrl + C.
Tootmiskvoodi mõju saate testida ka uuesti käivitades ProducerApp-1
uuesti sisse asünkroonne režiim (--producer-type async
). Sarnaselt sünkroonse käivitamisega illustreerib järgmine ekraanipilt, et millal ProducerApp-1
saavutab oma kvoodi mis tahes maakleri puhul produce-throttle-time-avg
ja produce-throttle-time-max
kliendimõõdikute väärtus on suurem kui 0.0. Väärtus üle 0.0 näitab seda ProducerApp-1
on drosseldatud. Luba asünkroonne ProducerApp-1
mõnda aega joosta.
Lõpuks näete a TimeoutException
märkides org.apache.kafka.common.errors.TimeoutException: Expiring xxxxx record(s) for Topic-B-2:xxxxxxx ms has passed since batch creation
Kasutades asünkroonne tootja ja saates sõnumeid suurema kiirusega, kui maakler suudab kvoodi tõttu vastu võtta, seatakse sõnumid esmalt kliendirakenduse mällu järjekorda. Kliendil saab lõpuks puhvriruum otsa, kui sõnumite saatmise määr ületab jätkuvalt sõnumite vastuvõtmise kiirust, põhjustades järgmise Producer.send()
kõne blokeerimiseks. Producer.send()
lõpuks viskab a TimeoutException
kui aegumise viivitus ei ole piisav, et võimaldada maakleril tootja taotlusele järele jõuda. Peatus ProducerApp-1
abil Ctrl + C.
Käivitage uuesti ConsumerApp-1
Kordus ConsumerApp-1
sama käsuga, mida varem kasutasite. Järgmine ekraanipilt illustreerib, millal ConsumerApp-1
saavutab oma kvoodi, fetch-throttle-time-avg
ja fetch-throttle-time-max client
mõõdikute väärtus on suurem kui 0.0. Väärtus üle 0.0 näitab seda ConsumerApp-1
on drosseldatud.
lubama ConsumerApp-1
mõneks sekundiks töötamiseks ja seejärel peatamiseks kasutades Ctrl + C.
Käivitage uuesti ConsumerApp-2
Kordus ConsumerApp-2
sama käsuga, mida varem kasutasite. Samamoodi, kui ConsumerApp-2
saavutab oma kvoodi, fetch-throttle-time-avg
ja fetch-throttle-time-max client
mõõdikute väärtus on suurem 0.0. Väärtus ülevalpool 0.0 tähistab seda ConsumerApp-2
on drosseldatud. Lubama ConsumerApp-2
mõneks sekundiks käivitamiseks ja seejärel peatamiseks vajutades Ctrl + C.
Kliendikvoodi mõõdikud Amazon CloudWatchis
In Osa 1, selgitasime, et kliendimõõdikud on Kafka klastritega ühenduvate klientide poolt avaldatud mõõdikud. Uurime CloudWatchi kliendimõõdikuid.
- Valige CloudWatchi konsoolil Kõik mõõdikud.
- alla Kohandatud nimeruumid, valige nimeruum, mille sisestasite klientrakenduste käitamise ajal.
- Valige dimensiooni nimi ja valige
produce-throttle-time-max
,produce-throttle-time-avg
,fetch-throttle-time-max
jafetch-throttle-time-avg metrics
kõigi rakenduste jaoks.
Need mõõdikud näitavad drosselkäitumist ProducerApp-1
, ConsumerApp-1
ja ConsumerApp-2
eelmise jaotise kvoodikonfiguratsioonidega testitud rakendused. Järgmised ekraanipildid näitavad drosselit ProducerApp-1
, ConsumerApp-1
ja ConsumerApp-2
võrgu ribalaiuse kvootide alusel. ProducerApp-1
, ConsumerApp-1
ja ConsumerApp-2
rakendused edastavad oma vastavad kliendimõõdikud CloudWatchi. Võite leida lähtekoodi GitHubis.
Turvalise kliendi ID ja rolliseansi nimi
Arutasime, kuidas rakenduse abil Kafka kvoote konfigureerida kliendi ID ja autentitud kasutaja peadirektor. Kui klientrakendus võtab IAM-i rolli, et pääseda juurde Kafka teemadele MSK-klastris, kui IAM-autentimine on lubatud, on see autentitud kasutaja printsipaal on esitatud järgmises vormingus (lisateabe saamiseks vt IAM-i identifikaatorid):
arn:aws:sts::111111111111:assumed-role/Topic-B-Write-Role/producerapp-1-role-session
See sisaldab rolliseansi nimi (sel juhul, producerapp-1-role-session
), mida kasutatakse kliendirakenduses, võttes samal ajal AWS STS SDK kaudu IAM-i rolli. Kliendirakendus lähtekoodi on teie jaoks saadaval. The kliendi ID on loogiline nimestring (näiteks producerapp-1-client-id
), mis on rakenduse meeskonna poolt rakenduse koodis konfigureeritud. Seetõttu võib rakendus esineda teise rakendusena, kui ta saab kliendi ID ja rolliseansi nimi ja kui sellel on luba võtta endale sama IAM-i roll.
Nagu on näidatud arhitektuuriskeemil, ConsumerApp-1
ja ConsumerApp-2
on kaks eraldi kliendirakendust koos nende vastavate kvoodieraldistega. Kuna mõlemal on luba võtta sama IAM-i roll (Topic-B-Read-Role
) demokontol on neil lubatud tarbida sõnumeid Topic-B
. Seega eristavad MSK klastri maaklerid neid nende põhjal kliendi ID-d ja Kasutajad (mis sisaldavad vastavaid rolliseansi nimi väärtused). Kui ConsumerApp-2
kuidagi saab kätte ConsumerApp-1
rolliseansi nimi ja kliendi ID, võib see esineda ConsumerApp-1
täpsustades ConsumerApp-1
rolliseansi nimi ja kliendi ID rakenduse koodis.
Oletame ConsumerApp-1
kasutusalad consumerapp-1-client-id
ja consumerapp-1-role-session
kui selle kliendi ID ja rolliseansi nimi, vastavalt. Seetõttu ConsumerApp-1's
autenditud kasutaja printsiip kuvatakse järgmiselt, kui see eeldab Topic-B-Read-Role
IAM-i roll:
arn:aws:sts::<AWS Account Id>:assumed-role/Topic-B-Read-Role/consumerapp-1-role-session
Samuti ConsumerApp-2
kasutusalad consumerapp-2-client-id
ja consumerapp-2-role-session
kui selle kliendi ID ja rolliseansi nimi, vastavalt. Seetõttu ConsumerApp-2's
autenditud kasutaja printsiip kuvatakse järgmiselt, kui see eeldab Topic-B-Read-Role
IAM-i roll:
arn:aws:sts::<AWS Account Id>:assumed-role/Topic-B-Read-Role/consumerapp-2-role-session
If ConsumerApp-2
saab ConsumerApp-1's
kliendi ID ja rolliseansi nimi ja määrab need oma rakenduse koodis, käsitlevad MSK klastri maaklerid seda kui ConsumerApp-1
ja vaadake seda kliendi ID as consumerapp-1-client-id
ja autentitud kasutaja põhikiri järgmiselt:
arn:aws:sts::<AWS Account Id>:assumed-role/Topic-B-Read-Role/consumerapp-1-role-session
See võimaldab ConsumerApp-2
tarbima MSK-klastri andmeid maksimaalselt 5120 baiti sekundis, mitte 1024 baiti sekundis vastavalt algsele kvoodieraldusele. Järelikult ConsumerApp-1's
läbilaskevõimet mõjutab see negatiivselt, kui ConsumerApp-2
jookseb samaaegselt.
Täiustatud arhitektuur
Saate tutvustada AWS-i saladuste haldur ja AWS-i võtmehaldusteenus (AWS KMS) rakenduste kaitsmise arhitektuuris kliendi ID-d ja rolliseansside nimed. Tugevama juhtimise tagamiseks tuleb rakenduste kliendi ID ja rolliseansi nimi salvestada krüpteeritud saladustena saladuste halduris. Krüpteeritud saladuste ja KMS-i kliendi hallatava võtmega (CMK) seotud IAM-i ressursipoliitikad võimaldavad rakendustel juurde pääseda ja dekrüpteerida ainult oma vastava kliendi ID ja rolliseansi nime. Sel viisil ei pääse rakendused üksteise kliendi ID-le ja rolliseansi nimele juurde ega esine üksteisena. Järgmine pilt näitab täiustatud arhitektuuri.
Värskendatud voos on järgmised etapid.
- P1 -
ProducerApp-1
võtab selle tagasiclient-id
jarole-session-name
saladused saladuste haldurilt - P2 -
ProducerApp-1
konfigureerib saladuseclient-id
asCLIENT_ID_CONFIG
rakenduse koodis ja eeldabTopic-B-Write-Role
(selle kauduProducerApp-1-Role
IAM-i roll), edastades saladuserole-session-name
AWS STS SDK-leassumeRole
funktsiooni kutse - P3 - Koos
Topic-B-Write-Role
IAM-i roll,ProducerApp-1
hakkab sõnumeid saatmaTopic-B
- C1 -
ConsumerApp-1
jaConsumerApp-2
oma vastavad hankidaclient-id
jarole-session-name
saladused saladuste haldurilt - C2 -
ConsumerApp-1
jaConsumerApp-2
konfigureerida nende vastav saladusclient-id
asCLIENT_ID_CONFIG
oma rakenduse koodis ja eeldageTopic-B-Write-Role
(viaConsumerApp-1-Role
jaConsumerApp-2-Role
vastavalt IAM rollid), edastades nende saladuserole-session-name
AWS STS SDK-sassumeRole
funktsiooni kutse - C3 - Koos
Topic-B-Read-Role
IAM-i roll,ConsumerApp-1
jaConsumerApp-2
alustada sõnumite tarbimistTopic-B
Selle kohta vaadake dokumentatsiooni AWS-i saladuste haldur ja AWS KMS et paremini mõista, kuidas need arhitektuuriga sobivad.
Puhastage ressursse
Liikuge CloudFormationi konsooli ja kustutage MSKStack
virna. Kõik selle postituse ajal loodud ressursid kustutatakse.
Järeldus
Selles postituses käsitlesime üksikasjalikke samme Amazon MSK kvootide konfigureerimiseks ja demonstreerisime nende mõju näidiskliendirakenduste kaudu. Lisaks arutasime, kuidas saate kliendimõõdikute abil kindlaks teha, kas kliendirakendus on piiratud. Samuti tõstsime esile võimaliku probleemi lihtteksti kliendi ID-de ja rolliseansside nimedega. Usaldusvaba arhitektuuri tagamiseks soovitame rakendada Kafka kvoodid Amazon MSK-ga, kasutades Secrets Manageri ja AWS KMS-i vastavalt muudetud arhitektuuriskeemile.
Kui teil on selle postituse, sealhulgas muudetud arhitektuuri kohta tagasisidet või küsimusi, võtame teilt hea meelega kuulda. Loodame, et teile meeldis selle postituse lugemine.
Teave Autor
Vikas Bajaj on Amazon Web Servicesi finantsteenuste osakonna lahendusarhitektide vanemjuht. Omades üle kahe aastakümne kogemust finantsteenuste vallas ja töötades digitaalsete ettevõtetega, nõustab ta kliente tootekujunduse, tehnoloogiliste tegevuskavade ja rakenduste arhitektuuri küsimustes.
- SEO-põhise sisu ja PR-levi. Võimenduge juba täna.
- EVM Finance. Detsentraliseeritud rahanduse ühtne liides. Juurdepääs siia.
- Quantum Media Group. IR/PR võimendatud. Juurdepääs siia.
- PlatoAiStream. Web3 andmete luure. Täiustatud teadmised. Juurdepääs siia.
- Allikas: https://aws.amazon.com/blogs/big-data/multi-tenancy-apache-kafka-clusters-in-amazon-msk-with-iam-access-control-and-kafka-quotas-part-2/
- :on
- :on
- :mitte
- : kus
- $ UP
- 1
- 10
- 11
- 30
- 7
- 70
- 8
- 9
- a
- Võimalik
- MEIST
- üle
- aktsepteerima
- aktsepteerimine
- juurdepääs
- konto
- kinnitada
- üle
- lisama
- lisamine
- Täiendavad lisad
- Lisaks
- pärast
- jälle
- Materjal: BPA ja flataatide vaba plastik
- eraldamine
- eraldised
- võimaldama
- võimaldab
- Ka
- Amazon
- Amazon EC2
- Amazon Web Services
- an
- ja
- Teine
- mistahes
- Apache
- Apache Kafka
- ilmuma
- taotlus
- rakendused
- umbes
- arhitektuur
- OLEME
- AS
- seotud
- oletus
- At
- autenditud
- Autentimine
- saadaval
- AWS
- AWS CloudFormation
- Bandwidth
- põhineb
- BE
- sest
- olnud
- enne
- on
- Parem
- blokeeritud
- Bootstrap
- mõlemad
- põhi
- Kast
- maakler
- maaklerid
- brauseri
- puhver
- äri
- ettevõtted
- kuid
- by
- helistama
- kutsutud
- kutsudes
- CAN
- juhul
- CAT
- maadlus
- põhjustades
- CD
- kesk-
- muutma
- Vaidluste lahendamine
- kontrollima
- Vali
- klass
- klient
- kliendid
- Cluster
- kood
- ühine
- täitma
- Arvutama
- mõisted
- konfiguratsioon
- konfigureeritud
- ühendamine
- Järelikult
- konsool
- tarbima
- tarbija
- sisaldab
- jätkama
- pidev
- jätkates
- kontrollida
- kaetud
- looma
- loodud
- loomine
- Praegune
- klient
- Kliendid
- andmed
- Andmeplatvorm
- aastakümnete
- Avaldage lahti
- vaikimisi
- viivitus
- Demo
- Näidatud
- Olenevalt
- kirjeldama
- kirjeldatud
- Disain
- üksikasjalik
- detailid
- Määrama
- määrab
- mõõde
- arutatud
- Ekraan
- eristama
- dokumentatsioon
- lae alla
- kaks
- ajal
- iga
- Ajalugu
- miss
- mõju
- kumbki
- võimaldama
- lubatud
- võimaldab
- krüpteeritud
- Lõpp-punkt
- jõustada
- tõhustatud
- tagama
- sisene
- keskkond
- vead
- Eeter (ETH)
- lõpuks
- uurima
- näide
- ületama
- Välja arvatud
- kogemus
- selgitas
- selgitus
- eksport
- avatud
- tagasiside
- vähe
- Joonis
- fail
- Faile
- finants-
- finantsteenused
- leidma
- esimene
- sobima
- voog
- Järel
- järgneb
- eest
- formaat
- neli
- Alates
- funktsioon
- Pealegi
- saama
- Git
- GitHub
- valitsemistava
- suurem
- Grupp
- Grupi omad
- õnnelik
- Olema
- he
- kuulama
- kõrgetasemeline
- Esiletõstetud
- lootus
- võõrustaja
- hosts
- Kuidas
- Kuidas
- HTML
- http
- HTTPS
- IAM
- ID
- Identity
- IDd
- if
- illustreerib
- pilt
- mõjutatud
- täitmine
- rakendamisel
- in
- Kaasa arvatud
- näitama
- näitab
- Näitab
- eraldi
- info
- Näiteks
- lahutamatu
- sisse
- kehtestama
- sisse
- pole
- probleem
- IT
- ITS
- Java
- jpg
- Kafka
- Võti
- teatud
- LIMIT
- joon
- liinid
- nimekiri
- loogiline
- tegema
- juhitud
- juhtimine
- juht
- maksimaalne
- mai..
- mõõdetud
- Mälu
- kirjad
- Meetrika
- protokoll
- viis
- muutma
- Jälgida
- rohkem
- MS
- palju
- mitmekordne
- peab
- nimi
- nimed
- Navigate
- NAVIGATSIOON
- Vajadus
- negatiivselt
- võrk
- Uus
- järgmine
- ei
- märkida
- Märka..
- number
- saab
- esineb
- of
- on
- ONE
- ainult
- Avaneb
- tegutses
- Operations
- valik
- Valikud
- or
- et
- originaal
- Muu
- välja
- üle
- pakendatud
- lehekülg
- pane
- parameeter
- parameetrid
- osa
- Vastu võetud
- Mööduv
- tee
- protsent
- täitma
- jõudlus
- luba
- Lihttekst
- inimesele
- Platon
- Platoni andmete intelligentsus
- PlatoData
- Punkt
- võrra
- Poliitika
- poliitika
- post
- potentsiaal
- pressimine
- vältida
- eelmine
- varem
- Peamine
- era-
- töötlemine
- tootma
- tootja
- Toode
- tootedisain
- omadused
- anda
- tingimusel
- avalik
- avaldama
- Küsimused
- määr
- pigem
- Jõuab
- Lugenud
- Lugemine
- soovitama
- soovitatav
- nimetatud
- piirkond
- meeles pidama
- kõrvaldama
- asendama
- Hoidla
- esindatud
- taotleda
- Taotlusi
- nõutav
- ressurss
- Vahendid
- need
- vastavalt
- REST
- teekaardid
- Roll
- rollid
- jooks
- jooksmine
- s
- sama
- rahul
- rahul
- ekraanipilte
- SDK
- Teine
- sekundit
- Saladus
- Osa
- kindlustama
- turvalisus
- turvakoodi
- vaata
- saatma
- saatmine
- vanem
- eri
- Seeria
- Teenused
- istung
- komplekt
- kehtestamine
- seaded
- peaks
- näidatud
- Näitused
- sarnane
- Samamoodi
- alates
- Lahendused
- allikas
- lähtekoodi
- Ruum
- konkreetse
- määratletud
- Kestab
- etappidel
- algus
- alustatud
- Samm
- Sammud
- Peatus
- ladustatud
- streaming
- nöör
- tugevam
- alamvõrgud
- järgnev
- Edukalt
- selline
- piisav
- varustatud
- Toetab
- Võtma
- meeskond
- Tehnoloogia
- šabloon
- malle
- terminal
- test
- katsetatud
- Testimine
- kui
- et
- .
- Allikas
- oma
- Neile
- SIIS
- seetõttu
- nad
- see
- kolm
- Läbi
- läbilaskevõime
- aeg
- et
- sümboolne
- teema
- Teemasid
- käsitlema
- Usalda
- kaks
- tüüp
- liigid
- mõistmine
- Värskendused
- ajakohastatud
- ajakohastamine
- kasutama
- Kasutatud
- Kasutaja
- Kasutajad
- kasutusalad
- kasutamine
- väärtus
- Väärtused
- kontrollima
- kaudu
- vaade
- oli
- Tee..
- we
- web
- veebiteenused
- Hästi
- millal
- kas
- mis
- kuigi
- will
- koos
- ilma
- töö
- kirjutama
- veel
- sa
- Sinu
- sephyrnet