בדף הזה מוסבר איך לפתור בעיות שמתעוררות כשיוצרים או מגדירים אשכול של שירות מנוהל ל-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