குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குறிப்பு. மொழிபெயர்: இந்த கட்டுரையில், பன்சாய் கிளவுட் அதன் தனிப்பயன் கருவிகளை எப்படி குபெர்னெட்டஸில் பயன்படுத்த காஃப்காவை எளிதாக்கலாம் என்பதற்கான உதாரணத்தைப் பகிர்ந்துள்ளது. உங்கள் உள்கட்டமைப்பின் உகந்த அளவை நீங்கள் எவ்வாறு தீர்மானிக்கலாம் மற்றும் தேவையான செயல்திறனை அடைய காஃப்காவை எவ்வாறு உள்ளமைக்கலாம் என்பதை பின்வரும் வழிமுறைகள் விளக்குகின்றன.

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

Apache Kafka என்பது நம்பகமான, அளவிடக்கூடிய மற்றும் உயர் செயல்திறன் நிகழ்நேர ஸ்ட்ரீமிங் அமைப்புகளை உருவாக்குவதற்கான விநியோகிக்கப்பட்ட ஸ்ட்ரீமிங் தளமாகும். அதன் ஈர்க்கக்கூடிய திறன்களை Kubernetes ஐப் பயன்படுத்தி நீட்டிக்க முடியும். இதற்காக நாங்கள் உருவாக்கியுள்ளோம் திறந்த மூல காஃப்கா ஆபரேட்டர் மற்றும் ஒரு கருவி சூப்பர்டியூப்கள். குபெர்னெட்டஸில் காஃப்காவை இயக்கவும், அதன் பல்வேறு அம்சங்களைப் பயன்படுத்தவும் அவை உங்களை அனுமதிக்கின்றன, அதாவது தரகர் உள்ளமைவை நன்றாகச் சரிசெய்தல், மறுசீரமைப்புடன் மெட்ரிக் அடிப்படையிலான அளவிடுதல், ரேக் விழிப்புணர்வு, "மென்மையானது" (அருமையான) புதுப்பிப்புகளை வெளியிடுதல், முதலியன

உங்கள் கிளஸ்டரில் Supertubes ஐ முயற்சிக்கவும்:

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

அல்லது தொடர்பு கொள்ளவும் ஆவணங்கள். காஃப்காவின் சில திறன்களைப் பற்றியும் நீங்கள் படிக்கலாம், இது சூப்பர் ட்யூப்கள் மற்றும் காஃப்கா ஆபரேட்டரைப் பயன்படுத்தி தானியங்கு செய்யப்படுகிறது. அவர்களைப் பற்றி நாங்கள் ஏற்கனவே வலைப்பதிவில் எழுதியுள்ளோம்:

குபெர்னெட்டஸில் காஃப்கா கிளஸ்டரைப் பயன்படுத்த நீங்கள் முடிவு செய்யும் போது, ​​அடிப்படை உள்கட்டமைப்பின் உகந்த அளவை நிர்ணயம் செய்யும் சவாலை நீங்கள் எதிர்கொள்ள நேரிடும். ஒவ்வொரு தரகரின் அதிகபட்ச செயல்திறன் நினைவகம், செயலி, வட்டு வேகம், பிணைய அலைவரிசை போன்ற அடிப்படை உள்கட்டமைப்பு கூறுகளின் செயல்திறனால் தீர்மானிக்கப்படுகிறது.

வெறுமனே, அனைத்து உள்கட்டமைப்பு கூறுகளும் அவற்றின் அதிகபட்ச திறன்களுக்குப் பயன்படுத்தப்படும் வகையில் தரகர் உள்ளமைவு இருக்க வேண்டும். இருப்பினும், நிஜ வாழ்க்கையில் இந்த அமைப்பு மிகவும் சிக்கலானது. பயனர்கள் ஒன்று அல்லது இரண்டு கூறுகளின் (வட்டு, நினைவகம் அல்லது செயலி) உபயோகத்தை அதிகப்படுத்த தரகர்களை உள்ளமைப்பார்கள். பொதுவாக, ஒரு தரகர் அதன் கட்டமைப்பு மெதுவான கூறுகளை அதன் முழு அளவில் பயன்படுத்த அனுமதிக்கும் போது அதிகபட்ச செயல்திறனைக் காட்டுகிறது. இந்த வழியில் ஒரு தரகர் கையாளக்கூடிய சுமை பற்றிய தோராயமான யோசனையைப் பெறலாம்.

