פתרון בעיות באשכול 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}`

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

שגיאות בחיבור לרשת

בקטע הזה מפורטות שגיאות שאתם עלולים להיתקל בהן כשאתם מגדירים את הרשת לאשכול 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 כדי לשפר את האמינות.

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

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

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

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

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

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

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

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

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

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

    המדד Under-MinISR Partitions (broker/under_min_isr_partitions) לא מושפע מנושא המעקב הפנימי ונשאר בערך 0 במהלך הפעלה מחדש הדרגתית, אם הנושאים משתמשים בפקטור ברירת המחדל של שכפול (3) ובערך min.insync.replicas של 2. ערך גדול מ-0 מציין שיותר מרפליקה אחת של מחיצה לא זמינה, מה שעשוי להצביע על בעיה.

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

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

‫Apache Kafka®‎ הוא סימן מסחרי רשום של The Apache Software Foundation או של השותפים העצמאיים שלה בארצות הברית או במדינות אחרות.