ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

نوٽ. ترجمو: هن آرٽيڪل ۾، بنزائي ڪلائوڊ هڪ مثال شيئر ڪري ٿو ته ڪفڪا کي ڪبرنيٽس ۾ استعمال ڪرڻ آسان بڻائڻ لاءِ ان جا ڪسٽم ٽولز ڪيئن استعمال ڪري سگهجن ٿا. ھيٺيون ھدايتون بيان ڪري ٿي ته توھان پنھنجي انفراسٽرڪچر جي بھترين سائيز کي ڪيئن طئي ڪري سگھو ٿا ۽ ڪافڪا کي پاڻ ترتيب ڏئي گھربل ٿرو پُٽ حاصل ڪرڻ لاءِ.

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

Apache Kafka قابل اعتماد، اسپيبلبل ۽ اعلي ڪارڪردگي حقيقي وقت جي اسٽريمنگ سسٽم ٺاهڻ لاء هڪ ورهايل اسٽريمنگ پليٽ فارم آهي. ان جي شاندار صلاحيتون Kubernetes استعمال ڪندي وڌائي سگھجن ٿيون. ان لاءِ اسان ترقي ڪئي آهي اوپن سورس ڪافڪا آپريٽر ۽ هڪ اوزار سڏيو ويندو آهي سپر ٽيوب. اهي توهان کي اجازت ڏين ٿا ڪافڪا کي ڪبرنيٽس تي هلائڻ ۽ ان جي مختلف خصوصيتن کي استعمال ڪرڻ، جهڙوڪ بروکر جي ترتيب کي ٺيڪ ڪرڻ، ريبلانسنگ سان ميٽرڪ-بنياد اسڪيلنگ، ريڪ جي آگاهي، "نرم" (مرحوم) تازه ڪاري ڪرڻ، وغيره.

ڪوشش ڪريو Supertubes پنھنجي ڪلستر ۾:

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

يا رابطو ڪريو دستاويز. توھان پڻ پڙھي سگھوٿا ڪافڪا جي ڪجھ صلاحيتن جي باري ۾، اھو ڪم جنھن سان پاڻمرادو آھي Supertubes ۽ Kafka آپريٽر استعمال ڪندي. اسان پهريان ئي انهن بابت بلاگ تي لکيو آهي:

جڏهن توهان ڪبرنيٽس تي ڪافڪا ڪلستر کي ترتيب ڏيڻ جو فيصلو ڪيو ٿا، توهان کي امڪاني طور تي بنيادي بنيادي ڍانچي جي مناسب سائيز جي تعين ڪرڻ جي چئلينج کي منهن ڏيڻو پوندو ۽ توهان جي ڪافڪا جي ترتيب کي بهتر ڪرڻ جي ضرورت پوندي. هر بروکر جي وڌ ۾ وڌ ڪارڪردگي بنيادي زيربنا جي اجزاء جي ڪارڪردگي طرفان طئي ڪئي وئي آهي، جهڙوڪ ميموري، پروسيسر، ڊسڪ اسپيڊ، نيٽ ورڪ بينڊوڊٿ وغيره.

مثالي طور تي، بروکر جي جوڙجڪ اهڙي هجڻ گهرجي ته سڀني انفراسٽرڪچر عناصر انهن جي وڌ ۾ وڌ صلاحيتن لاء استعمال ڪيا وڃن. بهرحال، حقيقي زندگي ۾ هي سيٽ اپ ڪافي پيچيده آهي. اهو وڌيڪ امڪان آهي ته صارف هڪ يا ٻه اجزاء (ڊسڪ، ميموري، يا پروسيسر) جي استعمال کي وڌائڻ لاء بروکرز کي ترتيب ڏين ٿا. عام طور تي ڳالهائڻ، هڪ بروکر وڌ ۾ وڌ ڪارڪردگي ڏيکاري ٿو جڏهن ان جي ترتيب جي اجازت ڏئي ٿي ته سستي جزو کي مڪمل حد تائين استعمال ڪيو وڃي. انهي طريقي سان اسان حاصل ڪري سگھون ٿا هڪ اڻ ڄاڻائي لوڊ جو هڪ بروکر سنڀاليندو.

