זמן להשלמת תהליך (connection draining)

המתנה לסיום פעולות (Connection draining) היא תהליך שמבטיח שיינתן זמן לסיום של בקשות קיימות שנמצאות בתהליך, כשמוסרים מופע של מכונה וירטואלית (VM) מקבוצת מופעים או כשמוסרים נקודת קצה מקבוצות של נקודות קצה ברשת (NEGs) שההיקף שלהן הוא אזורי.

המידע בדף הזה רלוונטי רק לקבוצות של מכונות וירטואליות ולסוגים הבאים של NEGs שההיקף שלהם הוא אזורי:

הזמן להשלמת תהליך (connection draining) חל בכל אחד מהמקרים הבאים:

זמן להשלמת תהליך (connection draining) לא רלוונטי כשמסירים קבוצת קצה עורפי (קבוצת מופעים או NEG אזורי) משירות קצה עורפי של מאזן עומסים.

איך מתבצע ניתוק הדרגתי של חיבורים

כדי להפעיל את התכונה 'זמן להשלמת תהליך (connection draining)', מגדירים זמן קצוב לתהליך (connection draining) בשירות לקצה העורפי. משך הזמן הקצוב לתפוגה צריך להיות בין 0 ל-3,600 שניות, כולל.

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

בהמשך מופיעה רשימה של מפרטים בנושא זמן להשלמת תהליך (connection draining):

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

    כל מאזני העומסים מסוג Passthrough Network Load Balancer תומכים בזמן להשלמת תהליך (connection draining) עבור TCP,‏ UDP ופרוטוקולים אחרים שאינם TCP.

  • אפשר להשתמש בזמן להשלמת תהליך (connection draining) גם בשירותי קצה עורפי שמשולבים בפריסות של Cloud Service Mesh.

  • כשמגדירים פסק זמן להפסקת חיבורים, ומסירים מופע מקבוצת מופעים או מסירים נקודת קצה מ-NEG אזורי, מאזני העומסים ו-Cloud Service Mesh מתנהגים באופן הבא:Google Cloud

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

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

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

    • מאזני עומסי רשת עם העברת נתונים: למשך הזמן שצוין של זמן קצוב לתפוגה להשלמת תהליך (connection draining), מנות ששייכות לחיבורים קיימים מנותבות למכונה הווירטואלית או לנקודת הקצה שמסומנת להסרה. אחרי שזמן קצוב לתפוגה מסתיים, מאזן העומסים מסיר את הרשומה של מעקב החיבור. אחרי שהערך בטבלת מעקב החיבורים מוסר, מנות עוקבות של החיבור מנותבות למכונת VM או לנקודת קצה שונה בעורף על ידי מעקב אחר תהליך בחירת העורף ומעקב החיבורים. בחיבורי TCP, לשרת העורפי השונה אין רשומה של חיבור קיים, ולכן הוא עשוי לשלוח מנה לאיפוס TCP ‏ (RST) כדי לסגור את החיבור ולאפשר ללקוח לפתוח חיבור חדש למאזן העומסים. שימו לב שמאזני עומסים של רשתות במצב העברה לא יכולים לשלוח חבילות RST או FIN כדי לסגור חיבור.

  • אם מפעילים את התכונה 'זמן להשלמת תהליך (connection draining)' בכמה שירותים לקצה העורפי שמשתפים את אותן קבוצות של מופעים או NEGs, נעשה שימוש בערך הזמן הקצוב לתפוגה הגדול ביותר. לדוגמה, נניח שאותה קבוצת מופעים או אותו NEG אזורי הם קצה עורפי לשני שירותים עורפיים, כאשר לאחד מהשירותים העורפיים יש פסק זמן של 100 שניות לניתוק חיבורים, ולשירות העורפי השני יש פסק זמן של 200 שניות לניתוק חיבורים. Google Cloud משתמשת ב-200 שניות כפסק הזמן האפקטיבי לניתוק חיבורים לפני סיום החיבורים. אם העורף הוא קבוצת מכונות מנוהלת, פעולות שמוחקות את המכונה מתעכבות לפחות ב-200 שניות.

  • אם לא מגדירים זמן קצוב לתפוגה של ניתוק חיבורים, או אם הזמן הקצוב לתפוגה של ניתוק חיבורים מוגדר לאפס (0), Google Cloud מערכת Google Cloud מסיימת חיבורים קיימים במופע או בנקודת הקצה שהוסרו במהירות האפשרית.

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