கோட்பாட்டளவில், கொடுக்கப்பட்ட சுமைகளை கையாள தேவையான தரகர்களின் எண்ணிக்கையையும் நாம் மதிப்பிடலாம். இருப்பினும், நடைமுறையில் பல்வேறு நிலைகளில் பல உள்ளமைவு விருப்பங்கள் உள்ளன, ஒரு குறிப்பிட்ட கட்டமைப்பின் சாத்தியமான செயல்திறனை மதிப்பிடுவது மிகவும் கடினம் (சாத்தியமற்றது). வேறு வார்த்தைகளில் கூறுவதானால், கொடுக்கப்பட்ட சில செயல்திறனின் அடிப்படையில் ஒரு கட்டமைப்பைத் திட்டமிடுவது மிகவும் கடினம்.

Supertubes பயனர்களுக்கு, நாங்கள் வழக்கமாக பின்வரும் அணுகுமுறையை மேற்கொள்வோம்: நாங்கள் சில உள்ளமைவுகளுடன் (உள்கட்டமைப்பு + அமைப்புகள்) தொடங்குகிறோம், அதன் செயல்திறனை அளவிடுகிறோம், தரகர் அமைப்புகளை சரிசெய்து, செயல்முறையை மீண்டும் செய்யவும். உள்கட்டமைப்பின் மெதுவான கூறு முழுமையாகப் பயன்படுத்தப்படும் வரை இது நடக்கும்.

இந்த வழியில், ஒரு கிளஸ்டருக்கு எத்தனை தரகர்கள் ஒரு குறிப்பிட்ட சுமையைக் கையாள வேண்டும் என்பது பற்றிய தெளிவான யோசனையைப் பெறுகிறோம் (தரகர்களின் எண்ணிக்கையும் மற்ற காரணிகளைப் பொறுத்தது, அதாவது மீள்தன்மையை உறுதி செய்வதற்கான குறைந்தபட்ச செய்தி பிரதிகளின் எண்ணிக்கை, பகிர்வின் எண்ணிக்கை. தலைவர்கள், முதலியன). கூடுதலாக, எந்த உள்கட்டமைப்பு கூறுகளுக்கு செங்குத்து அளவிடுதல் தேவை என்பதைப் பற்றிய நுண்ணறிவைப் பெறுகிறோம்.

ஆரம்ப கட்டமைவுகளில் உள்ள மெதுவான கூறுகளை அதிகமாகப் பெறுவதற்கும் காஃப்கா கிளஸ்டரின் செயல்திறனை அளவிடுவதற்கும் நாம் எடுக்கும் படிகளைப் பற்றி இந்தக் கட்டுரை பேசும். மிகவும் நெகிழ்வான உள்ளமைவுக்கு குறைந்தது மூன்று இயங்கும் தரகர்கள் தேவை (min.insync.replicas=3), மூன்று வெவ்வேறு அணுகல் மண்டலங்களில் விநியோகிக்கப்படுகிறது. குபெர்னெட்ஸ் உள்கட்டமைப்பை உள்ளமைக்க, அளவிட மற்றும் கண்காணிக்க, கலப்பின மேகங்களுக்கான எங்கள் சொந்த கொள்கலன் மேலாண்மை தளத்தைப் பயன்படுத்துகிறோம் - பைப்லைன். இது ஆன்-பிரைமைஸ் (பேர் மெட்டல், விஎம்வேர்) மற்றும் ஐந்து வகையான மேகங்கள் (அலிபாபா, ஏடபிள்யூஎஸ், அஸூர், கூகுள், ஆரக்கிள்) மற்றும் அவற்றின் எந்த கலவையையும் ஆதரிக்கிறது.

காஃப்கா கிளஸ்டர் உள்கட்டமைப்பு மற்றும் உள்ளமைவு பற்றிய எண்ணங்கள்

