פתרון בעיות באשכול Kafka

בדף הזה מוסבר איך לפתור בעיות שמתעוררות כשיוצרים או מגדירים אשכול של שירות מנוהל ל-Apache Kafka.

שגיאות ביצירת אשכול Kafka

בקטע הזה מפורטות שגיאות שיכולות להתרחש כשיוצרים אשכול Kafka.

לשירות אין הרשאה לגשת למפתח Cloud KMS

הבעיה הבאה מתרחשת כשסוכן השירות של השירות המנוהל ל-Apache Kafka לא מקבל את ההרשאה הנדרשת לגישה למפתח Cloud KMS.

Service agent service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com
has not been granted the required role cloudkms.cryptoKeyEncrypterDecrypter to
encrypt data using the KMS key.`

כדי לפתור את הבעיה, צריך להעניק לחשבון השירות את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter במפתח Cloud KMS. מידע נוסף זמין במאמר בנושא תפקידים שנדרשים להגדרת CMEK.

לשירות אין הרשאה לאחזר את תת-הרשת

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

Service does not have permission to retrieve subnet. Please grant
service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com the
managedkafka.serviceAgent role in the IAM policy of the project
${SUBNET_PROJECT} and ensure the Compute Engine API is enabled in project
${SUBNET_PROJECT}`

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

שגיאות רישות

בקטע הזה מפורטות שגיאות שיכולות להתרחש כשמגדירים רשת עבור אשכול Kafka.

השירות לא הצליח להגדיר את הרשת

הבעיה הבאה מתרחשת אם השירות המנוהל ל-Apache Kafka לא מצליח לחבר את אשכול Kafka לרשת המשנה של הענן הווירטואלי הפרטי.

Managed Service for Apache Kafka failed to set up networking in VPC subnet.

כדי לפתור את השגיאה, מבצעים את השלבים הבאים:

  • מפעילים את Compute Engine API ואת Cloud DNS API בפרויקט ההורה של רשת ה-VPC של הצרכן.

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

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

מידע נוסף זמין במאמר הגדרת רשתות בשירות המנוהל ל-Apache Kafka.

לא ניתן להתחבר לאפליקציות לקוח

אם אפליקציות הלקוח לא מצליחות להתחבר לאשכול, כדאי לבדוק את הבעיות הבאות:

  • מוודאים שהלקוחות משתמשים בכתובת ה-bootstrap הנכונה.

  • מוודאים שלקוחות Kafka פועלים ברשת VPC שמוגדרת לגישה לאשכול של השירות המנוהל ל-Apache Kafka.

  • אם מריצים את לקוח Kafka במחשב או במחשב נייד, אפשר להגדיר מכונה של Compute Engine לשימוש כשרת proxy כדי לגשת לאשכול שירות מנוהל ל-Apache Kafka. מידע נוסף זמין במאמר בנושא הגדרת מכונת לקוח.

שגיאות אימות

בקטע הזה מפורטות שגיאות שאולי יופיעו כשיישומי לקוח עוברים אימות באשכול Kafka.

האימות של SASL נכשל

הבעיה הבאה מתרחשת כשלקוח לא מצליח להתחבר לאשכול באמצעות אימות SASL.

Exception in thread "main" java.util.concurrent.ExecutionException:
org.apache.kafka.common.errors.SaslAuthenticationException:
Authentication failed: Invalid username or password

כדי לפתור את הבעיה, בודקים את הסיבות הבאות:

  • הסיסמה לא תקינה, והיא לא מייצגת blob של JSON של מפתח תקין של חשבון שירות אחרי פענוח base64, או אסימון גישה תקין.

  • לחשבון המשתמש המאומת אין את ההרשאה managedkafka.clusters.connect באשכול.

  • שם המשתמש שצוין לא תואם לישות הראשית של פרטי הכניסה.

אם לקוח חווה ניתוקים תכופים כל 30 דקות, יכול להיות שהסיבה לכך היא שהלקוח לא תומך באימות חוזר תקופתי. בברוקרים של שירות מנוהל ל-Apache Kafka, הלקוחות נדרשים לבצע אימות מחדש כל 30 דקות. הדרישה הזו נאכפת על ידי מאפיין הברוקר connections.max.reauth.ms. מוודאים שגרסת ספריית הלקוח של Kafka היא 2.2.0 ואילך, ושיש בה תמיכה באימות מחדש.

מידע נוסף זמין במאמר בנושא הגדרת אימות SASL.

שגיאות תפעוליות

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

שגיאות שקשורות למצב שבו אין מספיק מקום בדיסק

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

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

  • ניצול הדיסק של הברוקר גבוה מאוד (>‎85%).

  • מספר העותקים המשוכפלים (ISR) יורד מתחת לגורם השכפול.

  • יומני אשכולות מציגים שגיאות כמו השגיאות הבאות:

    Error processing append operation on partition PARTITION_ID.
    org.apache.kafka.common.errors.NotEnoughReplicasException: The size of the current ISR Set(10)
    is insufficient to satisfy the min.isr requirement of 2 for partition PARTITION_ID
    

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

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

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

הלקוחות חווים ניתוקים זמניים

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

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

  • העיבוד מושהה בזמן שמובילי המחיצות ומתאמי קבוצות הצרכנים עוברים לשרתי תיווך אחרים.

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

  • שגיאות חיבור זמניות או פסק זמן (timeout) כשמבצעים commit של אופסטים. ספריות לקוח שנמצאות בשימוש נפוץ מטפלות בשגיאות האלה באופן אוטומטי.

  • עלייה זמנית במספר המחיצות שלא בוצע להן שכפול (broker/under_replicated_partitions) כשברוקר מופעל מחדש.

  • עלייה חדה במדד Under-MinISR Partitions (broker/under_min_isr_partitions). סביר להניח שהעלייה הזו תואמת לנושא של מעקב פנימי שלא משוכפל, וזהו התנהגות צפויה כל עוד הספירה היא 1 לכל ברוקר. ערך שגדול מ-1 עשוי להצביע על בעיה בנתונים או בנושאי מטא-נתונים.

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

המאמרים הבאים