הפעלת ניתוק הדרגתי של חיבורים

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

המסוף

עדכון של מאזן עומסים

  1. נכנסים לדף Load balancing במסוף Google Cloud .
    כניסה לדף Load balancing
  2. בכרטיסייה Load Balancers (מאזני עומסים), לוחצים על סמל האפשרויות הנוספות more_vert ליד מאזן העומסים שרוצים לעדכן, ואז לוחצים על Edit (עריכה) .
  3. לוחצים על Backend configuration.
  4. בחלונית Backend configuration, לוחצים על .
  5. בתחתית החלונית Edit שירות לקצה העורפי, לוחצים על Advanced configurations.
  6. בשדה זמן קצוב לתפוגה של חיבור, מזינים ערך בין 0 ל-3600. הגדרה של 0 משביתה את התכונה 'זמן להשלמת תהליך'.

gcloud

כדי להפעיל את התכונה 'הפסקת פעילות של חיבורים' בשירות חדש או קיים לקצה העורפי, משתמשים בדגל --connection-draining-timeout. בדוגמאות הבאות אפשר לראות איך משנים את הזמן הקצוב לתפוגה של ניתוק החיבור:

  • אם יש לכם מאזן עומסים אזורי קיים:

    gcloud compute backend-services update BACKEND_SERVICE \
        --region=REGION \
        --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
    

מחליפים את ה-placeholders בערכים תקינים:

  • BACKEND_SERVICE: השירות לקצה העורפי שאתם מעדכנים
  • REGION: אם רלוונטי, האזור של שירות ה-Backend שאתם מעדכנים
  • CONNECTION_TIMEOUT_SECS: מספר השניות להמתנה לפני סיום החיבורים הקיימים למופעים או לנקודות קצה, בין 0 ל-3600 שניות, כולל. הגדרה של 0 משביתה את התכונה 'זמן להשלמת תהליך'. הזמן הקצוב לתפוגה של השלמת התהליך חל על כל הקצה העורפי של שירות הקצה העורפי.

    אפשר גם להשתמש בפקודה gcloud compute backend-services edit כדי לעדכן שירות לקצה העורפי קיים.

API

כדי להפעיל את התכונה 'זמן להשלמת תהליך (connection draining)' ב-API כשיוצרים או מעדכנים מכונה או נקודת קצה, שולחים בקשה ל-URI של ה-API הרלוונטי כדי לכלול את השדה connectionDraining בגוף הבקשה. בדוגמאות הבאות אפשר לראות איך מגדירים את המאפיין הזה על ידי עריכה של שירות קיים בעורף האתר. מידע על מאפיינים נדרשים אחרים זמין במסמכי התיעוד של כל מאזן עומסים.

  • אם יש לכם מאזן עומסים אזורי קיים:

    PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/backendServices
    
    {
       "name": "BACKEND_SERVICE",
       "connectionDraining": {
         "drainingTimeoutSec": CONNECTION_TIMEOUT_SECS
       }
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט שמכיל את מאזן העומסים או את הפריסה של Cloud Service Mesh
    • BACKEND_SERVICE: שירות הקצה העורפי שבו נעשה שימוש בפריסת מאזן העומסים או Cloud Service Mesh
    • CONNECTION_TIMEOUT_SECS: מספר השניות להמתנה לפני הסרת מופעים או נקודות קצה מקבוצת המופעים או מקבוצת נקודות הקצה ברשת (NEG), בין 0 ל-3,600 שניות, כולל. משך הזמן הקצוב לתפוגה הזה חל על כל קבוצות המכונות או ה-NEG שאליהן יש הפניה משירות לקצה העורפי.

המאמרים הבאים