אפשר לערוך אשכול של שירות מנוהל ל-Apache Kafka כדי לעדכן מאפיינים כמו גודל האשכול (מספר ליבות ה-vCPU והזיכרון), רשימת רשתות המשנה המחוברות, הגדרת האיזון מחדש האוטומטי והגדרת ה-mTLS.
כדי לערוך אשכול, אפשר להשתמש במסוף Google Cloud , ב-Google Cloud CLI, בספריית הלקוח או ב-Managed Kafka API. אי אפשר להשתמש ב-API של Apache Kafka בקוד פתוח כדי לעדכן אשכול.
יכול להיות שעדכון של מאפיינים מסוימים, כמו מספר ליבות ה-vCPU והזיכרון, ידרוש הפעלה מחדש של האשכול. האשכול מופעל מחדש, ברוקר אחד בכל פעם. במהלך התהליך הזה, בקשות לברוקרים ספציפיים עשויות להיכשל, אבל הכשלים האלה הם זמניים. ספריות לקוח בשימוש נפוץ מטפלות בשגיאות האלה באופן אוטומטי.
תפקידים והרשאות נדרשים
כדי לקבל את ההרשאות שנדרשות לעדכון אשכול, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM Managed Kafka Cluster Editor (roles/managedkafka.clusterEditor) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות לעדכון אשכול. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לעדכן אשכול, צריך את ההרשאות הבאות:
-
עריכת אשכול:
managedkafka.clusters.update
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
שינוי הגודל של אשכול
אם מעדכנים את מספר ליבות ה-vCPU או את הזיכרון של אשכול, הכללים הבאים חלים:
יחס ה-vCPU לזיכרון הכולל של האשכול חייב תמיד להיות בין 1:1 ל-1:8.
אם מצמצמים את הקיבולת, צריך להיות לפחות vCPU אחד ו-1 GiB של זיכרון לכל ברוקר קיים. מספר הברוקרים אף פעם לא יורד.
אם מגדילים את הקיבולת, והשינוי גורם להוספה של ברוקרים חדשים, הממוצע של vCPU וזיכרון לכל ברוקר לא יכול לרדת ביותר מ-10% בהשוואה לממוצעים לפני העדכון.
לדוגמה, אם מנסים להגדיל את הקיבולת של אשכול מ-45 ליבות וירטואליות (3 ברוקרים) ל-48 ליבות וירטואליות (4 ברוקרים), הפעולה תיכשל. הסיבה לכך היא שהממוצע של vCPU לכל ברוקר יורד מ-15 ל-12, כלומר ירידה של 20%, שחורגת מהמגבלה של 10%.
מידע נוסף זמין במאמר בנושא עדכון גודל האשכול.
עריכת אשכול
כדי לערוך אשכול, מבצעים את השלבים הבאים:
המסוף
נכנסים לדף Clusters במסוף Google Cloud .
ברשימת האשכולות, לוחצים על האשכול שרוצים לערוך את המאפיינים שלו.
יוצג דף הפרטים של האשכול.
בדף הפרטים של האשכול, לוחצים על עריכה.
עורכים את המאפיינים לפי הצורך. אפשר לערוך את המאפיינים הבאים של אשכול במסוף:
- זיכרון
- מעבדים וירטואלים
- תת-רשת
- הגדרות איזון מחדש
- הגדרת mTLS
- תוויות
לוחצים על Save.
gcloud
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
מריצים את הפקודה
gcloud managed-kafka clusters update:gcloud managed-kafka clusters update CLUSTER_ID \ --location=LOCATION \ --cpu=CPU \ --memory=MEMORY \ --subnets=SUBNETS \ --auto-rebalance \ --labels=LABELSמחליפים את מה שכתוב בשדות הבאים:
- CLUSTER_ID: המזהה או השם של האשכול. אי אפשר לעדכן את הערך הזה.
- LOCATION: המיקום של האשכול. אי אפשר לעדכן את הערך הזה.
- CPU: מספר המעבדים הווירטואליים באשכול.
- MEMORY: כמות הזיכרון של האשכול. צריך להשתמש ביחידות 'MB', 'MiB', 'GB', 'GiB', 'TB' או 'TiB'. לדוגמה, "10GiB".
- SUBNETS: רשימת תת-הרשתות להתחברות. כדי להפריד בין כמה ערכים של רשתות משנה, צריך להשתמש בפסיקים.
-
auto-rebalance: הפעלה של איזון מחדש אוטומטי של מחיצות בנושא בין ברוקרים, כשמספר המעבדים באשכול משתנה. ההגדרה הזו מופעלת כברירת מחדל. - LABELS: תוויות לשיוך לאשכול.
אם משתמשים בדגל --async עם הפקודה, המערכת שולחת את בקשת העדכון ומחזירה תשובה באופן מיידי, בלי לחכות לסיום הפעולה. בעזרת הדגל --async, אפשר להמשיך במשימות אחרות בזמן שעדכון האשכול מתבצע ברקע. אם לא משתמשים בדגל --async, המערכת מחכה שהפעולה תסתיים לפני שהיא מחזירה תגובה. צריך לחכות עד שהעדכון של האשכול יסתיים לפני שממשיכים למשימות אחרות.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
LOCATION: המיקום של האשכול -
CLUSTER_ID: מזהה האשכול -
UPDATE_MASK: השדות לעדכון, כרשימה מופרדת בפסיקים של שמות מלאים. דוגמה:capacityConfig.vcpuCount,capacityConfig.memoryBytes -
CPU_COUNT: מספר המעבדים הווירטואליים באשכול -
MEMORY: כמות הזיכרון באשכול, בבייטים -
SUBNET_ID: מזהה תת-הרשת שאליה רוצים להתחבר
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID?updateMask=UPDATE_MASK
תוכן בקשת JSON:
{
"capacityConfig": {
"vcpuCount": CPU_COUNT,
"memoryBytes": MEMORY
},
"gcpConfig": {
"accessConfig": {
"networkConfigs": [
{
"subnet": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET_ID"
}
]
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/topics/TOPIC_ID",
"partitionCount": PARTITION_COUNT,
"replicationFactor": REPLICATION_FACTOR
}
בגוף הבקשה, כוללים רק את השדות שרוצים לעדכן, כפי שמצוין בפרמטר השאילתה UPDATE_MASK. כדי להוסיף רשת משנה, מוסיפים רשומה חדשה ל-networkConfigs.
המשך
לפני שמנסים להריץ את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Go במאמר התקנת ספריות הלקוח. מידע נוסף מופיע ב מאמרי העזרה של ה-API של שירות מנוהל ל-Apache Kafka Go.
כדי לבצע אימות לשירות המנוהל ל-Apache Kafka, צריך להגדיר את Application Default Credentials(ADC). מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
Java
לפני שמנסים להריץ את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במאמר התקנת ספריות הלקוח. מידע נוסף מופיע ב מאמרי העזרה של Managed Service for Apache Kafka Java API.
כדי לבצע אימות לשירות המנוהל ל-Apache Kafka, מגדירים את ה-Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
Python
לפני שמנסים להריץ את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במאמר התקנת ספריות הלקוח. מידע נוסף מופיע ב מאמרי העזרה של ה-API בשפת Python של שירות מנוהל ל-Apache Kafka.
כדי לבצע אימות לשירות המנוהל ל-Apache Kafka, מגדירים את ה-Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
מגבלות
אחרי שיוצרים אשכול של שירות מנוהל ל-Apache Kafka, אי אפשר לעדכן את המאפיינים הבאים:
- שם האשכול
- המיקום של האשכול
- סוג ההצפנה
אי אפשר לשנות את סוג ההצפנה, אבל אפשר לבצע רוטציה של מפתחות ההצפנה.