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

אתם צריכים.

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

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

תהליך ה-connection draining מתחיל בכל אחד מהמקרים הבאים:

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

איך פועל זמן להשלמת תהליך (connection draining)

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

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

בהמשך מפורטות ההגדרות של זמן להשלמת תהליך (connection draining):

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

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

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

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

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

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

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

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

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

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

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

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

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

המסוף

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

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

עדכון Cloud Service Mesh

  1. נכנסים לדף Cloud Service Mesh במסוף Google Cloud .
    כניסה ל-Cloud Service Mesh
  2. לוחצים על השם של השירות.
  3. בדף פרטי השירות, לוחצים על עריכה .
  4. בתחתית השירות, לוחצים על הגדרות מתקדמות.
  5. בשדה Connection draining timeout, מזינים ערך בין 0 ל-3600. הגדרה של 0 משביתה את התכונה 'זמן להשלמת תהליך'.
  6. לוחצים על Save.

gcloud

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

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

    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 משביתה את התכונה 'זמן להשלמת תהליך'. הזמן להשלמת תהליך (connection draining) חל על כל הבק-אנד של שירות לקצה העורפי.

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

API

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

  • למאזן עומסים גלובלי או חוצה אזורים קיים:

    PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
    
  • אם יש לכם מאזן עומסים אזורי קיים:

    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 שאליהן מתייחס שירות לקצה העורפי.

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

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