కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

గమనిక. అనువాదం.: ఈ ఆర్టికల్‌లో, బాంజాయ్ క్లౌడ్ దాని కస్టమ్ టూల్స్‌ను కుబెర్నెట్స్‌లో ఉపయోగించడానికి కాఫ్కాను సులభతరం చేయడానికి ఎలా ఉపయోగించవచ్చో ఒక ఉదాహరణను పంచుకుంటుంది. కింది సూచనలు మీరు మీ ఇన్‌ఫ్రాస్ట్రక్చర్ యొక్క సరైన పరిమాణాన్ని ఎలా నిర్ణయించవచ్చు మరియు అవసరమైన నిర్గమాంశను సాధించడానికి కాఫ్కాను కాన్ఫిగర్ చేయడం ఎలాగో వివరిస్తాయి.

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

అపాచీ కాఫ్కా అనేది విశ్వసనీయమైన, స్కేలబుల్ మరియు అధిక-పనితీరు గల నిజ-సమయ స్ట్రీమింగ్ సిస్టమ్‌లను రూపొందించడానికి పంపిణీ చేయబడిన స్ట్రీమింగ్ ప్లాట్‌ఫారమ్. దాని ఆకట్టుకునే సామర్థ్యాలను Kubernetes ఉపయోగించి విస్తరించవచ్చు. దీని కోసం మేము అభివృద్ధి చేసాము ఓపెన్ సోర్స్ కాఫ్కా ఆపరేటర్ మరియు అనే సాధనం సూపర్ ట్యూబ్స్. వారు మిమ్మల్ని కుబెర్నెట్స్‌లో కాఫ్కాను అమలు చేయడానికి మరియు బ్రోకర్ కాన్ఫిగరేషన్‌ను చక్కగా ట్యూన్ చేయడం, రీబ్యాలెన్సింగ్‌తో మెట్రిక్ ఆధారిత స్కేలింగ్, ర్యాక్ అవగాహన, “సాఫ్ట్” వంటి వివిధ లక్షణాలను ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తారు. (సుందరమైన) అప్‌డేట్‌లను విడుదల చేయడం మొదలైనవి.

మీ క్లస్టర్‌లో సూపర్‌ట్యూబ్‌లను ప్రయత్నించండి:

curl https://getsupertubes.sh | sh и supertubes install -a --no-democluster --kubeconfig <path-to-eks-cluster-kubeconfig-file>

లేదా సంప్రదించండి డాక్యుమెంటేషన్. మీరు కాఫ్కా యొక్క కొన్ని సామర్థ్యాల గురించి కూడా చదువుకోవచ్చు, సూపర్‌ట్యూబ్‌లు మరియు కాఫ్కా ఆపరేటర్‌ని ఉపయోగించి ఆటోమేటెడ్ పని. మేము వారి గురించి బ్లాగులో ఇప్పటికే వ్రాసాము:

మీరు కుబెర్నెట్స్‌లో కాఫ్కా క్లస్టర్‌ని అమలు చేయాలని నిర్ణయించుకున్నప్పుడు, అంతర్లీన మౌలిక సదుపాయాల యొక్క సరైన పరిమాణాన్ని నిర్ణయించే సవాలును మీరు ఎదుర్కొంటారు మరియు త్రౌపుట్ అవసరాలను తీర్చడానికి మీ కాఫ్కా కాన్ఫిగరేషన్‌ను చక్కగా ట్యూన్ చేయాల్సిన అవసరం ఉంది. ప్రతి బ్రోకర్ యొక్క గరిష్ట పనితీరు మెమరీ, ప్రాసెసర్, డిస్క్ వేగం, నెట్‌వర్క్ బ్యాండ్‌విడ్త్ మొదలైన అంతర్లీన ఇన్‌ఫ్రాస్ట్రక్చర్ భాగాల పనితీరు ద్వారా నిర్ణయించబడుతుంది.

ఆదర్శవంతంగా, బ్రోకర్ కాన్ఫిగరేషన్ అన్ని అవస్థాపన అంశాలు వాటి గరిష్ట సామర్థ్యాలకు ఉపయోగించబడే విధంగా ఉండాలి. అయితే, నిజ జీవితంలో ఈ సెటప్ చాలా క్లిష్టంగా ఉంటుంది. ఒకటి లేదా రెండు భాగాల (డిస్క్, మెమరీ లేదా ప్రాసెసర్) వినియోగాన్ని గరిష్టీకరించడానికి వినియోగదారులు బ్రోకర్‌లను కాన్ఫిగర్ చేసే అవకాశం ఉంది. సాధారణంగా చెప్పాలంటే, బ్రోకర్ దాని కాన్ఫిగరేషన్ నెమ్మదైన భాగాన్ని పూర్తి స్థాయిలో ఉపయోగించేందుకు అనుమతించినప్పుడు గరిష్ట పనితీరును చూపుతుంది. ఈ విధంగా మనం ఒక బ్రోకర్ నిర్వహించగల లోడ్ గురించి స్థూలమైన ఆలోచనను పొందవచ్చు.