نظرياتي طور تي، اسان پڻ اندازو لڳائي سگهون ٿا بروکرز جو تعداد هڪ ڏنل لوڊ کي سنڀالڻ جي ضرورت آهي. بهرحال، عملي طور تي مختلف سطحن تي ڪيتريون ئي ترتيب ڏيڻ جا اختيار موجود آهن ته اهو تمام ڏکيو آهي (جيڪڏهن ناممڪن ناهي) هڪ خاص ترتيب جي امڪاني ڪارڪردگي جو جائزو وٺڻ. ٻين لفظن ۾، ڪجهه ڏنل ڪارڪردگي جي بنياد تي ترتيب ڏيڻ جي رٿابندي ڪرڻ تمام ڏکيو آهي.

Supertubes استعمال ڪندڙن لاءِ، اسان عام طور تي ھيٺيان طريقه اختيار ڪندا آھيون: اسان ڪجھ ٺاھ جوڙ سان شروع ڪريون ٿا (انفراسٽرڪچر + سيٽنگون)، پوءِ ان جي ڪارڪردگي کي ماپون ٿا، بروکر سيٽنگون ترتيب ڏيو ۽ عمل کي ٻيهر ورجايو. اهو ٿئي ٿو جيستائين انفراسٽرڪچر جو سست حصو مڪمل طور تي استعمال نه ڪيو وڃي.

هن طريقي سان، اسان کي هڪ واضح خيال ملي ٿو ته ڪيترا بروڪرز هڪ ڪلستر کي هڪ خاص لوڊ کي سنڀالڻ جي ضرورت آهي (بروڪرز جو تعداد پڻ ٻين عنصر تي منحصر آهي، جهڙوڪ لچڪ کي يقيني بڻائڻ لاء پيغام جي نقلن جو گهٽ ۾ گهٽ تعداد، ورهاڱي جو تعداد اڳواڻن وغيره). اضافي طور تي، اسان ڄاڻ حاصل ڪريون ٿا ته انفراسٹرڪچر جي اجزاء کي عمودي اسڪيلنگ جي ضرورت آهي.

هي آرٽيڪل انهن قدمن جي باري ۾ ڳالهائيندو جيڪي اسان کڻون ٿا سڀ کان وڌيڪ حاصل ڪرڻ لاءِ ابتدائي ترتيبن ۾ سستي حصن مان ۽ ماپ ڪري ڪافڪا ڪلستر جي ذريعي. هڪ انتهائي لچڪدار ترتيب جي ضرورت آهي گهٽ ۾ گهٽ ٽي هلندڙ بروڪرز (min.insync.replicas=3)، ورهايل ٽن مختلف پهچ وارن علائقن ۾. Kubernetes انفراسٽرڪچر کي ترتيب ڏيڻ، ماپڻ ۽ مانيٽر ڪرڻ لاءِ، اسان استعمال ڪريون ٿا پنهنجو ڪنٽينر مئنيجمينٽ پليٽ فارم هائبرڊ بادل لاءِ - پائپ لائن. اهو بنياد تي (ننگي ڌاتو، VMware) ۽ بادل جي پنجن قسمن (علي بابا، AWS، Azure، Google، Oracle) کي سپورٽ ڪري ٿو، انهي سان گڏ انهن جي ڪنهن به ميلاپ کي.

ڪافڪا ڪلستر انفراسٽرڪچر ۽ تشڪيل تي سوچون

هيٺ ڏنل مثالن لاءِ، اسان چونڊيو AWS کي ڪلائوڊ فراهم ڪندڙ ۽ EKS کي ڪبرنيٽس ورهائڻ جي طور تي. هڪ اهڙي تشڪيل استعمال ڪندي لاڳو ڪري سگهجي ٿو پي ڪي اي - بينزئي ڪلائوڊ کان ڪبرنيٽس جي ورڇ، CNCF پاران تصديق ٿيل.