கீழே உள்ள எடுத்துக்காட்டுகளுக்கு, கிளவுட் வழங்குநராக AWSஐயும், குபெர்னெட்டஸ் விநியோகமாக EKSஐயும் தேர்ந்தெடுத்தோம். இதேபோன்ற கட்டமைப்பைப் பயன்படுத்தி செயல்படுத்தலாம் பி.கே.இ. - பன்சாய் கிளவுட்டில் இருந்து குபெர்னெட்ஸ் விநியோகம், CNCF ஆல் சான்றளிக்கப்பட்டது.

வட்டு

அமேசான் பல்வேறு சலுகைகளை வழங்குகிறது EBS தொகுதி வகைகள். மையத்தில் gp2 и io1 SSD இயக்கிகள் உள்ளன, இருப்பினும், அதிக செயல்திறனை உறுதி செய்ய gp2 திரட்டப்பட்ட வரவுகளை பயன்படுத்துகிறது (I/O வரவுகள்), எனவே நாங்கள் வகையை விரும்பினோம் io1, இது நிலையான உயர் செயல்திறனை வழங்குகிறது.

நிகழ்வு வகைகள்

காஃப்காவின் செயல்திறன் ஆப்பரேட்டிங் சிஸ்டத்தின் பக்க தற்காலிக சேமிப்பை சார்ந்தது, எனவே தரகர்கள் (ஜேவிஎம்) மற்றும் பக்க கேச் ஆகியவற்றிற்கு போதுமான நினைவகத்துடன் கூடிய நிகழ்வுகள் தேவை. உதாரணம் c5.2x பெரியது - ஒரு நல்ல தொடக்கம், ஏனெனில் இது 16 ஜிபி நினைவகம் மற்றும் EBS உடன் பணிபுரிய உகந்ததாக உள்ளது. அதன் குறைபாடு என்னவென்றால், ஒவ்வொரு 30 மணி நேரத்திற்கும் 24 நிமிடங்களுக்கு மேல் அதிகபட்ச செயல்திறனை வழங்கும் திறன் கொண்டது. உங்கள் பணிச்சுமைக்கு நீண்ட காலத்திற்கு உச்ச செயல்திறன் தேவைப்பட்டால், நீங்கள் மற்ற நிகழ்வு வகைகளைக் கருத்தில் கொள்ளலாம். அதைத்தான் நாங்கள் நிறுத்தினோம் c5.4x பெரியது. இது அதிகபட்ச செயல்திறனை வழங்குகிறது 593,75 Mb/s. EBS தொகுதியின் அதிகபட்ச செயல்திறன் io1 நிகழ்வை விட உயர்ந்தது c5.4x பெரியது, எனவே உள்கட்டமைப்பின் மெதுவான உறுப்பு இந்த நிகழ்வு வகையின் I/O செயல்திறனாக இருக்கலாம் (எங்கள் சுமை சோதனைகளும் இதை உறுதிப்படுத்த வேண்டும்).

பிணைய

VM நிகழ்வு மற்றும் வட்டின் செயல்திறனுடன் ஒப்பிடும்போது நெட்வொர்க் செயல்திறன் போதுமானதாக இருக்க வேண்டும், இல்லையெனில் நெட்வொர்க் ஒரு தடையாக மாறும். எங்கள் விஷயத்தில், பிணைய இடைமுகம் c5.4x பெரியது 10 Gb/s வரையிலான வேகத்தை ஆதரிக்கிறது, இது VM நிகழ்வின் I/O த்ரோபுட்டை விட கணிசமாக அதிகமாகும்.

தரகர் வரிசைப்படுத்தல்

CPU, நினைவகம், நெட்வொர்க் மற்றும் வட்டு ஆதாரங்களுக்கான பிற செயல்முறைகளுடன் போட்டியிடுவதைத் தவிர்க்க, பிரத்யேக முனைகளுக்கு தரகர்கள் (குபெர்னெட்ஸில் திட்டமிடப்பட்டுள்ளது) பயன்படுத்தப்பட வேண்டும்.

ஜாவா பதிப்பு