సిద్ధాంతపరంగా, ఇచ్చిన లోడ్‌ను నిర్వహించడానికి అవసరమైన బ్రోకర్ల సంఖ్యను కూడా మేము అంచనా వేయవచ్చు. అయితే, ఆచరణలో వివిధ స్థాయిలలో చాలా కాన్ఫిగరేషన్ ఎంపికలు ఉన్నాయి, నిర్దిష్ట కాన్ఫిగరేషన్ యొక్క సంభావ్య పనితీరును అంచనా వేయడం చాలా కష్టం (అసాధ్యం కాకపోతే). మరో మాటలో చెప్పాలంటే, ఇచ్చిన పనితీరు ఆధారంగా కాన్ఫిగరేషన్‌ను ప్లాన్ చేయడం చాలా కష్టం.

Supertubes వినియోగదారుల కోసం, మేము సాధారణంగా క్రింది విధానాన్ని తీసుకుంటాము: మేము కొంత కాన్ఫిగరేషన్ (ఇన్‌ఫ్రాస్ట్రక్చర్ + సెట్టింగ్‌లు)తో ప్రారంభిస్తాము, ఆపై దాని పనితీరును కొలిచండి, బ్రోకర్ సెట్టింగ్‌లను సర్దుబాటు చేయండి మరియు ప్రాసెస్‌ని మళ్లీ పునరావృతం చేస్తాము. ఇన్‌ఫ్రాస్ట్రక్చర్‌లో నెమ్మదిగా ఉండే భాగం పూర్తిగా వినియోగించబడే వరకు ఇది జరుగుతుంది.

ఈ విధంగా, ఒక క్లస్టర్‌కు ఎంతమంది బ్రోకర్లు నిర్దిష్ట లోడ్‌ను నిర్వహించాలి అనేదాని గురించి మనకు స్పష్టమైన ఆలోచన వస్తుంది (బ్రోకర్ల సంఖ్య కూడా స్థితిస్థాపకతను నిర్ధారించడానికి కనీస సందేశ ప్రతిరూపాల సంఖ్య, విభజన సంఖ్య వంటి ఇతర అంశాలపై ఆధారపడి ఉంటుంది. నాయకులు, మొదలైనవి). అదనంగా, ఏ ఇన్‌ఫ్రాస్ట్రక్చర్ భాగాలకు నిలువు స్కేలింగ్ అవసరమో మేము అంతర్దృష్టిని పొందుతాము.

ఈ కథనం ప్రారంభ కాన్ఫిగరేషన్‌లలో చాలా నెమ్మదిగా ఉండే భాగాలను పొందడానికి మరియు కాఫ్కా క్లస్టర్ యొక్క నిర్గమాంశను కొలవడానికి మేము తీసుకునే చర్యల గురించి మాట్లాడుతుంది. అధిక స్థితిస్థాపక కాన్ఫిగరేషన్‌కు కనీసం ముగ్గురు నడుస్తున్న బ్రోకర్లు అవసరం (min.insync.replicas=3), మూడు వేర్వేరు యాక్సెసిబిలిటీ జోన్‌లలో పంపిణీ చేయబడింది. కుబెర్నెట్స్ ఇన్‌ఫ్రాస్ట్రక్చర్‌ను కాన్ఫిగర్ చేయడానికి, స్కేల్ చేయడానికి మరియు పర్యవేక్షించడానికి, మేము హైబ్రిడ్ మేఘాల కోసం మా స్వంత కంటైనర్ మేనేజ్‌మెంట్ ప్లాట్‌ఫారమ్‌ను ఉపయోగిస్తాము - పైప్లైన్. ఇది ఆన్-ప్రిమైజ్ (బేర్ మెటల్, VMware) మరియు ఐదు రకాల క్లౌడ్‌లకు (అలీబాబా, AWS, అజూర్, గూగుల్, ఒరాకిల్) అలాగే వాటి కలయికకు మద్దతు ఇస్తుంది.

కాఫ్కా క్లస్టర్ ఇన్‌ఫ్రాస్ట్రక్చర్ మరియు కాన్ఫిగరేషన్‌పై ఆలోచనలు

