אם מפרסמים הודעות בנקודת הקצה הגלובלית של Pub/Sub, Pub/Sub מאחסן את ההודעות באופן אוטומטי באזורCloud de Confiance by S3NS הקרוב ביותר. אם רוצים לשלוט באזורים שבהם ההודעות מאוחסנות ומעובדות, אפשר להגדיר מדיניות לאחסון הודעות בנושא.
סקירה כללית על מדיניות אחסון ההודעות
אפשר להגדיר מדיניות אחסון הודעות כשיוצרים נושא חדש או כשמעדכנים נושא באמצעות המסוף, Google Cloud CLI או ממשקי ה-API ל-REST.
מדיניות אחסון ההודעות חלה רק על תוכן ההודעות. המדיניות לא חלה על נתונים אחרים, כמו שמות של נושאים, תוויות או הגדרות של ניהול זהויות והרשאות גישה (IAM).
Pub/Sub מאחסן הודעות כשלקוח מפרסם את ההודעות ב-Pub/Sub. מדיניות אחסון הודעות מבטיחה ש-Pub/Sub יאחסן ויעבד הודעות רק בקבוצתCloud de Confiance by S3NS האזורים שציינתם, ללא קשר למקום שממנו מגיעות הבקשות לפרסום או להרשמה. אם המדיניות מאפשרת פרסום במספר אזורים, Pub/Sub מאחסן את ההודעה באזור מותר שהכי קרוב למיקום שבו ההודעה שפורסמה נכנסת לרשת Cloud de Confiance .
כשמציינים מדיניות אחסון הודעות, אפשר להגדיר את enforceInTransit ל-True. הדגל הזה קובע את הפעולות הבאות:
בקשות משיכה שמתקבלות באזור שלא מורשה במדיניות אחסון ההודעות נדחות עם השגיאה
FAILED_PRECONDITION.אם לקוח פועל באחד מהאזורים המותרים – לדוגמה, במכונה וירטואלית של Compute Engine – הוא יכול להשתמש בנקודת הקצה הגלובלית. Cloud de Confiance הבקשות של הלקוח מנותבות באופן מקומי באזור המותר. הלקוח יכול גם להשתמש בנקודת קצה למיקום או בנקודת קצה אזורית שמטרגטת אזור מותר.
אם לקוח פועל בתוך Cloud de Confiance אזור שלא מורשה, או פועל מחוץ לאזור Cloud de Confiance, הוא חייב להשתמש בנקודת קצה אזורית או מבוססת-מיקום שמטרגטת אזור ברשימת האזורים המורשים.
המסירה של מינויים לקבלת הודעות פוש מתבצעת רק באזורי Cloud המותרים. במקרים מסוימים, ההגבלה הזו יכולה להשהות לחלוטין את מסירת ההודעות למנויים לקבלת עדכונים. כשמינוי לשליחת הודעות פוש עובר למצב כזה בגלל שהמיקומים לשליחת הודעות פוש מוגבלים מדי בגלל שילוב של גורמים כמו מיקום אחסון ההודעות, אזורים מותרים ומיקום משאב הייצוא, המצב הזה מוצג ב-Stackdriver.
מדיניות אחסון הודעות בנושאים חדשים
אם לא מציינים מדיניות לאחסון הודעות כשיוצרים נושא, המדיניות לאחסון הודעות נקבעת באופן אוטומטי על סמך מדיניות הארגון בנושא הגבלת מיקום משאבים. אם לא מופעלת מדיניות ארגונית, מדיניות אחסון ההודעות מאפשרת את כל האזורים.
באופן דומה, אם לא מצוינת מדיניות לאחסון הודעות, הדגל
enforceInTransitנקבע על סמך מדיניות הארגון Enforce in-transit regions for Pub/Sub messages (אכיפת אזורים למעבר הודעות ב-Pub/Sub). למידע נוסף על מדיניות הארגון הזו, ראו מגבלות שקשורות למדיניות הארגון.אם מציינים מדיניות אחסון הודעות כשיוצרים נושא, מדיניות אחסון ההודעות יכולה לכלול רק את האזורים שמותרים על ידי המדיניות הארגונית האפקטיבית של הגבלת מיקום המשאב. אם לא חלה מדיניות ארגונית, מדיניות אחסון ההודעות יכולה לכלול כל אזור.
מדיניות אחסון הודעות בנושאים קיימים
כשמדיניות ארגונית מתעדכנת, השינויים לא מועברים אוטומטית לנושאים קיימים. לכן, יכול להיות שמדיניות אחסון ההודעות של נושא קיים לא תהיה מסונכרנת עם המדיניות העדכנית של הארגון. מידע נוסף מופיע במאמר ניהול ההבדלים בין מדיניות ארגונית למדיניות בנושאים.
כשמעדכנים את מדיניות אחסון ההודעות בנושא מסוים, השינויים לא מועברים להודעות שכבר פורסמו. הודעות שכבר נשמרו על סמך מדיניות ישנה לא יועברו כדי להתאים למדיניות החדשה. השינויים חלים רק על הודעות שפורסמו אחרי העדכון.
חריגים
המדיניות הזו מציינת רשימה של שמות אזורים מותרים Cloud de Confiance . לכן, אין תמיכה בפריטים הבאים:
- רשימות החרגה
- אזורים או מיקומים בכמה אזורים
אם מפרסמים הודעה עם מפתח סדר ומדיניות אחסון ההודעות לא כוללת את האזור הקרוב ביותר, שירות Pub/Sub מחזיר שגיאה.
הגדרת מדיניות לאחסון הודעות
יש שתי דרכים להגדיר מדיניות אחסון הודעות לנושאים, כולל:
- הגדרת מדיניות לאחסון הודעות באמצעות מדיניות הארגון.
- מגדירים מדיניות לאחסון הודעות כשיוצרים נושא.
הגדרת מדיניות לאחסון הודעות באמצעות מדיניות הארגון
.המסוף
כדי להגדיר מדיניות אחסון הודעות שחלה על כמה נושאים, צריך להגדיר מדיניות ארגונית של הגבלת מיקום משאבים.
נכנסים לדף מדיניות הארגון במסוף ניהול זהויות והרשאות גישה (IAM).
בוחרים את הצומת בהיררכיית המשאבים (ארגון, תיקייה או פרויקט) שרוצים להגדיר לו מדיניות ארגונית.
במסנן, מזינים Resource Location Restriction.
לוחצים על Cloud de Confiance by S3NS - הגבלת מיקום משאב.
לוחצים על עריכה.
מוסיפים או מסירים אזורים לפי הצורך.
כל הנושאים החדשים שתיצרו יקבלו את ההגדרות האלה. השינויים לא מועברים אוטומטית לנושאים קיימים. כדי לעדכן נושאים קיימים, צריך להריץ פעולת עדכון.
מידע נוסף על מדיניות ארגונית זמין במאמר ניהול המשאבים ב- Cloud de Confiance by S3NS .
הגדרת מדיניות לאחסון הודעות כשיוצרים נושא
המסוף
כשמשתמשים במסוף, אי אפשר להגדיר מדיניות אחסון הודעות כשיוצרים נושא. Cloud de Confiance במקום זאת, כל הנושאים החדשים יקבלו באופן אוטומטי את מדיניות הארגון הגבלת מיקום המשאבים.
אבל אחרי שיוצרים נושא, אפשר לשנות את מדיניות אחסון ההודעות שלו במסוף באמצעות פעולת עדכון.
CLI של gcloud
כדי ליצור נושא עם מדיניות אחסון הודעות ספציפית, משתמשים בפקודה gcloud pubsub topics create עם הדגל --message-storage-policy-allowed-regions:
gcloud pubsub topics create TOPIC_ID \ --message-storage-policy-allowed-regions=REGION1,REGION2
מחליפים את מה שכתוב בשדות הבאים:
-
TOPIC_ID: המזהה או השם של הנושא החדש. -
REGION1, REGION2: רשימה מופרדת בפסיקים של Cloud de Confiance אזורים נתמכים.
REST
כדי ליצור נושא עם מדיניות אחסון הודעות, משתמשים בשיטה projects.topics.create.
הבקשה צריכה להיות מאומתת באמצעות אסימון גישה בכותרת Authorization. כדי לקבל אסימון גישה ל-Application Default Credentials הנוכחיים: gcloud auth application-default print-access-token.
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json --data @response-body.json
מציינים את השדות הבאים בגוף הבקשה:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": ["REGION"],
"enforceInTransit": true
}
}
כאשר:
PROJECT_ID הוא מזהה הפרויקט.
מספר הנושא שלך הוא TOPIC_ID.
REGION הוא האזור שציינת.
דוגמה לתשובה:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": [
"REGION"
],
"enforceInTransit": true
}
}
מידע נוסף על הגדרת מדיניות אחסון הודעות זמין בהפניות הבאות ל-API.
עדכון מדיניות האחסון של הודעות
המסוף
במסוף Cloud de Confiance , פותחים את הדף פרטי הנושא.
בוחרים את הנושא שרוצים לעדכן.
אפשר לבחור כמה נושאים.
בחלונית המידע, בוחרים בכרטיסייה מדיניות האחסון.
יכול להיות שהחלונית הזו מכווצת כברירת מחדל. אם היא מכווצת, לוחצים על Show info panel.
בוחרים או מבטלים את הבחירה בכמה אזורים שרוצים.
לוחצים על עדכון.
CLI של gcloud
כדי להעביר את מדיניות אחסון ההודעות שהוגדרה במדיניות הגבלת מיקום המשאבים של הארגון לנושא, מריצים את הפקודה הבאה של gcloud pubsub topics update:
gcloud pubsub topics update TOPIC_ID \ --recompute-message-storage-policy
כדי לעדכן את מדיניות אחסון ההודעות של נושא באזורים ספציפיים, מריצים את הפקודה gcloud pubsub topics update עם הדגל --message-storage-policy-allowed-regions:
gcloud pubsub topics update TOPIC_ID \ --message-storage-policy-allowed-regions=REGION1,REGION2
מחליפים את מה שכתוב בשדות הבאים:
-
TOPIC_ID: המזהה של הנושא שרוצים לעדכן. -
REGION1, REGION2: רשימה מופרדת בפסיקים של Cloud de Confiance אזורים נתמכים.
REST
כדי לעדכן נושא עם מדיניות אחסון הודעות, משתמשים בשיטה projects.topics.patch.
הבקשה צריכה להיות מאומתת באמצעות אסימון גישה בכותרת Authorization. כדי לקבל אסימון גישה ל-Application Default Credentials הנוכחיים: gcloud auth application-default print-access-token.
PATCH https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json --data @response-body.json
מציינים את השדות הבאים בגוף הבקשה:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": ["REGION"], // Replace with your required region
"enforceInTransit": true
}
}
כאשר:
PROJECT_ID הוא מזהה הפרויקט.
מספר הנושא שלך הוא TOPIC_ID.
REGION הוא האזור שציינת.
דוגמה לתשובה:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": [
"REGION"
],
"enforceInTransit": true
}
}
מידע נוסף על עדכון מדיניות אחסון ההודעות זמין במאמרי העזרה הבאים בנושא API:
ניהול ההבדלים בין מדיניות הארגון למדיניות הנושא
הצגת ההבדלים בין מדיניות ארגונית למדיניות בנושאים
המסוף
Cloud de Confiance במסוף מוצגים כל ההבדלים בין מדיניות הארגון לבין מדיניות האחסון של הודעות בנושאים ספציפיים.
כדי לבדוק אם יש נושאים שלא מסונכרנים עם מדיניות הארגון:
עוברים לדף פרטי הנושא.
בוחרים נושא.
בחלונית המידע, בוחרים בכרטיסייה מדיניות האחסון.
יכול להיות שהחלונית הזו מכווצת כברירת מחדל. אם היא מכווצת, לוחצים על Show info panel.
כללי המדיניות לאחסון מוצגים בחלונית, יחד עם כל ההבדלים בין כללי המדיניות של הארגון לבין כללי המדיניות של הנושא.
CLI של gcloud
כדי לבדוק את המדיניות הנוכחית שמוקצית לנושא, מריצים את הפקודה הבאה:
gcloud pubsub topics describe TOPIC_ID
מחליפים את מה שכתוב בשדות הבאים:
-
TOPIC_ID: המזהה של הנושא שבודקים.
פתרון הבדלים בין מדיניות הארגון לבין מדיניות הנושא
המסוף
במסוף Cloud de Confiance , פותחים את הדף פרטי הנושא.
בוחרים נושא.
בחלונית המידע, בוחרים בכרטיסייה מדיניות האחסון.
יכול להיות שהחלונית הזו מכווצת כברירת מחדל. אם היא מכווצת, לוחצים על Show info panel.
מדיניות האחסון מוצגת בחלונית, יחד עם כל אי התאמה.
אם יש אי התאמות, בחלונית המידע מוצגות שלוש אפשרויות לסנכרון מדיניות האחסון של הנושא עם מדיניות הארגון, כולל:
נושאים מאפשרים אחסון במיקומים אסורים.
צריך לעדכן את האפליקציה כך שהיא תאפשר אחסון רק במקומות שבהם המדיניות מאפשרת זאת.
הנושא לא מאפשר אחסון בחלק מהמיקומים המותרים.
מעדכנים כדי לאפשר אחסון בכל מקום שהמדיניות מאפשרת.
הנושאים לא עדכניים לגבי מיקומים אסורים ומותרים.
צריך לעדכן כדי לאפשר אחסון במקומות שבהם המדיניות מאפשרת.
בוחרים את האפשרות המתאימה לפתרון הבעיה.
לוחצים על עדכון הנושא.
תיפתח תיבת הדו-שיח סנכרון עם מדיניות האחסון של הארגון.
לוחצים על עדכון הנושא.
מעקב ופתרון בעיות
כדי לעזור לכם להבין איפה מאוחסנים נתוני ההודעות, Pub/Sub מציע מדדים שמפורטים לפי כל Cloud de Confiance אזור.
אפשר להשתמש במדדים האלה כדי:
- להבין איך הנתונים שלכם מופצים ברחבי העולם.
- על סמך הנתונים האלה, תוכלו לבצע אופטימיזציה של מיקום הפריסה של בעל התוכן הדיגיטלי והמנויים.
מדדים של אחסון הודעות
מספר ההודעות המאוחסנות שלא אושרו:
subscription/num_unacked_messages_by_region
נפח הנתונים המאוחסנים:
subscription/unacked_bytes_by_region
גיל ההודעה הכי ישנה:
subscription/oldest_unacked_message_age_by_region
מדדים דומים זמינים לנושאים ולתמונות מצב. בנוסף, יש מדדים תואמים להודעות שאושרו, שאפשר לשמור אותן להפעלה חוזרת. לדוגמה:
subscription/num_retained_acked_messages_by_region
השלכות על הביצועים והזמינות
מדיניות אחסון ההודעות לא משפיעה על ה-SLA הכולל, אבל היא יוצרת פשרה בין זמינות ושליטה כשמפרסמים או מנויים פועלים מחוץ ל Cloud de Confiance או באזורים שלא מורשים על ידי המדיניות. משתמשים שמפעילים לקוחות של בעלי תוכן דיגיטלי באזורים שמותרים על ידי מדיניות אחסון ההודעות לא יראו שינויים בחביון או בזמינות של השירות.
כדי להבין את הפשרות האלה, כדאי לבדוק איך בקשות פרסום מנותבות. בדרך כלל, מערכת Pub/Sub מנסה לאחסן את ההודעות שלכם קרוב ככל האפשר למקור הבקשה. בקשות שמקורן ב-Cloud de Confiance בדרך כלל מוגבלות למופעי Pub/Sub באותו אזור. אם המו"ל נמצא באזור אחד, הוספה של אזורים נוספים למדיניות אחסון ההודעות לא תגדיל את הזמינות. כשמפרסמים מחוץ ל- Cloud de Confiance by S3NS, יש שכבת ניתוב נוספת כדי להעביר את הבקשה לאזור Cloud de Confiance by S3NS קרוב שבו שירות Pub/Sub זמין.
נניח שיש מדיניות אחסון הודעות שמאפשרת רק את האזור us-central1.
- לקוח של בעל תוכן דיגיטלי שפועל ב-
us-east1שולח בקשתPublish. - הבקשה מנותבת לשרת Pub/Sub ב-
us-east1. - במקום לאחסן את הנתונים ב-
us-east1, הבקשה מנותבת לאזור הקרוב ביותר שמותר לאחסן בו הודעות לפי מדיניות אחסון ההודעות, שהואus-central1. - ההודעות שמתפרסמות ב-Pub/Sub מאוחסנות ב-
us-central1ומועברות משם לאפליקציות הרשומות.
למנגנון הזה יש השלכות על זמן האחזור של הבקשות ועל הזמינות הכוללת של המערכת. הבקשה עוברת דרך יותר קישורים ברשת, ולכן לוקח יותר זמן להשלים אותה והסיכוי שהיא תיכשל גבוה יחסית.בנוסף, יכול להיות שהמנויים יראו את ההודעה קצת יותר מאוחר כי היא צריכה לעבור לאזור הקרוב ביותר שבו מותר לשלוח הודעות לפני שהיא נשלחת. אם המדיניות מאפשרת אזור אחד, אבל האפליקציות של בעל התוכן הדיגיטלי פועלות בכמה אזורים, האפליקציה המבוזרת תהיה זמינה רק באזור המותר היחיד.
המאמרים הבאים
- במאמר סקירה כללית של Pub/Sub APIs מוסבר איך להשתמש בנקודות קצה גלובליות או מקומיות.