தர்க்கரீதியான தேர்வு ஜாவா 11 ஆகும், ஏனெனில் இது டோக்கருடன் இணக்கமானது, ஏனெனில் தரகர் இயங்கும் கொள்கலனுக்குக் கிடைக்கும் செயலிகள் மற்றும் நினைவகத்தை JVM சரியாக தீர்மானிக்கிறது. செயலி வரம்புகள் முக்கியம் என்பதை அறிந்து, JVM உள் மற்றும் வெளிப்படைத்தன்மையுடன் GC நூல்கள் மற்றும் JIT நூல்களின் எண்ணிக்கையை அமைக்கிறது. நாங்கள் காஃப்கா படத்தைப் பயன்படுத்தினோம் banzaicloud/kafka:2.13-2.4.0, ஜாவா 2.4.0 இல் காஃப்கா பதிப்பு 2.13 (ஸ்கலா 11) அடங்கும்.

குபெர்னெட்டஸில் ஜாவா/ஜேவிஎம் பற்றி மேலும் அறிய விரும்பினால், பின்வரும் இடுகைகளைப் பார்க்கவும்:

தரகர் நினைவக அமைப்புகள்

தரகர் நினைவகத்தை உள்ளமைக்க இரண்டு முக்கிய அம்சங்கள் உள்ளன: JVM மற்றும் Kubernetes பாட் அமைப்புகளுக்கான அமைப்புகள். ஒரு பாட்க்கான நினைவக வரம்பு அதிகபட்ச குவியல் அளவை விட அதிகமாக இருக்க வேண்டும், இதனால் 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 கிளஸ்டரை ஒழுங்கமைக்க பிரமீதீயஸ் (காஃப்கா மற்றும் உள்கட்டமைப்பு அளவீடுகளை சேகரிக்க) மற்றும் கிரபனா (இந்த அளவீடுகளை காட்சிப்படுத்த). பயன்படுத்திக் கொண்டோம் ஒருங்கிணைக்கப்பட்டது в பைப்லைன் கூட்டமைப்பு கண்காணிப்பு, மையப்படுத்தப்பட்ட பதிவு சேகரிப்பு, பாதிப்பு ஸ்கேனிங், பேரிடர் மீட்பு, நிறுவன தர பாதுகாப்பு மற்றும் பலவற்றை வழங்கும் சேவைகள்.
  • சங்ரெனல் - காஃப்கா கிளஸ்டரை சுமை சோதனை செய்வதற்கான ஒரு கருவி.
  • காஃப்கா அளவீடுகள் மற்றும் உள்கட்டமைப்பைக் காட்சிப்படுத்துவதற்கான கிராஃபானா டாஷ்போர்டுகள்: குபெர்னெட்டஸ் காஃப்கா, முனை ஏற்றுமதியாளர்.
  • குபெர்னெட்ஸில் காஃப்கா கிளஸ்டரை அமைப்பதற்கான எளிதான வழி சூப்பர்டியூப்ஸ் சிஎல்ஐ. Zookeeper, Kafka operator, Envoy மற்றும் பல உதிரிபாகங்கள் நிறுவப்பட்டு, குபெர்னெட்டஸில் உற்பத்திக்குத் தயாராக இருக்கும் காஃப்கா கிளஸ்டரை இயக்குவதற்கு ஒழுங்காக கட்டமைக்கப்பட்டுள்ளன.
    • நிறுவலுக்கு supertubes 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 இல் காஃப்கா அமைப்பு கூறுகளை (Zookeeper, kafka-operator) நிறுவவும்:

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 ஜிபி எடுத்தது:

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

3 தரகர்கள், செய்தி அளவு - 100 பைட்டுகள்

செய்தியின் அளவு குறையும்போது, ​​செயல்திறன் சுமார் 15-20% குறைகிறது: ஒவ்வொரு செய்தியையும் செயலாக்க செலவழிக்கும் நேரம் அதை பாதிக்கிறது. கூடுதலாக, செயலி சுமை கிட்டத்தட்ட இரண்டு மடங்கு அதிகரித்துள்ளது.

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

தரகர் முனைகளில் இன்னும் பயன்படுத்தப்படாத கோர்கள் இருப்பதால், காஃப்கா உள்ளமைவை மாற்றுவதன் மூலம் செயல்திறனை மேம்படுத்தலாம். இது எளிதான பணி அல்ல, எனவே செயல்திறனை அதிகரிக்க பெரிய செய்திகளுடன் வேலை செய்வது நல்லது.