దిగువ ఉదాహరణల కోసం, మేము AWSని క్లౌడ్ ప్రొవైడర్‌గా మరియు EKSని కుబెర్నెట్స్ పంపిణీగా ఎంచుకున్నాము. ఇదే విధమైన కాన్ఫిగరేషన్ ఉపయోగించి అమలు చేయవచ్చు పి.కె.ఇ. - బంజాయి క్లౌడ్ నుండి కుబెర్నెట్స్ పంపిణీ, CNCF ద్వారా ధృవీకరించబడింది.

డిస్క్

అమెజాన్ వివిధ ఆఫర్లను అందిస్తోంది EBS వాల్యూమ్ రకాలు. కోర్ వద్ద GP2. и io1 అయితే, అధిక నిర్గమాంశను నిర్ధారించడానికి SSD డ్రైవ్‌లు ఉన్నాయి GP2. సేకరించిన క్రెడిట్లను వినియోగిస్తుంది (I/O క్రెడిట్‌లు), కాబట్టి మేము రకాన్ని ఇష్టపడతాము io1, ఇది స్థిరమైన అధిక నిర్గమాంశను అందిస్తుంది.

ఉదాహరణ రకాలు

కాఫ్కా యొక్క పనితీరు ఆపరేటింగ్ సిస్టమ్ యొక్క పేజీ కాష్‌పై ఎక్కువగా ఆధారపడి ఉంటుంది, కాబట్టి మనకు బ్రోకర్లు (JVM) మరియు పేజీ కాష్ కోసం తగినంత మెమరీ ఉన్న సందర్భాలు అవసరం. ఉదాహరణ c5.2x పెద్దది - మంచి ప్రారంభం, ఇది 16 GB మెమరీని కలిగి ఉంది మరియు EBSతో పని చేయడానికి ఆప్టిమైజ్ చేయబడింది. దీని ప్రతికూలత ఏమిటంటే ఇది ప్రతి 30 గంటలకు 24 నిమిషాల కంటే ఎక్కువ గరిష్ట పనితీరును అందించగలదు. మీ పనిభారానికి ఎక్కువ కాలం పాటు గరిష్ట పనితీరు అవసరమైతే, మీరు ఇతర ఉదాహరణ రకాలను పరిగణించాలనుకోవచ్చు. మేము సరిగ్గా అదే చేసాము, ఆగిపోయింది c5.4x పెద్దది. ఇది గరిష్ట నిర్గమాంశను అందిస్తుంది 593,75 Mbps. EBS వాల్యూమ్ యొక్క గరిష్ట నిర్గమాంశ io1 ఉదాహరణ కంటే ఎక్కువ c5.4x పెద్దది, కాబట్టి ఇన్‌ఫ్రాస్ట్రక్చర్‌లో అత్యంత నెమ్మదిగా ఉండే మూలకం ఈ ఉదాహరణ రకం యొక్క I/O నిర్గమాంశగా ఉండవచ్చు (దీనిని మా లోడ్ పరీక్షలు కూడా నిర్ధారించాలి).

నెట్వర్క్

VM ఉదాహరణ మరియు డిస్క్ పనితీరుతో పోలిస్తే నెట్‌వర్క్ నిర్గమాంశ తగినంత పెద్దదిగా ఉండాలి, లేకుంటే నెట్‌వర్క్ అడ్డంకిగా మారుతుంది. మా విషయంలో, నెట్వర్క్ ఇంటర్ఫేస్ c5.4x పెద్దది 10 Gb/s వరకు వేగానికి మద్దతు ఇస్తుంది, ఇది VM ఉదాహరణ యొక్క I/O నిర్గమాంశ కంటే చాలా ఎక్కువ.

బ్రోకర్ విస్తరణ

CPU, మెమరీ, నెట్‌వర్క్ మరియు డిస్క్ వనరుల కోసం ఇతర ప్రక్రియలతో పోటీ పడకుండా ఉండేందుకు బ్రోకర్‌లను డెడికేటెడ్ నోడ్‌లకు (కుబెర్నెట్స్‌లో షెడ్యూల్ చేయబడింది) నియమించాలి.

జావా వెర్షన్

లాజికల్ ఎంపిక జావా 11 ఎందుకంటే ఇది బ్రోకర్ రన్ అవుతున్న కంటైనర్‌కు అందుబాటులో ఉన్న ప్రాసెసర్‌లు మరియు మెమరీని JVM సరిగ్గా నిర్ణయిస్తుంది అనే కోణంలో డాకర్‌తో అనుకూలంగా ఉంటుంది. CPU పరిమితులు ముఖ్యమైనవని తెలుసుకుని, JVM అంతర్గతంగా మరియు పారదర్శకంగా GC థ్రెడ్‌లు మరియు JIT థ్రెడ్‌ల సంఖ్యను సెట్ చేస్తుంది. మేము కాఫ్కా చిత్రాన్ని ఉపయోగించాము banzaicloud/kafka:2.13-2.4.0, ఇందులో జావా 2.4.0లో కాఫ్కా వెర్షన్ 2.13 (స్కాలా 11) ఉంటుంది.

