حماية خط الأنابيب الخاص بك: تجنب حدوث انقطاع في Apache Kafka مع نسخ احتياطية للمواضيع والتكوين

تحدث انقطاع في أباتشي كافكا عندما تفشل مجموعة كافكا أو بعض مكوناتها، مما يؤدي إلى انقطاع أو تدهور الخدمة. تم تصميم كافكا للتعامل مع تدفق البيانات عالي الإنتاجية والمراسلة المقاومة للأخطاء، ولكن يمكن أن يفشل لأسباب متنوعة، بما في ذلك فشل البنية التحتية، وسوء التكوين، ومشاكل التشغيل.

أسباب انقطاع كافكا

فشل الوسيط

يمكن أن يتسبب الحمل الزائد من البيانات أو الأجهزة الكبيرة في عدم استجابة الوسيط، أو فشل الأجهزة نتيجة تعطل القرص الصلب، أو استنزاف الذاكرة، أو مشكلات شبكة الوسيط.

مشكلات زوكيبر

تعتمد كافكا على أباتشي زوكيبر لإدارة بيانات تعريف المجموعة وانتخابات القادة. يمكن أن تؤدي فشل زوكيبر (بسبب تقسيم الشبكة، أو سوء التكوين، أو استنزاف الموارد) إلى تعطيل عمليات كافكا. يمكن تجاهل مشكلات زوكيبر إذا كانت المجموعة قد تم تكوينها في وضع KRaft مع الإصدار 3.5 الأحدث من أباتشي كافكا.

سوء تكوين الموضوع

يمكن أن تؤدي عوامل النسخ المتماثل غير الكافية أو تكوين الأقسام غير الصحيح إلى فقدان البيانات أو انقطاع الخدمة عند فشل الوسيط.

تقسيمات الشبكة

يمكن أن تؤدي فشل الاتصال بين الوسطاء، أو العملاء، أو زوكيبر إلى تقليل التوافر أو التسبب في سيناريوهات انقسام العقل.

سوء التكوين

الإعدادات غير المُكونة بشكل صحيح للعُقد (سياسات الاحتفاظ، تخصيص النسخ الاحتياطي، وما إلى ذلك) يمكن أن تؤدي إلى سلوك غير متوقع وفشل.

التحميل الزائد

زيادة مفاجئة في حركة الإنتاج أو الاستهلاك يمكن أن تحمل العُقد بشكل زائد.

تلف البيانات

تلف سجل Kafka (نتيجة لمشاكل القرص أو إغلاق مفاجئ) يمكن أن يتسبب في مشاكل في بدء التشغيل أو استرداد البيانات.

المراقبة والتنبيه غير الكافية

إذا لم يتم التعرف على الإشارات التحذيرية المبكرة (مثل ذروات استخدام القرص أو التأخير الطويل) وعدم التصدي لها، يمكن أن تؤدي المشاكل الطفيفة إلى فشل كامل.

تأمين نسخ احتياطية لمواضيع Apache Kafka والتكوينات مهم للاستعادة من الكوارث لأنها تسمح لنا باستعادة بياناتنا وإعداداتنا في حالة فشل الأجهزة، أو مشاكل البرامج، أو الأخطاء البشرية. لا تحتوي Kafka على أدوات مدمجة لنسخ احتياطي للموضوعات، لكن يمكننا تحقيق ذلك باستخدام بعض الطرق.

كيفية إنشاء نسخ احتياطي لمواضيع Kafka والتكوينات

هناك طُرق متعددة يمكننا اتباعها لعمل نسخ احتياطي للموضوعات والتكوينات.

مُستهلكي Kafka

يمكننا استخدام مستهلكي Kafka لقراءة الرسائل من الموضوع وتخزينها في تخزين خارجي مثل HDFS، S3، أو التخزين المحلي. باستخدام أدوات مستهلكي Kafka الموثوقة مثل kafka-console-consumer.sh المدمجة أو النصوص المستهلكة المخصصة، يمكن استهلاك جميع الرسائل من الموضوع من أقدم الإزاحة. هذه الإجراءات بسيطة وقابلة للتخصيص ولكنها تتطلب تخزينًا كبيرًا للموضوعات ذات النتاج العالي وقد تفقد البيانات الوصفية مثل الطوابع الزمنية أو الرؤوس.

توصيل Kafka

من خلال تدفق الرسائل من الموضوعات إلى تخزين الكائنات باستخدام أدوات مثل توصيل Kafka. يمكننا إعداد توصيل Kafka مع موصل وجهة (على سبيل المثال، موصل S3، موصل JDBC، إلخ)، تكوين الموصل لقراءة من موضوعات محددة، والكتابة إلى وجهة النسخ الاحتياطي. بالطبع، يجب أن يكون لدينا إعداد إضافي لتوصيل Kafka.

تكرار العنقود

ميزة المرايا في Kafka تسمح لنا بإدارة نسخ من عنقود Kafka موجود. إنه يستهلك الرسائل من عنقود المصدر باستخدام مستهلك Kafka ويعيد نشر تلك الرسائل إلى عنقود Kafka آخر، الذي يمكن أن يكون كنسخة احتياطية باستخدام منتج Kafka مضمن. يجب علينا التأكد من أن عنقود النسخ الاحتياطي في منطقة جسدية أو سحابية منفصلة للتكرار. يمكن تحقيق التكرار السلس ودعم النسخ الاحتياطية التدريجية ولكن يتطلب تكاليف تشغيلية أعلى للحفاظ على عنقود النسخ الاحتياطي.

نسخ مستوى نظام الملفات

يمكن تنفيذ نسخ احتياطية على مستوى نظام الملفات، مثل نسخ دلائل سجل Kafka مباشرة من وسطاء Kafka، عن طريق تحديد دليل سجل Kafka (log.dirs في server.properties). تسمح هذه الطريقة بالحفاظ على الإزاحات وبيانات التقسيم. ومع ذلك، تتطلب عمليات استعادة دقيقة لضمان التناسق وتجنب المشاكل المحتملة.

تكوينات Kafka والبيانات الوصفية

من حيث تكوين Kafka، يمكننا تحديد البيانات الوصفية حول المواضيع، ومراقبة الوصول (ACL)، ملف server.properties من جميع الوسطاء، ودليل بيانات ZooKeeper (كما هو محدد بواسطة معلمة dataDir في تكوين ZooKeeper). بعد ذلك، قم بحفظ الناتج في ملف للرجوع إليه. يجب علينا التأكد من توثيق جميع الإعدادات المخصصة (على سبيل المثال، log.retention.ms، num.partitions). باستخدام النص المضمن kafka-acls.sh، يمكن تجميع جميع خصائص التحكم في الوصول (acl) في ملف مسطح.

الخلاصة

الممارسات المناقشة أعلاه مناسبة أساسًا للمجموعات التي تم نشرها في المواقع ومحدودة بعدد العقد المفردة المكونة للمجموعة. ومع ذلك، يتولى مزودو الخدمات الإدارية التعامل مع أفضل الممارسات التشغيلية لتشغيل المنصة، لذا لا داعي للقلق بشأن اكتشاف المشاكل وإصلاحها.

من خلال قراءة هذه المقالة، آمل أن تكتسب رؤى عملية واستراتيجيات مثبتة للتعامل مع انقطاعات Apache Kafka في النشر على المواقع.

Source:
https://dzone.com/articles/avoid-kafka-outages-with-topic-and-configuration-backups