4 தரகர்கள், செய்தி அளவு - 512 பைட்டுகள்

புதிய தரகர்களைச் சேர்ப்பதன் மூலமும், பகிர்வுகளின் சமநிலையை பராமரிப்பதன் மூலமும் நீங்கள் காஃப்கா கிளஸ்டரின் செயல்திறனை எளிதாக அதிகரிக்கலாம் (இது தரகர்களிடையே சுமை சமமாக விநியோகிக்கப்படுவதை உறுதி செய்கிறது). எங்கள் விஷயத்தில், ஒரு தரகரைச் சேர்த்த பிறகு, கிளஸ்டர் செயல்திறன் அதிகரித்தது ~580 Mb/s (வினாடிக்கு ~1,1 மில்லியன் செய்திகள்). வளர்ச்சி எதிர்பார்த்ததை விட குறைவாக மாறியது: இது முக்கியமாக பகிர்வுகளின் ஏற்றத்தாழ்வு மூலம் விளக்கப்படுகிறது (அனைத்து தரகர்களும் தங்கள் திறன்களின் உச்சத்தில் வேலை செய்யவில்லை).

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

JVM இயந்திரத்தின் நினைவக நுகர்வு 2 ஜிபிக்குக் கீழே இருந்தது:

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

பகிர்வுகளின் ஏற்றத்தாழ்வு காரணமாக டிரைவ்களுடன் கூடிய தரகர்களின் பணி பாதிக்கப்பட்டது:

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

குபெர்னெட்டஸில் உள்ள காஃப்கா கிளஸ்டருக்கான சரியான அளவைத் தீர்மானித்தல்

கண்டுபிடிப்புகள்

நூற்றுக்கணக்கான நுகர்வோர், மறுபகிர்வு, உருட்டல் புதுப்பிப்புகள், பாட் மறுதொடக்கம் போன்றவற்றை உள்ளடக்கிய மிகவும் சிக்கலான காட்சிகளை உள்ளடக்கியதாக மேலே வழங்கப்பட்டுள்ள செயல்பாட்டு அணுகுமுறையை விரிவுபடுத்தலாம். இவை அனைத்தும் பல்வேறு நிலைகளில் காஃப்கா கிளஸ்டரின் திறன்களின் வரம்புகளை மதிப்பிடவும், அதன் செயல்பாட்டில் உள்ள தடைகளை அடையாளம் காணவும், அவற்றை எதிர்த்துப் போராடுவதற்கான வழிகளைக் கண்டறியவும் அனுமதிக்கிறது.

ஒரு கிளஸ்டரை விரைவாகவும் எளிதாகவும் வரிசைப்படுத்தவும், அதை உள்ளமைக்கவும், தரகர்கள் மற்றும் தலைப்புகளைச் சேர்க்கவும்/அகற்றவும், விழிப்பூட்டல்களுக்குப் பதிலளிக்கவும், குபெர்னெட்டஸில் காஃப்கா சரியாகச் செயல்படுவதை உறுதி செய்யவும் சூப்பர் ட்யூப்களை வடிவமைத்துள்ளோம். முக்கியப் பணியில் (காஃப்கா செய்திகளை "உருவாக்கு" மற்றும் "நுகர்") கவனம் செலுத்த உங்களுக்கு உதவுவதே எங்கள் குறிக்கோள், மேலும் அனைத்து கடின உழைப்பையும் Supertubes மற்றும் Kafka ஆபரேட்டரிடம் விட்டுவிட வேண்டும்.

நீங்கள் பன்சாய் கிளவுட் தொழில்நுட்பங்கள் மற்றும் திறந்த மூல திட்டங்களில் ஆர்வமாக இருந்தால், நிறுவனத்திற்கு குழுசேரவும் மகிழ்ச்சியா, லின்க்டு இன் அல்லது ட்விட்டர்.

மொழிபெயர்ப்பாளரிடமிருந்து பி.எஸ்

எங்கள் வலைப்பதிவிலும் படிக்கவும்:

ஆதாரம்: www.habr.com

கருத்தைச் சேர்