మీరు Kubernetesలో Java/JVM గురించి మరింత తెలుసుకోవాలనుకుంటే, మా క్రింది పోస్ట్‌లను చూడండి:

బ్రోకర్ మెమరీ సెట్టింగ్‌లు

బ్రోకర్ మెమరీని కాన్ఫిగర్ చేయడానికి రెండు కీలక అంశాలు ఉన్నాయి: JVM మరియు కుబెర్నెట్స్ పాడ్ కోసం సెట్టింగ్‌లు. పాడ్ కోసం సెట్ చేయబడిన మెమరీ పరిమితి తప్పనిసరిగా గరిష్ట కుప్ప పరిమాణం కంటే ఎక్కువగా ఉండాలి, తద్వారా JVM దాని స్వంత మెమరీలో ఉండే జావా మెటాస్పేస్ మరియు కాఫ్కా చురుకుగా ఉపయోగించే ఆపరేటింగ్ సిస్టమ్ పేజీ కాష్ కోసం స్థలాన్ని కలిగి ఉంటుంది. మా పరీక్షలలో మేము పారామితులతో కాఫ్కా బ్రోకర్లను ప్రారంభించాము -Xmx4G -Xms2G, మరియు పాడ్ యొక్క మెమరీ పరిమితి 10 Gi. JVM కోసం మెమరీ సెట్టింగ్‌లను ఉపయోగించి స్వయంచాలకంగా పొందవచ్చని దయచేసి గమనించండి -XX:MaxRAMPercentage и -X:MinRAMPercentage, పాడ్ కోసం మెమరీ పరిమితి ఆధారంగా.

బ్రోకర్ ప్రాసెసర్ సెట్టింగ్‌లు

సాధారణంగా చెప్పాలంటే, మీరు కాఫ్కా ఉపయోగించే థ్రెడ్‌ల సంఖ్యను పెంచడం ద్వారా సమాంతరతను పెంచడం ద్వారా పనితీరును మెరుగుపరచవచ్చు. కాఫ్కా కోసం ఎన్ని ఎక్కువ ప్రాసెసర్‌లు అందుబాటులో ఉంటే అంత మంచిది. మా పరీక్షలో, మేము 6 ప్రాసెసర్‌ల పరిమితితో ప్రారంభించాము మరియు క్రమంగా (పునరావృతాల ద్వారా) వాటి సంఖ్యను 15కి పెంచాము. అదనంగా, మేము సెట్ చేసాము. num.network.threads=12 నెట్‌వర్క్ నుండి డేటాను స్వీకరించి దానిని పంపే థ్రెడ్‌ల సంఖ్యను పెంచడానికి బ్రోకర్ సెట్టింగ్‌లలో. అనుచర బ్రోకర్లు ప్రతిరూపాలను త్వరగా అందుకోలేరని వెంటనే గుర్తించి, వారు పెంచారు num.replica.fetchers నాయకుల నుండి వచ్చే సందేశాలను అనుచర బ్రోకర్లు పునరావృతం చేసే వేగాన్ని పెంచడానికి 4కి.

లోడ్ జనరేషన్ సాధనం

కాఫ్కా క్లస్టర్ (ఇది బెంచ్‌మార్క్ చేయబడుతోంది) గరిష్ట లోడ్‌ను చేరుకోవడానికి ముందు ఎంచుకున్న లోడ్ జనరేటర్ సామర్థ్యం అయిపోకుండా చూసుకోవాలి. మరో మాటలో చెప్పాలంటే, లోడ్ జనరేషన్ సాధనం యొక్క సామర్థ్యాల యొక్క ప్రాథమిక అంచనాను నిర్వహించడం అవసరం మరియు తగిన సంఖ్యలో ప్రాసెసర్లు మరియు మెమరీతో దాని కోసం ఉదాహరణ రకాలను కూడా ఎంచుకోండి. ఈ సందర్భంలో, మా సాధనం కాఫ్కా క్లస్టర్ నిర్వహించగలిగే దానికంటే ఎక్కువ లోడ్‌ను ఉత్పత్తి చేస్తుంది. అనేక ప్రయోగాల తర్వాత, మేము మూడు కాపీలలో స్థిరపడ్డాము c5.4x పెద్దది, ప్రతి దానిలో ఒక జనరేటర్ నడుస్తుంది.

