הגנה על צינור הנתונים שלך: הימנע מהפסקות של Apache Kafka עם גיבויים לנושאים והגדרות

הפסקת עבודה של Apache Kafka מתרחשת כאשר אשכול Kafka או חלק מהמרכיבים שלו נכשל, מה שמוביל להפרעה או ירידה בשירות. Kafka מתוכנן לטיפול בהזרמת נתונים ובמסרים בקצב גבוה, עמידות בפני תקלות, אך הוא יכול להיכשל ממגוון סיבות, כולל תקלות בתשתית, תצורות שגויות, ובעיות תפעוליות.

למה מתרחשת הפסקת עבודה של Kafka

כישלון ברוקר

עומס נתונים מופרז או חומרה גדולה מדי גורמים לכך שהברוקר לא מגיב, כישלון חומרה בעקבות קריסת דיסק קשיח, חוסר זיכרון, או בעיות רשת של הברוקר.

בעיות ZooKeeper

Kafka תלויה ב-Apache ZooKeeper לניהול מטא-נתונים של האשכול ובחירת מנהיג. כישלונות ZooKeeper (בעקבות חציית רשתות, תצורות שגויות, או חוסר במשאבים) יכולים להפריע לפעולות של Kafka. בעיות ZooKeeper יכולות להתעלם אם האשכול הוגדר במצב KRaft עם גרסה 3.5 מאוחרת של Apache Kafka.

תצורה שגויה של נושא

גורמים לא מספקים של שכפול או תצורה לא נכונה של מחיצות עשויים לגרום לאובדן נתונים או הפסקות שירות כאשר ברוקר נכשל.

חציית רשתות

תקלות תקשורת בין ברוקרים, לקוחות, או ZooKeeper יכולות להפחית זמינות או לגרום לתרחישי מוח מפוצל.

תצורה שגויה

הגדרות אשכול מקולקלות (מדיניות שמירה, קצב שיבוץ שכפול וכו') עשויות לגרום להתנהגות בלתי צפויה וכשלים.

עומס

הגדלה פתאומית בתעבורת מפיקים או צרכנים עשויה להעמיס על אשכול.

פגיעה בנתונים

פגיעה בלוג של Kafka (בשל בעיות בדיסק או כיבוי פתאום) עשויה לגרום לבעיות בהפעלה או באחזור נתונים.

מעקב והתראה לא מספיקים

אם אותות אזהרה מוקדמים (כמו רציפים בשימוש בדיסק או לטנציה ארוכה) לא מזוהים ולא נעשה בהם פעולה, בעיות קטנות עשויות להוביל לכשלון מוחלט.

גיבויים של נושאים והגדרות Apache Kafka חשובים לשחזור במקרה של אסון מכל מיני, משום שהם מאפשרים לנו לשחזר את הנתונים וההגדרות שלנו במקרה של כשל בחומרה, בעיות תוכנה או שגיאה אנושית. Kafka אינה מגיעה עם כלים מובנים לגיבוי של נושאים, אך נוכל להשיג זאת באמצעות כמה שיטות.

איך לעשות גיבוי של נושאים והגדרות ב-Kafka

ישנם מספר דרכים שאנו יכולים לעקוב אחריהן כדי לגבות נושאים והגדרות.

צרכני Kafka

אנחנו יכולים להשתמש בצרכני Kafka כדי לקרוא הודעות מהנושא ולאחסן אותן בזיכרון חיצוני כמו HDFS, S3 או אחסון מקומי. באמצעות כלים אמינים לצרכני Kafka כמו kafka-console-consumer.sh המובנה או סקריפטים מותאמים אישית, ניתן לצרוך את כל ההודעות מהנושא מהאופסט הכי מוקדם. הפרוצדורה הזו פשוטה וניתנת להתאמה אישית אך דורשת אחסון גדול עבור נושאים עם קצב גבוה ועלולה לאבד מטה-דאטה כמו חותמות זמן או כותרות.

Kafka Connect

על ידי סטרימינג של הודעות מנושאים לאחסון אובייקטים באמצעות כלים כמו Kafka Connect. אנחנו יכולים להקים את Kafka Connect עם מחבר סינק (למשל, S3 Sink Connector, JDBC Sink Connector וכו'), להגדיר את המחבר לקרוא מנושאים ספציפיים ולכתוב ליעד הגיבוי. כמובן, אנחנו צריכים להקים הגדרה נוספת עבור Kafka Connect.

שכפול קלאסטר

תכונת השיקוף של 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