ڊسڪ

Amazon مختلف پيش ڪري ٿو EBS حجم جا قسم. بنيادي تي gp2 и io1 اتي SSD ڊرائيو آهن، جڏهن ته، اعلي throughput کي يقيني بڻائڻ لاء gp2 جمع ٿيل ڪريڊٽ استعمال ڪري ٿو (I/O ڪريڊٽ)، تنهنڪري اسان قسم کي ترجيح ڏني io1، جيڪو مسلسل اعلي throughput پيش ڪري ٿو.

مثال جا قسم

ڪافڪا جي ڪارڪردگي جو تمام گهڻو دارومدار آپريٽنگ سسٽم جي صفحي جي ڪيش تي آهي، تنهنڪري اسان کي بروکرز (JVM) ۽ صفحي جي ڪيش لاءِ ڪافي ميموري سان مثالن جي ضرورت آهي. مثال c5.2x وڏو - هڪ سٺي شروعات، ڇاڪاڻ ته ان ۾ 16 GB جي ميموري آهي ۽ EBS سان ڪم ڪرڻ لاءِ بهتر. ان جو نقصان اهو آهي ته اهو صرف 30 منٽن کان وڌيڪ هر 24 ڪلاڪن لاءِ وڌ ۾ وڌ ڪارڪردگي مهيا ڪرڻ جي قابل آهي. جيڪڏهن توهان جي ڪم لوڊ جي ضرورت آهي چوٽي ڪارڪردگي جي گهڻي عرصي دوران، توهان شايد ٻين مثالن جي قسمن تي غور ڪرڻ چاهيندا. اهو ئي آهي جيڪو اسان ڪيو، ان تي روڪي c5.4x وڏو. ان ۾ وڌ ۾ وڌ throughput مهيا ڪري 593,75 Mbps. هڪ EBS حجم جي وڌ ۾ وڌ throughput io1 مثال کان وڌيڪ c5.4x وڏو، تنهنڪري انفراسٽرڪچر جو سڀ کان سست عنصر ممڪن آهي ته هن مثال جي قسم جو I/O throughput (جنهن جي اسان جي لوڊ ٽيسٽ کي پڻ تصديق ڪرڻ گهرجي).

نيٽورڪ

VM مثال ۽ ڊسڪ جي ڪارڪردگي جي مقابلي ۾ نيٽ ورڪ ذريعي ڪافي وڏو هجڻ گهرجي، ٻي صورت ۾ نيٽ ورڪ هڪ رڪاوٽ بڻجي ويندو. اسان جي صورت ۾، نيٽ ورڪ انٽرفيس c5.4x وڏو 10 Gb/s تائين جي رفتار کي سپورٽ ڪري ٿو، جيڪو VM مثال جي I/O throughput کان گهڻو وڌيڪ آهي.

بروکر جي مقرري

سي پي يو، ميموري، نيٽ ورڪ، ۽ ڊسڪ وسيلن جي ٻين عملن سان مقابلو ڪرڻ کان بچڻ لاءِ بروکرز کي مقرر ڪيو وڃي (ڪيبرنيٽس ۾ مقرر ڪيل) وقف ڪيل نوڊس تي.

جاوا ورزن

منطقي پسند جاوا 11 آهي ڇاڪاڻ ته اهو ڊڪر سان مطابقت رکي ٿو ان لحاظ سان ته JVM صحيح طريقي سان طئي ڪري ٿو پروسيسرز ۽ ميموري موجود ڪنٽينر تي جنهن ۾ بروکر هلي رهيو آهي. اهو ڄاڻڻ ته سي پي يو جون حدون اهم آهن، JVM اندروني ۽ شفاف طور تي GC ٿريڊز ۽ JIT ٿريڊز جو تعداد مقرر ڪري ٿو. اسان ڪافڪا جي تصوير استعمال ڪئي banzaicloud/kafka:2.13-2.4.0جنهن ۾ جاوا 2.4.0 تي ڪافڪا ورزن 2.13 (اسڪالا 11) شامل آهي.