బెంచ్మార్కింగ్

పనితీరు కొలత అనేది క్రింది దశలను కలిగి ఉన్న ఒక పునరావృత ప్రక్రియ:

  • మౌలిక సదుపాయాలను ఏర్పాటు చేయడం (EKS క్లస్టర్, కాఫ్కా క్లస్టర్, లోడ్ జనరేషన్ టూల్, అలాగే ప్రోమేథియస్ మరియు గ్రాఫానా);
  • సేకరించిన పనితీరు సూచికలలో యాదృచ్ఛిక వ్యత్యాసాలను ఫిల్టర్ చేయడానికి ఒక నిర్దిష్ట కాలానికి లోడ్‌ను ఉత్పత్తి చేయడం;
  • గమనించిన పనితీరు సూచికల ఆధారంగా బ్రోకర్ యొక్క ఇన్‌ఫ్రాస్ట్రక్చర్ మరియు కాన్ఫిగరేషన్‌ను సర్దుబాటు చేయడం;
  • కాఫ్కా క్లస్టర్ నిర్గమాంశ యొక్క అవసరమైన స్థాయిని సాధించే వరకు ప్రక్రియను పునరావృతం చేయడం. అదే సమయంలో, ఇది స్థిరంగా పునరుత్పత్తి చేయబడాలి మరియు నిర్గమాంశలో కనీస వైవిధ్యాలను ప్రదర్శించాలి.

తదుపరి విభాగం పరీక్ష క్లస్టర్ బెంచ్‌మార్కింగ్ ప్రక్రియలో చేసిన దశలను వివరిస్తుంది.

సాధన

బేస్‌లైన్ కాన్ఫిగరేషన్‌ను త్వరగా అమలు చేయడానికి, లోడ్‌లను రూపొందించడానికి మరియు పనితీరును కొలవడానికి క్రింది సాధనాలు ఉపయోగించబడ్డాయి:

  • బంజాయి క్లౌడ్ పైప్‌లైన్ Amazon c నుండి EKS క్లస్టర్‌ను నిర్వహించడం కోసం ప్రోమేతియస్ (కాఫ్కా మరియు ఇన్‌ఫ్రాస్ట్రక్చర్ మెట్రిక్‌లను సేకరించడానికి) మరియు గ్రాఫనా (ఈ కొలమానాలను దృశ్యమానం చేయడానికి). సద్వినియోగం చేసుకున్నాం ఇంటిగ్రేటెడ్ в పైప్లైన్ సమాఖ్య పర్యవేక్షణ, కేంద్రీకృత లాగ్ సేకరణ, దుర్బలత్వ స్కానింగ్, విపత్తు పునరుద్ధరణ, ఎంటర్‌ప్రైజ్-గ్రేడ్ భద్రత మరియు మరిన్నింటిని అందించే సేవలు.
  • సంగ్రెనెల్ - కాఫ్కా క్లస్టర్‌ను లోడ్ టెస్టింగ్ చేయడానికి ఒక సాధనం.
  • కాఫ్కా మెట్రిక్స్ మరియు ఇన్‌ఫ్రాస్ట్రక్చర్‌ను విజువలైజ్ చేయడానికి గ్రాఫానా డ్యాష్‌బోర్డ్‌లు: కుబెర్నెటెస్ కాఫ్కా, నోడ్ ఎగుమతిదారు.
  • కుబెర్నెట్స్‌లో కాఫ్కా క్లస్టర్‌ను సెటప్ చేయడానికి సులభమైన మార్గం కోసం సూపర్‌ట్యూబ్స్ CLI. జూకీపర్, కాఫ్కా ఆపరేటర్, ఎన్వోయ్ మరియు అనేక ఇతర భాగాలు ఇన్‌స్టాల్ చేయబడ్డాయి మరియు కుబెర్నెట్స్‌లో ఉత్పత్తికి సిద్ధంగా ఉన్న కాఫ్కా క్లస్టర్‌ను అమలు చేయడానికి సరిగ్గా కాన్ఫిగర్ చేయబడ్డాయి.
    • సంస్థాపన కోసం సూపర్ ట్యూబ్స్ CLI అందించిన సూచనలను ఉపయోగించండి ఇక్కడ.

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

EKS క్లస్టర్

అంకితమైన వర్కర్ నోడ్‌లతో EKS క్లస్టర్‌ను సిద్ధం చేయండి c5.4x పెద్దది కాఫ్కా బ్రోకర్లతో పాడ్‌ల కోసం వివిధ లభ్యత జోన్‌లలో, అలాగే లోడ్ జనరేటర్ మరియు మానిటరింగ్ ఇన్‌ఫ్రాస్ట్రక్చర్ కోసం ప్రత్యేక నోడ్‌లు.

