במאמר הזה מוסבר איך לפתור בעיות שקשורות לעקביות, לעיכובים בשכפול ולמכסות של מדדים כשמבצעים שאילתות לגבי משאבים גלובליים דרך נקודות קצה ל-API לתצוגה אזורית של Compute Engine. למידע נוסף על נקודות קצה אזוריות לקריאה בלבד, קראו את המאמר תצוגות אזוריות של משאבים גלובליים.
עיכובים בשכפול או משאבים חסרים
כששולחים שאילתות לנקודות קצה של מטא-נתונים אזוריים, יכול להיות שמשאבים גלובליים שנוצרו לאחרונה או שדות של מטא-נתונים שעודכנו לאחרונה לא יופיעו מיד בתגובות האזוריות.
ממשקי API של תצוגה אזורית משרתים בקשות קריאה על ידי שליחת שאילתות לעותק אזורי לקריאה בלבד של מסד הנתונים הגלובלי המרכזי. עדכונים שבוצעו במשאבים גלובליים ראשיים באמצעות נקודות קצה גלובליות רגילות משוכפלים באופן אסינכרוני לרפליקות האזוריות האלה.
השכפול האסינכרוני הזה אומר שהתצוגות האזוריות הן מודל עקביות הדרגתי. זמן האחזור של שכפול P99 ממסד הנתונים הגלובלי המרכזי לרפליקות אזוריות הוא בדרך כלל פחות מ-60 שניות.
פתרון: כדי לפתור את הבעיה, נסו את אחת מהאפשרויות הבאות:
- המתנה לשכפול: רוב עדכוני השכפול מסתיימים תוך 60 שניות. אם סקריפט אוטומטי או עומס עבודה של לקוח מבצעים שאילתה על משאב שנוצר לאחרונה, צריך לוודא שהלקוח מטמיע לוגיקה של ניסיון חוזר עם השהיה אקספוננציאלית לפני ניסיון חוזר (backoff).
- הסבר על חלופת ברירת המחדל השקופה: אם בקשת
GETמפורשת למזהה משאב ספציפי שמטרגט רפליקה אזורית גורמת לאי מציאה במטמון, Compute Engine מנסה באופן אוטומטי לבצע קריאה חלופית למסד הנתונים הגלובלי המרכזי באותה עסקה. - שליחת שאילתות לנקודות קצה גלובליות כדי להשיג מודל עקביות חזק: אם צינור עיבוד הנתונים לפריסה דורש עקביות מיידית של קריאה אחרי כתיבה ללא זמן אחזור של שכפול, צריך לשלוח שאילתות ישירות לנקודות קצה קנוניות גלובליות במקום לתצוגות אזוריות. לדוגמה, שאילתה
projects.get,images.getאוimages.list.
404 Not Found תגובות
יכול להיות שתקבלו קוד סטטוס 404 Not Found HTTP כשאתם מנסים לאחזר תמונה ספציפית או תצוגת פרויקט.
שגיאת 404 Not Found יכולה להתרחש מהסיבות הבאות:
- משאב היעד לא קיים במסד הנתונים הגלובלי המרכזי.
- משאב היעד נוצר בשניות האחרונות, השכפול לרפליקה האזורית לא הושלם, והבקשה השקופה לגיבוי למסד הנתונים הגלובלי המרכזי נכשלה או שהזמן הקצוב לתפוגה שלה חלף.
- ציינתם פרמטר אזור או מזהה פרויקט לא חוקיים בכתובת ה-URL של הבקשה.
פתרון: כדי לפתור את הבעיה, נסו את הפתרונות הבאים:
- כדי לוודא שהמשאב המבוקש קיים באופן גלובלי, מריצים בקשה גלובלית רגילה של
describeאוlist– לדוגמה,gcloud compute images describe IMAGE_NAMEאוgcloud compute project-info describe --project=PROJECT_ID. - בודקים את נתיב כתובת ה-URL של הבקשה כדי לוודא שמחרוזת היעד
REGIONתקינה ופעילה. - אם המשאב נוצר לאחרונה, נסו שוב את הבקשה אחרי 60 שניות.
חסר מערך quota בתגובות של projectViews
כששולחים שאילתה למשאב compute.Project באמצעות נקודות קצה אזוריות של projectViews.get, המערך quota מוחרג מהתשובה.
כדי לשמור על בידוד תקלות אזורי ועל זמינות גבוהה, נקודת הקצה projectViews קוראת אך ורק מהרפליקה האזורית שלה. מכיוון שהיא לא מבצעת שידור רחב חוצה אזורים כדי לאסוף נתוני שימוש במכסה בכל האזורים, המערך quota מוחרג.
פתרון: כדי לפתור את הבעיה:
- חשוב לוודא שהאפליקציות לא מצפות למערך
quotaבתגובות שמוחזרות על ידי נקודות קצה (endpoints) אזוריות שלprojectViews. - כדי לאחזר נתוני תצורה מדויקים של מכסות ומדדי שימוש בזמן אמת בכל האזורים והאזורים, אפשר לשלוח שאילתה לנקודת הקצה הגלובלית
projects.getאו לעקוב אחרי מדדי המכסות של Compute Engine API ב-Cloud Monitoring.
המאמרים הבאים
- שימוש בתצוגות אזוריות לקריאות גמישות של מישור הבקרה
- איך ניגשים למשאבים גלובליים באופן אזורי כדי להבטיח זמינות גבוהה