جيڪڏهن توهان ڪبرنيٽس تي جاوا/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 ڪلستر، ڪافڪا ڪلستر، لوڊ پيدا ڪرڻ وارو اوزار، گڏوگڏ پروميٿيوس ۽ گرافانا)؛
  • گڏ ڪيل ڪارڪردگي اشارن ۾ بي ترتيب انحراف کي فلٽر ڪرڻ لاءِ هڪ خاص مدت لاءِ لوڊ پيدا ڪرڻ؛
  • مشاهدو ڪارڪردگي اشارن جي بنياد تي بروکر جي انفراسٽرڪچر ۽ تشڪيل کي ترتيب ڏيڻ؛
  • ان عمل کي ورجايو جيستائين ڪافڪا ڪلستر ذريعي گهربل سطح حاصل نه ٿئي. ساڳئي وقت، اهو لازمي طور تي ٻيهر پيدا ٿيڻ گهرجي ۽ ان جي ذريعي گهٽ ۾ گهٽ تبديلين جو مظاهرو ڪيو وڃي.

ايندڙ سيڪشن انهن مرحلن کي بيان ڪري ٿو جيڪي ٽيسٽ ڪلستر بينچ مارڪنگ جي عمل دوران ڪيا ويا.

اوزار

هيٺيان اوزار استعمال ڪيا ويا تڪڙو تڪڙو ترتيب ڏيڻ لاءِ بيس لائين ترتيب ڏيڻ، لوڊ پيدا ڪرڻ، ۽ ڪارڪردگي کي ماپڻ:

  • Banzai Cloud پائپ لائن Amazon کان هڪ EKS ڪلستر کي منظم ڪرڻ لاء c Prometheus (ڪافڪا ۽ انفراسٽرڪچر ميٽرڪ گڏ ڪرڻ) ۽ گرافانا (هنن ماپن کي ڏسڻ لاءِ). اسان فائدو ورتو ضم ٿيل в پائپ لائن خدمتون جيڪي مهيا ڪن ٿيون وفاق جي نگراني، مرڪزي لاگ گڏ ڪرڻ، خطرات جي اسڪيننگ، آفت جي بحالي، انٽرنيشنل گريڊ سيڪيورٽي ۽ گهڻو ڪجهه.
  • سنگينيل - ڪافڪا ڪلستر کي لوڊ ڪرڻ لاءِ هڪ اوزار.
  • ڪافڪا ميٽرڪس ۽ انفراسٽرڪچر کي ڏسڻ لاءِ گرافانا ڊيش بورڊ: ڪبرنيٽس ڪافڪا, نوڊ برآمد ڪندڙ.
  • ڪبرنيٽس تي ڪافڪا ڪلستر قائم ڪرڻ لاءِ آسان ترين طريقي لاءِ Supertubes 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 ڪلستر مٿي ۽ هلندڙ آهي، ان کي متحرڪ ڪريو نگراني جي خدمت - هوءَ پروميٿيس ۽ گرافانا کي هڪ ڪلستر ۾ ترتيب ڏيندي.

ڪافڪا سسٽم اجزاء