banzai cluster create -f https://raw.githubusercontent.com/banzaicloud/kafka-operator/master/docs/benchmarks/infrastructure/cluster_eks_202001.json

EKS క్లస్టర్ అప్ మరియు రన్ అయిన తర్వాత, దాని ఇంటిగ్రేటెడ్‌ని ఎనేబుల్ చేయండి పర్యవేక్షణ సేవ - ఆమె ప్రోమేతియస్ మరియు గ్రాఫానాను ఒక క్లస్టర్‌లో మోహరిస్తుంది.

కాఫ్కా సిస్టమ్ భాగాలు

సూపర్‌ట్యూబ్స్ CLIని ఉపయోగించి EKSలో కాఫ్కా సిస్టమ్ భాగాలను (జూకీపర్, కాఫ్కా-ఆపరేటర్) ఇన్‌స్టాల్ చేయండి:

supertubes install -a --no-democluster --kubeconfig <path-to-eks-cluster-kubeconfig-file>

కాఫ్కా క్లస్టర్

డిఫాల్ట్‌గా, EKS రకం యొక్క EBS వాల్యూమ్‌లను ఉపయోగిస్తుంది GP2., కాబట్టి మీరు వాల్యూమ్‌ల ఆధారంగా ప్రత్యేక నిల్వ తరగతిని సృష్టించాలి io1 కాఫ్కా క్లస్టర్ కోసం:

kubectl create -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-ssd
provisioner: kubernetes.io/aws-ebs
parameters:
  type: io1
  iopsPerGB: "50"
  fsType: ext4
volumeBindingMode: WaitForFirstConsumer
EOF

బ్రోకర్ల కోసం పరామితిని సెట్ చేయండి min.insync.replicas=3 మరియు మూడు వేర్వేరు లభ్యత జోన్‌లలో నోడ్‌లపై బ్రోకర్ పాడ్‌లను అమలు చేయండి:

supertubes cluster create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f https://raw.githubusercontent.com/banzaicloud/kafka-operator/master/docs/benchmarks/infrastructure/kafka_202001_3brokers.yaml --wait --timeout 600

అంశాలు

మేము మూడు లోడ్ జనరేటర్ ఉదాహరణలను సమాంతరంగా అమలు చేసాము. వాటిలో ప్రతి ఒక్కటి వారి స్వంత అంశానికి వ్రాస్తుంది, అంటే మనకు మొత్తం మూడు అంశాలు అవసరం:

supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
  name: perftest1
spec:
  name: perftest1
  partitions: 12
  replicationFactor: 3
  retention.ms: '28800000'
  cleanup.policy: delete
EOF

supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
    name: perftest2
spec:
  name: perftest2
  partitions: 12
  replicationFactor: 3
  retention.ms: '28800000'
  cleanup.policy: delete
EOF

supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
  name: perftest3
spec:
  name: perftest3
  partitions: 12
  replicationFactor: 3
  retention.ms: '28800000'
  cleanup.policy: delete
EOF

ప్రతి అంశానికి, ప్రతిరూపణ కారకం 3-అధికంగా అందుబాటులో ఉన్న ఉత్పత్తి వ్యవస్థలకు కనీస సిఫార్సు విలువ.

లోడ్ జనరేషన్ సాధనం

మేము లోడ్ జనరేటర్ యొక్క మూడు కాపీలను ప్రారంభించాము (ప్రతి ఒక్కటి ప్రత్యేక అంశంలో వ్రాయబడింది). లోడ్ జనరేటర్ పాడ్‌ల కోసం, మీరు నోడ్ అనుబంధాన్ని సెట్ చేయాలి, తద్వారా అవి వాటి కోసం కేటాయించిన నోడ్‌లలో మాత్రమే షెడ్యూల్ చేయబడతాయి:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: loadtest
  name: perf-load1
  namespace: kafka
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: loadtest
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: loadtest
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: nodepool.banzaicloud.io/name
                operator: In
                values:
                - loadgen
      containers:
      - args:
        - -brokers=kafka-0:29092,kafka-1:29092,kafka-2:29092,kafka-3:29092
        - -topic=perftest1
        - -required-acks=all
        - -message-size=512
        - -workers=20
        image: banzaicloud/perfload:0.1.0-blog
        imagePullPolicy: Always
        name: sangrenel
        resources:
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 2
            memory: 1Gi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

