آپاچی کافکا در مورد 1) هیجان الهام گرفته از تازه واردان، 2) اعماق چالش برانگیز، و 3) پاداش های غنی که دستیابی به درک کامل تر می تواند به همراه داشته باشد، مطمئناً مطابق با همنام رمان نویس خود عمل می کند. اما دور زدن سریع از Comparative Literature 101، اطمینان از اینکه از آخرین بهترین شیوههای کافکا پیروی میکنید، میتواند مدیریت این پلتفرم قدرتمند جریان داده را بسیار، بسیار آسانتر و بسیار مؤثرتر کند.
در اینجا ده نکته خاص برای کمک به بهینه سازی و مدیریت آسان تر استقرار کافکا آورده شده است:
- پارامترهای پیکربندی گزارش را تنظیم کنید تا لاگها قابل مدیریت باشند
- نیازهای سخت افزاری (کم) کافکا را بشناسید
- از Apache ZooKeeper به بهترین شکل استفاده کنید
- Replication و Redundancy را به روش صحیح تنظیم کنید
- مراقب تنظیمات موضوع باشید
- از پردازش موازی استفاده کنید
- کافکا را با در نظر گرفتن امنیت پیکربندی و ایزوله کنید
- با افزایش Ulimit از خاموشی جلوگیری کنید
- تأخیر شبکه کم را حفظ کنید
- از نظارت و هشدارهای موثر استفاده کنید
بیایید هر یک از این بهترین شیوه ها را با جزئیات بررسی کنیم.
پارامترهای پیکربندی گزارش را تنظیم کنید تا لاگها قابل مدیریت باشند
محتوای حمایت شده مرتبط
کتاب رمزگشایی میکروسرویس ها: بهترین روش ها برای توسعه دهندگان
حامی مرتبط
کاموندا 8: پیچیده ترین فرآیندهای خود را هماهنگ کنید. بهره وری را با مدل سازی مشترک، اتصال دهنده های خارج از جعبه و موارد دیگر بهبود دهید. اکنون رایگان امتحان کنید.
کافکا گزینههای زیادی را برای پیکربندی گزارش در اختیار کاربران قرار میدهد و در حالی که تنظیمات پیشفرض معقول هستند، سفارشی کردن رفتار گزارش برای مطابقت با نیازهای خاص شما تضمین میکند که در درازمدت به یک چالش مدیریت تبدیل نمیشوند. این شامل تنظیم خط مشی حفظ گزارش، پاکسازی، فشرده سازی و فعالیت های فشرده سازی می شود.
رفتار گزارش را می توان با استفاده از پارامترهای log. segment. bytes، log. segment. ms و log. cleanup. policy (یا معادل سطح موضوع) کنترل کرد. اگر در مورد استفاده خود به گزارشهای گذشته نیاز ندارید، میتوانید از کافکا بخواهید فایلهای گزارش را با اندازه فایل مشخص یا پس از مدت زمان مشخصی با تنظیم cleanup. policy روی «حذف» حذف کند. همچنین میتوانید آن را روی «فشرده» تنظیم کنید تا در صورت لزوم روی سیاههها نگه دارد. درک این نکته مهم است که اجرای پاکسازی گزارش منابع CPU و RAM را مصرف می کند. هنگام استفاده از کافکا بهعنوان گزارش تعهد برای هر مدت زمان، مطمئن شوید که فراوانی تراکمها را با نیاز به حفظ عملکرد متعادل کنید.
فشرده سازی فرآیندی است که به وسیله آن کافکا حفظ حداقل آخرین مقدار شناخته شده را برای هر کلید پیام (در لاگ داده ها برای یک پارتیشن موضوعی واحد) تضمین می کند. عملیات فشرده سازی بر روی هر کلید در یک موضوع کار می کند تا آخرین مقدار خود را حفظ کند و همه موارد تکراری دیگر را پاک کند. در صورت حذف، کلید با مقدار «تهی» باقی میماند (که به آن «سنگ قبر» گفته میشود که به صورت رنگارنگ، حذف را نشان میدهد).
تصویر 1 - فرآیند فشرده سازی لاگ کامیت کافکا (منبع)
مستندات گزارش ارتکاب کافکا:
نیازهای سخت افزاری (کم) کافکا را بشناسید
در حالی که بسیاری از تیمهای ناآشنا با کافکا، نیازهای سختافزاری آن را بیش از حد برآورد میکنند، این راهحل در واقع سربار کم و طراحی سازگار با مقیاس افقی دارد. این امکان استفاده از سختافزار ارزان قیمت را فراهم میکند و همچنان کافکا را با موفقیت اجرا میکند:
- CPU: مگر اینکه SSL و فشرده سازی لاگ مورد نیاز باشد، یک CPU قدرتمند برای کافکا لازم نیست. همچنین، هرچه تعداد هسته های بیشتری استفاده شود، موازی سازی بهتری انجام می شود. در اکثر سناریوها، جایی که فشرده سازی عاملی نیست، باید از کدک LZ4 برای ارائه بهترین عملکرد استفاده شود.
- RAM: در بیشتر موارد ، کافکا می تواند با 6 گیگابایت رم برای فضای پشته بهینه شود. برای بارهای مخصوص تولید سنگین ، از ماشین آلات با 32 گیگابایت یا بیشتر استفاده کنید. از RAM اضافی برای تقویت حافظه نهان سیستم عامل و بهبود توان مشتری استفاده می شود. در حالی که کافکا می تواند با رم کمتری اجرا کند ، در صورت وجود حافظه کمتر ، توانایی تحمل بار آن مانع می شود.
- دیسک: کافکا هنگام استفاده از چندین درایو در یک تنظیم RAID رونق می گیرد. SSD ها به دلیل پارادایم پی در پی I/O کافکا ، مزیت زیادی را ارائه نمی دهند و نباید از NAS استفاده شود.
- شبکه و فایل سیستم: XFS توصیه می شود ، همانطور که در صورت اجازه شرایط ، خوشه شما را در یک مرکز داده واحد نگه می دارد. همچنین ، تا حد امکان پهنای باند شبکه را تحویل دهید.
وب سایت Apache Kafka همچنین حاوی یک بخش سخت افزاری و پیکربندی سیستم عامل با توصیه های ارزشمند است.
پیوندهای مفید دیگر در مورد آزمایش بار/عملکرد کافکا:
از Apache ZooKeeper به بهترین شکل استفاده کنید
یک خوشه Zookeeper Apache در حال اجرا یک وابستگی اساسی برای اجرای کافکا است. اما هنگام استفاده از Zookeeper در کنار کافکا ، بهترین روشهای مهم برای به خاطر سپردن وجود دارد.
تعداد گره های باغ وحش باید در پنج مورد باشد. یک گره برای یک محیط DEV مناسب است و سه گره برای بیشتر خوشه های تولید کافکا کافی است. در حالی که یک استقرار بزرگ کافکا ممکن است برای کاهش تأخیر ، پنج گره باغ وحش خواستار شود ، باید بار قرار داده شده روی گره ها مورد توجه قرار گیرد. با هفت یا بیشتر گره ها همگام سازی و درخواست های رسیدگی ، بار بسیار زیاد می شود و عملکرد ممکن است یک ضربه قابل توجه داشته باشد. همچنین توجه داشته باشید که نسخه های اخیر Kafka بار بسیار کمتری را روی Zookeeper نسبت به نسخه های قبلی قرار می دهد ، که از Zookeeper برای ذخیره جبران مصرف کننده استفاده می کردند.
سرانجام ، همانطور که در مورد نیازهای سخت افزاری کافکا صادق است ، قوی ترین پهنای باند شبکه ممکن را به Zookeeper ارائه دهید. با استفاده از بهترین دیسک ها ، ذخیره کردن سیاهههای مربوط به طور جداگانه ، جداسازی فرآیند باغ وحش و غیرفعال کردن مبادلات نیز باعث کاهش تأخیر می شود.
در جدول زیر برخی از عملیات کنسول وابسته به باغ وحش در نسخه های مختلف کافکا برجسته شده است. نسخه قبلی ، 0. 8. 0 ، عملکرد زیادی در کنسول در دسترس نداشت. با شروع از 0. 10. 0. 0 به بعد ، می توانیم چند ویژگی اصلی را که از Zookeeper خارج شده است - که منجر به استفاده از باغ وحش پایین تر شده است ، مشاهده کنیم.
مدیریت مناسب به معنای همه چیز برای مقاومت در برابر استقرار کافکا شما است. یک روش مهم افزایش فاکتور تکثیر پیش فرض کافکا از دو به سه است که در اکثر محیط های تولیدی مناسب است. انجام این کار تضمین می کند که از دست دادن یک کارگزار باعث نگرانی نمی شود ، و حتی از دست دادن بعید دو در دسترس نیست. نکته دیگر مناطق رک مرکز داده است. به عنوان مثال ، در صورت استفاده از AWS ، سرورهای کافکا باید در همان منطقه باشند ، اما از چندین منطقه در دسترس بودن برای دستیابی به افزونگی و مقاومت استفاده می کنند. تکثیر و افزونگی را به روشی درست تنظیم کنید
پارامتر پیکربندی Kafka که برای استقرار قفسه در نظر گرفته شده است:
همانطور که در مستندات Apache Kafka گفته شد:
هنگامی که یک موضوع ایجاد می شود ، اصلاح شده یا ماکت ها توزیع مجدد می شوند ، از محدودیت قفسه تقدیر می شود ، و اطمینان حاصل می شود که دهانه های ماکت به همان اندازه که ممکن است (یک پارتیشن حداقل (#Racks ، Replication-Factor) قفسه های مختلف) را به خود اختصاص می دهد.
بیایید در نظر بگیریم که نه کارگزار کافکا (B1-B9) بیش از سه قفسه گسترش یافته است.
تصویر 2 - خوشه کافکا با آگاهی از قفسه
در اینجا، یک موضوع با سه پارتیشن (P1، P2، P3) و ضریب تکرار سه (R1، R2، R3) دارای یک پارتیشن به یک گره در هر رک است. این سناریو با دو کپی از هر پارتیشن به صورت زنده در دسترس است، حتی اگر یک رک کامل از کار بیفتد (همانطور که در نمودار نشان داده شده است).
مراقب تنظیمات موضوع باشید
پیکربندی موضوع تأثیر فوق العاده ای بر عملکرد خوشه های کافکا دارد. از آنجایی که تغییرات در تنظیمات مانند ضریب تکرار یا تعداد پارتیشن می تواند چالش برانگیز باشد، می خواهید اولین بار این تنظیمات را به درستی تنظیم کنید و سپس در صورت نیاز به تغییرات به سادگی یک موضوع جدید ایجاد کنید (همیشه حتما موضوعات جدید را آزمایش کنید. در یک محیط صحنه سازی).
از ضریب تکرار سه استفاده کنید و در مدیریت پیام های بزرگ متفکر باشید. در صورت امکان، پیام های بزرگ را به قطعات مرتب تقسیم کنید یا به سادگی از نشانگرهای داده ها (مانند پیوندهای S3) استفاده کنید. اگر این روشها گزینهای نیستند، فشردهسازی را در سمت تولیدکننده فعال کنید. اندازه بخش گزارش پیشفرض 1 گیگابایت است، و اگر پیامهای شما بزرگتر هستند، باید نگاهی دقیق به موارد استفاده داشته باشید. شمارش پارتیشن نیز یک تنظیم بسیار مهم است که در بخش بعدی به تفصیل مورد بحث قرار گرفته است.
پیکربندیهای موضوع دارای ویژگی «پیشفرض سرور» هستند. اینها را می توان در نقطه ایجاد موضوع یا در زمان های بعدی لغو کرد تا پیکربندی موضوعی خاص داشته باشد.
یکی از مهم ترین پیکربندی هایی که در بالا توضیح داده شد، ضریب تکرار است. مثال ایجاد موضوع از کنسول را با ضریب تکرار سه و سه پارتیشن با پیکربندیهای دیگر «سطح موضوع» نشان میدهد:
bin/kafka-topics. sh --zookeeper ip_addr_of_zookeeper:2181 --ایجاد --topic my-topic --partitions 3 --replication-factor 3 --config max. message. bytes=64000 --config flush. messages=1
برای یک لیست کامل از تنظیمات سطح موضوع این را ببینید.
از پردازش موازی استفاده کنید
کافکا برای پردازش موازی طراحی شده است و مانند خود عمل موازی سازی، استفاده کامل از آن مستلزم یک عمل متعادل کننده است. تعداد پارتیشن ها یک تنظیم سطح موضوعی است و هر چه تعداد پارتیشن ها بیشتر باشد موازی سازی و توان عملیاتی بیشتر است. با این حال، پارتیشن ها همچنین به معنای تاخیر تکرار، تعادل مجدد و باز کردن فایل های سرور هستند.
یافتن تنظیمات بهینه پارتیشن به سادگی محاسبه توان عملیاتی است که می خواهید برای سخت افزار خود به دست آورید، و سپس انجام محاسبات برای یافتن تعداد پارتیشن های مورد نیاز. با یک تخمین محافظه کارانه، یک پارتیشن در یک موضوع واحد می تواند 10 مگابایت بر ثانیه ارائه دهد و با برون یابی از آن تخمین می توانید به کل توان عملیاتی مورد نیاز خود برسید. یک روش جایگزین که مستقیماً وارد آزمایش میشود، استفاده از یک پارتیشن برای هر کارگزار در هر موضوع، و سپس بررسی نتایج و دو برابر کردن پارتیشنها در صورت نیاز به توان عملیاتی بیشتر است.
به طور کلی، یک قانون مفید در اینجا این است که کل پارتیشن ها را برای یک موضوع زیر 10 نگه دارید و کل پارتیشن ها را برای خوشه زیر 10000 نگه دارید. اگر این کار را نکنید، نظارت شما باید بسیار توانا و آماده باشد تا تعادل و قطعی های بسیار چالش برانگیز را انجام دهد!
تعداد پارتیشن ها هنگام ایجاد یک موضوع کافکا مطابق شکل زیر تنظیم می شود.
bin/kafka-topics. sh --zookeeper ip_addr_of_zookeeper:2181 --ایجاد --topic my-topic --partitions 3 --replication-factor 3 --config max. message. bytes=64000 --config flush. messages=1
پس از ایجاد می توان تعداد پارتیشن ها را افزایش داد. اما میتواند بر مصرفکنندگان تأثیر بگذارد، بنابراین توصیه میشود این عملیات را پس از رفع تمام عواقب انجام دهید.
bin/kafka-topics. sh --zookeeper zk_host:port/chroot --alter --topic topic_name -- پارتیشن ها new_number_of_partitions
کافکا را با در نظر گرفتن امنیت پیکربندی و ایزوله کنید
دو نگرانی اصلی در تامین امنیت استقرار کافکا عبارتند از: 1) پیکربندی داخلی کافکا، و 2) زیرساختی که کافکا روی آن کار می کند.
تعدادی از ویژگی های امنیتی ارزشمند با نسخه . 9 کافکا گنجانده شد، مانند پشتیبانی از احراز هویت Kafka/client و Kafka/ZooKeeper، و همچنین پشتیبانی TLS برای محافظت از سیستم های دارای سرویس گیرندگان اینترنتی عمومی. در حالی که TLS هزینه ای برای توان عملیاتی و عملکرد دارد، اما به طور موثر و ارزشمندی ترافیک را برای کارگزاران کافکا ایمن می کند.
جداسازی کافکا و باغ وحش برای امنیت حیاتی است. جدا از موارد نادر، ZooKeeper هرگز نباید به اینترنت عمومی متصل شود و فقط باید با کافکا (یا راه حل های دیگری که برای آن استفاده می شود) ارتباط برقرار کند. فایروال ها و گروه های امنیتی باید کافکا و ZooKeeper را با کارگزارانی که در یک شبکه خصوصی ساکن هستند که اتصالات خارجی را رد می کند، ایزوله کنند. یک میان افزار یا لایه متعادل کننده بار باید کافکا را از مشتریان عمومی اینترنت عایق کند.
گزینه ها و پروتکل های امنیتی با کافکا:
- SSL/SASL: احراز هویت مشتریان به کارگزاران، بین کارگزاران، کارگزاران به ابزارها.
- SSL: رمزگذاری داده ها بین مشتریان به کارگزاران، بین کارگزار و ابزارها برای کارگزاران
- انواع SASL: SASL/GSSAPI (Kerberos)، SASL/PLAIN، SASL/SCRAM-SHA-512/SCRAM-SHA-256، SASL_AUTHBEARER
- امنیت Zookeeper: احراز هویت برای مشتریان (کارگزاران، ابزارها، تولیدکنندگان، مصرف کنندگان)، مجوز با ACL.
*مشتریان کارگزار کافکا: تولیدکنندگان، مصرف کنندگان، ابزارهای دیگر.
*مشتریان باغ وحش: کارگزاران کافکا، تولیدکنندگان، مصرف کنندگان، ابزارهای دیگر.
*مجوز قابل اتصال است.
یک نمونه پیکربندی برای راه اندازی امنیتی با SASL_SSL:
با افزایش Ulimit از خاموشی جلوگیری کنید
این سناریویی است که اغلب اتفاق میافتد: کارگزاران از چیزی که به نظر میرسد بسیار زیاد است، پایین میآیند، اما در واقعیت یک خطای خوشخیم (هر چند با این وجود استرسزا) «فایلهای باز زیاد» است. با ویرایش /etc/sysctl. conf و پیکربندی Ulimit برای اجازه دادن به 128000 یا بیشتر فایل باز، می توانید از بروز این خطا جلوگیری کنید.
مثالی برای افزایش ulimit در CentOS:
- یک فایل جدید /etc/security/limits. d/nofile. conf ایجاد کنید
- مطالب را وارد کنید:
* سافت نوفایل 128000
* هارد نوفایل 128000
- سیستم را راه اندازی مجدد کنید یا دوباره وارد شوید.
- با صدور دستور زیر تایید کنید.
*توجه داشته باشید که روش های مختلفی برای افزایش ulimit وجود دارد. شما می توانید هر روش مناسبی را برای توزیع لینوکس خود دنبال کنید.
تأخیر شبکه کم را حفظ کنید
در پیگیری تأخیر کم برای استقرار کافکا، مطمئن شوید که کارگزاران از نظر جغرافیایی در نزدیکترین مناطق به مشتریان قرار دارند و حتماً عملکرد شبکه را در انتخاب انواع نمونههای ارائهشده توسط ارائهدهندگان ابری در نظر بگیرید. اگر پهنای باند مانع شما می شود، یک سرور بزرگتر و قدرتمندتر ممکن است سرمایه گذاری ارزشمندی باشد.
از نظارت و هشدارهای موثر استفاده کنید
پیروی از روشهای بالا هنگام ایجاد خوشه کافکا میتواند شما را از مشکلات متعددی که در راه است در امان بگذارد، اما همچنان باید هوشیار باشید تا هرگونه سکسکه را قبل از اینکه مشکلی ایجاد کند، تشخیص دهید و به درستی به آن رسیدگی کنید.
نظارت بر معیارهای سیستم - مانند توان عملیاتی شبکه، دستههای فایل باز، حافظه، بارگذاری، استفاده از دیسک، و عوامل دیگر - ضروری است، همانطور که توجه به آمار JVM، از جمله توقفهای GC و استفاده از پشتهها ضروری است. داشبوردها و ابزارهای تاریخچه قادر به تسریع فرآیندهای اشکال زدایی می توانند ارزش زیادی را ارائه دهند. در عین حال، سیستمهای هشدار مانند Nagios یا PagerDuty باید به گونهای پیکربندی شوند که در صورت بروز علائمی مانند افزایش زمان تاخیر یا فضای کم دیسک، اخطارهایی را ارائه دهند تا بتوان مشکلات جزئی را قبل از گلوله برفی برطرف کرد.
نمودارهای نظارتی کافکا را که در اینجا از طریق کنسول Instaclustr نشان داده شده است، نمونه بگیرید:
درباره نویسنده
Ben Bromhead مدیر ارشد فناوری در Instaclustr است که یک پلت فرم خدمات مدیریت شده از فناوری های منبع باز مانند Apache Cassandra، Apache Kafka، Apache Spark و Elasticsearch را ارائه می دهد.
از این محتوا الهام گرفته اید؟برای InfoQ بنویسید.
تبدیل شدن به یک ویرایشگر برای InfoQ یکی از بهترین تصمیمات حرفه ای من بود. این من را به چالش کشیده است و به من کمک کرده است که از بسیاری جهات رشد کنم. ما دوست داریم افراد بیشتری به تیم ما بپیوندند.