בידוד ב-Cloud Service Mesh

בדף הזה מוסבר איך להגדיר את Service mesh כדי ליצור בידוד טוב יותר של הבקשות בשירות לקצה העורפי, באמצעות יצירת הגדרת בידוד.

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

כברירת מחדל, Cloud Service Mesh משתמש באלגוריתם waterfall by region כדי להחליט לאן להפנות את תנועת המשתמשים. באמצעות האלגוריתם הזה, Cloud Service Mesh מנתב את התנועה לאזור הקרוב ביותר עד שהעורפים פועלים במגבלת הקיבולת שהוגדרה. לאחר מכן, תעבורת הנתונים תתחיל לעבור לאזור מרוחק יותר.

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

תרשים בידוד

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

  • אם העורפים באזור מסוים עמוסים מדי, יכול להיות ש-Cloud Service Mesh עדיין ישלח אליהם תנועה נוספת, גם אם העורפים באזורים אחרים יכולים לטפל בתנועה. כלומר, סביר יותר שכל אזור בנפרד יסבול מעומס יתר בגלל תעבורה נוספת, ולכן צריך לתכנן בהתאם.
  • התנועה עדיין מנותבת באמצעות מישור בקרה גלובלי. כלומר, עדיין יש סיכוי לכשלים מתואמים ברמה הגלובלית בכמה אזורים.
  • התכונה הזו מוגדרת באמצעות משאב serviceLbPolicy. כל ההגבלות עדיין חלות.
  • במצב הבידוד STRICT, הבקשות נכשלות אם אין שרתי קצה עורפיים להצגת מודעות באותו אזור.

אחרי שמפעילים את התכונה הזו, יש שני תרחישים:

בידוד של האתר הקרוב ביותר

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

תרשים הבידוד הקרוב ביותר

בידוד מחמיר

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

תרשים של בידוד מחמיר

הפעלת הבידוד

gcloud

כדי ליצור הגדרת בידוד באמצעות Google Cloud CLI:

  1. מריצים את הפקודה הבאה כדי ליצור serviceLbPolicy:

    gcloud network-services service-lb-policies create my-isolation-policy \
        --isolation-config-granularity=REGION \
        --isolation-config-mode=ISOLATION_MODE \
        --location=global
    

    מחליפים את ISOLATION_MODE באחת מהאפשרויות הבאות:

    1. ‫NEAREST: התנועה נשלחת לאזור הקרוב ביותר.
    2. ‫STRICT: התעבורה נכשלת אם אין שרתי קצה עורפיים זמינים באותו אזור כמו הקצה הקדמי.

    אם לא מציינים ערך במפורש, ערך ברירת המחדל הוא NEAREST. שימו לב: אפשר לציין את השדה הזה רק אם הדגל --isolation-granularity מוגדר גם הוא.

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

    gcloud network-services service-lb-policies update POLICY_NAME \
        --isolation-config-granularity=REGION \
        --isolation-config-mode=ISOLATION_MODE \
        --location=global
    

    מחליפים את POLICY_NAME בשם של המדיניות הקיימת.

  2. אחרי שיוצרים או מעדכנים משאב serviceLbPolicy, מצרפים אותו למשאב backendService:

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
      ‐‐service-lb-policy POLICY_URL
    

    מחליפים את BACKEND_SERVICE_NAME בשם של שירות ה-Backend.

השבתת הבידוד

כדי להשבית את התכונה הזו, יש שתי אפשרויות:

  1. מגדירים את isolationConfigs כלא מוגדר.
  2. להסיר את ServiceLbPolicy מהשירות אם זו התכונה היחידה שהפעלתם באמצעות המדיניות הזו

הגדרת isolationConfigs כלא מוגדר

מריצים את הפקודה הבאה כדי להגדיר את isolationConfigs כלא מוגדר:

gcloud network-services service-lb-policies update my-isolation-policy \
  --isolation-config-granularity=unspecified \
  --isolation-config-mode=unspecified \
  --location=global

הסרת ServiceLbPolicy מהשירות

מריצים את הפקודה הבאה כדי להסיר את ServiceLbPolicy:

gcloud network-services service-lb-policies delete my-isolation-policy --location=global

תמיכה, אבחון ופתרון בעיות

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

העומס על השרתים האחוריים גבוה מדי

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

התנועה הועברה

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

התנועה לא הועברה

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

התנועה הועברה אחרי ששרתי קצה עורפיים נוספו לאזור או הוסרו ממנו

כשהתכונה הזו מופעלת, יכול להיות שתנועת הגולשים תועבר אם יתווספו קצוות עורפיים חדשים לאזור. זה צפוי כי Cloud Service Mesh ינסה לנתב את התנועה אל הקצה העורפי הזה כדי לבצע אופטימיזציה של זמן האחזור הכולל ברשת. באופן דומה, כשמסירים את השרתים העורפיים האחרונים, Cloud Service Mesh יתחיל לשלוח תנועה לאזור מרוחק. זו גם התנהגות צפויה.

בקשות שנכשלו

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