గమనించవలసిన కొన్ని పాయింట్లు:

  • లోడ్ జనరేటర్ 512 బైట్‌ల పొడవు సందేశాలను ఉత్పత్తి చేస్తుంది మరియు వాటిని 500 సందేశాల బ్యాచ్‌లలో కాఫ్కాకు ప్రచురిస్తుంది.
  • వాదనను ఉపయోగించడం -required-acks=all కాఫ్కా బ్రోకర్ల ద్వారా సందేశం యొక్క అన్ని సమకాలీకరించబడిన ప్రతిరూపాలు స్వీకరించబడి మరియు ధృవీకరించబడినప్పుడు ప్రచురణ విజయవంతంగా పరిగణించబడుతుంది. దీనర్థం బెంచ్‌మార్క్‌లో మేము సందేశాలను స్వీకరించే నాయకుల వేగాన్ని మాత్రమే కాకుండా, వారి అనుచరులు సందేశాలను పునరావృతం చేసే వేగాన్ని కూడా కొలిచాము. ఈ పరీక్ష యొక్క ఉద్దేశ్యం వినియోగదారు పఠన వేగాన్ని అంచనా వేయడం కాదు (వినియోగదారులు) OS పేజీ కాష్‌లో ఇప్పటికీ మిగిలి ఉన్న సందేశాలను ఇటీవల స్వీకరించింది మరియు డిస్క్‌లో నిల్వ చేయబడిన సందేశాల పఠన వేగంతో దాని పోలిక.
  • లోడ్ జనరేటర్ 20 మంది కార్మికులను సమాంతరంగా నడుపుతుంది (-workers=20) ప్రతి కార్మికుడు కాఫ్కా క్లస్టర్‌కు కార్మికుల కనెక్షన్‌ను పంచుకునే 5 మంది నిర్మాతలను కలిగి ఉంటారు. ఫలితంగా, ప్రతి జనరేటర్‌లో 100 మంది నిర్మాతలు ఉన్నారు మరియు వారందరూ కాఫ్కా క్లస్టర్‌కు సందేశాలను పంపుతారు.

క్లస్టర్ యొక్క ఆరోగ్యాన్ని పర్యవేక్షిస్తుంది

కాఫ్కా క్లస్టర్ యొక్క లోడ్ టెస్టింగ్ సమయంలో, మేము పాడ్ రీస్టార్ట్‌లు లేవని, సమకాలీకరించబడని ప్రతిరూపాలు లేవని మరియు కనిష్ట హెచ్చుతగ్గులతో గరిష్ట నిర్గమాంశను నిర్ధారించడానికి దాని ఆరోగ్యాన్ని కూడా పర్యవేక్షించాము:

  • లోడ్ జెనరేటర్ ప్రచురించబడిన సందేశాల సంఖ్య మరియు లోపం రేటు గురించి ప్రామాణిక గణాంకాలను వ్రాస్తుంది. లోపం రేటు అలాగే ఉండాలి 0,00%.
  • క్రూయిస్ కంట్రోల్, కాఫ్కా-ఆపరేటర్ ద్వారా అమలు చేయబడింది, మేము క్లస్టర్ స్థితిని కూడా పర్యవేక్షించగల డాష్‌బోర్డ్‌ను అందిస్తుంది. ఈ ప్యానెల్ వీక్షించడానికి:
    supertubes cluster cruisecontrol show -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file>
  • ISR స్థాయి ("ఇన్-సింక్" ప్రతిరూపాల సంఖ్య) సంకోచం మరియు విస్తరణ 0కి సమానం.

కొలత ఫలితాలు

3 బ్రోకర్లు, సందేశ పరిమాణం - 512 బైట్లు

మూడు బ్రోకర్లలో విభజనలు సమానంగా పంపిణీ చేయడంతో, మేము పనితీరును సాధించగలిగాము ~500 Mb/s (సెకనుకు దాదాపు 990 వేల సందేశాలు):

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

JVM వర్చువల్ మెషీన్ యొక్క మెమరీ వినియోగం 2 GB మించలేదు:

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

బ్రోకర్లు రన్ అవుతున్న మూడు సందర్భాలలో డిస్క్ నిర్గమాంశ గరిష్ట I/O నోడ్ నిర్గమాంశకు చేరుకుంది:

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

నోడ్‌ల ద్వారా మెమరీ వినియోగంపై డేటా నుండి, సిస్టమ్ బఫరింగ్ మరియు కాషింగ్ ~10-15 GB పట్టింది:

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

3 బ్రోకర్లు, సందేశ పరిమాణం - 100 బైట్లు