انسٽال ڪريو ڪافڪا سسٽم جا حصا (زوڪيپر، ڪافڪا آپريٽر) EKS ۾ سپر ٽيوبس CLI استعمال ڪندي:

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 پبليڪيشن کي ڪامياب سمجهيو ويندو آهي جڏهن پيغام جا سڀئي هم وقت ساز نقل ڪيا ويندا آهن ۽ ڪافڪا بروڪرز طرفان تصديق ٿيل آهن. هن جو مطلب اهو آهي ته معيار ۾ اسان ماپيندا آهيون نه رڳو اڳواڻن جي رفتار کي پيغام حاصل ڪرڻ، پر انهن جا پيروڪار پڻ پيغامن کي نقل ڪن ٿا. هن ٽيسٽ جو مقصد صارفين جي پڙهڻ جي رفتار جو جائزو وٺڻ نه آهي (صارفين) تازو موصول ٿيل پيغام جيڪي اڃا تائين او ايس پيج ڪيش ۾ موجود آهن، ۽ ڊسڪ تي محفوظ ڪيل پيغامن جي پڙهڻ جي رفتار سان ان جو مقابلو.
  • لوڊ جنريٽر 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 بائيٽ

توهان آساني سان ڪافڪا ڪلستر جي ڪارڪردگي کي وڌائي سگهو ٿا صرف نوان بروکرز شامل ڪندي ۽ ورهاڱي جي توازن کي برقرار رکڻ سان (اهو يقيني بڻائي ٿو ته لوڊ بروڪرز جي وچ ۾ برابر طور تي ورهايل آهي). اسان جي صورت ۾، هڪ بروکر کي شامل ڪرڻ کان پوء، ڪلستر throughput وڌي ويو ~580 Mb/s (~ 1,1 ملين پيغام في سيڪنڊ). ترقي توقع کان گهٽ ٿي وئي: اهو بنيادي طور تي ورهاڱي جي عدم توازن جي ڪري آهي (نه سڀئي بروکر پنهنجي صلاحيتن جي چوٽي تي ڪم ڪن ٿا).

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

JVM مشين جي ميموري واپرائڻ 2 GB کان هيٺ رهي:

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

ڊرائيوز سان بروکرز جو ڪم ورهاڱي جي عدم توازن کان متاثر ٿيو:

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

ڪبرنيٽس ۾ ڪافڪا ڪلستر لاءِ مناسب سائيز جو اندازو لڳايو

پهچڻ

مٿي پيش ڪيل ورهاڱي واري طريقي کي وڌايو وڃي ٿو وڌيڪ پيچيده منظرنامي کي ڍڪڻ لاءِ جنهن ۾ سوين صارف شامل آهن، ورهاڱي، رولنگ اپڊيٽ، پوڊ ٻيهر شروع، وغيره. هي سڀ اسان کي مختلف حالتن ۾ ڪافڪا ڪلستر جي صلاحيتن جي حدن جو اندازو لڳائڻ، ان جي آپريشن ۾ رڪاوٽن جي نشاندهي ڪرڻ ۽ انهن کي منهن ڏيڻ جا طريقا ڳولڻ جي اجازت ڏئي ٿو.

اسان Supertubes ٺاھيو آھي تڪڙو ۽ آساني سان ھڪڙي ڪلستر کي ترتيب ڏيڻ، ان کي ترتيب ڏيڻ، بروکرز ۽ عنوانن کي شامل ڪرڻ/ھٽائڻ، الرٽ جو جواب ڏيڻ، ۽ Kafka کي عام طور تي Kubernetes تي صحيح ڪم ڪرڻ کي يقيني بڻائڻ لاءِ. اسان جو مقصد توھان جي مدد ڪرڻ آھي بنيادي ڪم تي توجه ڏيڻ (“پيدا ڪريو” ۽ “ڪجھو” ڪافڪا پيغام)، ۽ تمام محنت سپرٽيوبس ۽ ڪافڪا آپريٽر تي ڇڏي ڏيو.

جيڪڏهن توهان Banzai Cloud ٽيڪنالاجيز ۽ اوپن سورس پروجيڪٽ ۾ دلچسپي رکو ٿا، ڪمپني جي رڪنيت حاصل ڪريو تي GitHub, LinkedIn، يا Twitter.

پي ايس مترجم کان

اسان جي بلاگ تي پڻ پڙهو:

جو ذريعو: www.habr.com

تبصرو شامل ڪريو