సందేశ పరిమాణం తగ్గినప్పుడు, నిర్గమాంశ సుమారు 15-20% పడిపోతుంది: ప్రతి సందేశాన్ని ప్రాసెస్ చేయడానికి వెచ్చించే సమయం దానిని ప్రభావితం చేస్తుంది. అదనంగా, ప్రాసెసర్ లోడ్ దాదాపు రెండింతలు పెరిగింది.

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

బ్రోకర్ నోడ్స్ ఇప్పటికీ ఉపయోగించని కోర్లను కలిగి ఉన్నందున, కాఫ్కా కాన్ఫిగరేషన్‌ను మార్చడం ద్వారా పనితీరును మెరుగుపరచవచ్చు. ఇది అంత తేలికైన పని కాదు, కాబట్టి నిర్గమాంశను పెంచడానికి పెద్ద సందేశాలతో పని చేయడం మంచిది.

4 బ్రోకర్లు, సందేశ పరిమాణం - 512 బైట్లు

మీరు కొత్త బ్రోకర్‌లను జోడించడం ద్వారా మరియు విభజనల బ్యాలెన్స్‌ను నిర్వహించడం ద్వారా కాఫ్కా క్లస్టర్ పనితీరును సులభంగా పెంచుకోవచ్చు (బ్రోకర్ల మధ్య లోడ్ సమానంగా పంపిణీ చేయబడుతుందని ఇది నిర్ధారిస్తుంది). మా విషయంలో, బ్రోకర్‌ని జోడించిన తర్వాత, క్లస్టర్ త్రూపుట్ పెరిగింది ~580 Mb/s (సెకనుకు ~1,1 మిలియన్ సందేశాలు). వృద్ధి ఊహించిన దాని కంటే తక్కువగా మారింది: ఇది ప్రధానంగా విభజనల అసమతుల్యత ద్వారా వివరించబడింది (అన్ని బ్రోకర్లు వారి సామర్థ్యాల గరిష్ట స్థాయి వద్ద పని చేయరు).

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

JVM మెషీన్ యొక్క మెమరీ వినియోగం 2 GB కంటే తక్కువగా ఉంది:

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

విభజనల అసమతుల్యత కారణంగా డ్రైవ్‌లతో బ్రోకర్ల పని ప్రభావితమైంది:

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కుబెర్నెటెస్‌లోని కాఫ్కా క్లస్టర్‌కు తగిన పరిమాణాన్ని నిర్ణయించండి

కనుగొన్న

వందలాది మంది వినియోగదారులు, పునర్విభజన, రోలింగ్ అప్‌డేట్‌లు, పాడ్ రీస్టార్ట్‌లు మొదలైన వాటితో కూడిన సంక్లిష్టమైన దృశ్యాలను కవర్ చేయడానికి పైన అందించిన పునరావృత విధానాన్ని విస్తరించవచ్చు. ఇవన్నీ వివిధ పరిస్థితులలో కాఫ్కా క్లస్టర్ యొక్క సామర్థ్యాల పరిమితులను అంచనా వేయడానికి, దాని ఆపరేషన్‌లో అడ్డంకులను గుర్తించడానికి మరియు వాటిని ఎదుర్కోవడానికి మార్గాలను కనుగొనడానికి మాకు అనుమతిస్తాయి.

క్లస్టర్‌ను త్వరగా మరియు సులభంగా అమలు చేయడానికి, దానిని కాన్ఫిగర్ చేయడానికి, బ్రోకర్‌లు మరియు టాపిక్‌లను జోడించడానికి/తీసివేయడానికి, హెచ్చరికలకు ప్రతిస్పందించడానికి మరియు సాధారణంగా కాఫ్కా కుబెర్నెట్స్‌లో సరిగ్గా పని చేస్తుందని నిర్ధారించడానికి మేము సూపర్‌ట్యూబ్‌లను రూపొందించాము. కాఫ్కా సందేశాలను "ఉత్పత్తి" మరియు "వినియోగించు" ప్రధాన పనిపై దృష్టి పెట్టడంలో మీకు సహాయం చేయడం మా లక్ష్యం, మరియు సూపర్‌ట్యూబ్‌లు మరియు కాఫ్కా ఆపరేటర్‌కు అన్ని కష్టాలను వదిలివేయడం.

మీరు Banzai క్లౌడ్ టెక్నాలజీలు మరియు ఓపెన్ సోర్స్ ప్రాజెక్ట్‌లపై ఆసక్తి కలిగి ఉంటే, ఇక్కడ కంపెనీకి సభ్యత్వాన్ని పొందండి గ్యాలరీలు, లింక్డ్ఇన్ లేదా Twitter.

అనువాదకుని నుండి PS

మా బ్లాగులో కూడా చదవండి:

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి