מעבר מבדיקות תקינות מדור קודם לבדיקות תקינות מפוצלות

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

בדף הזה מוסבר איך לשדרג מבדיקות התקינות הקודמות לבדיקות תקינות מפוצלות.

אימות סוג בדיקת התקינות

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

gcloud app describe

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

featureSettings:
    splitHealthChecks: true

הסבר על ההבדלים העיקריים

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

  • כברירת מחדל, בקשות HTTP לבדיקות תקינות מפוצלות לא מועברות. לעומת זאת, בדיקות תקינות מדור קודם מועברות כברירת מחדל לנתיב /_ah/health באפליקציה.

  • בדיקות התקינות של הפיצול שהועברו צריכות להחזיר 200 OK כשהן תקינות ומוכנות. בבדיקות תקינות מדור קודם, קודי ה-HTTP הבאים נחשבים תקינים: 200, 301, 302, 303, 307, 401, 402, 403, 404, 405.

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

לעומת זאת, אם בדיקות תקינות מדור קודם מופעלות, ואם הנתיב /_ah/health של האפליקציה מתחיל להחזיר קודי שגיאה לא תקינים של HTTP (למשל 5XX), בדיקות התקינות מדור קודם ייכשלו, המכונה הווירטואלית תפסיק לקבל תנועה ותופעל מחדש.

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

המרת אפשרויות מדור קודם של בדיקות תקינות

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

אפשרות שמירה על התנהגות זהה בבדיקות תקינות של ספליטים
enable_health_check אם המדיניות True או לא מוגדרת, צריך להגדיר את liveness_check.path ואת readiness_check.path לנתיב באפליקציה שמחזיר 200 OK כשהאפליקציה תקינה.
check_interval_sec מגדירים את liveness_check.check_interval_sec ואת readiness_check.check_interval_sec לאותו ערך.
timeout_sec מגדירים את liveness_check.timeout_sec ואת readiness_check.timeout_sec לאותו ערך.
unhealthy_threshold מגדירים את readiness_check.failure_threshold לאותו ערך.
healthy_threshold מגדירים את liveness_check.success_threshold ואת readiness_check.success_threshold לאותו ערך.
restart_threshold מגדירים את liveness_check.failure_threshold לאותו ערך. שימו לב: הערך של האפשרות check_interval_sec כפול הערך של האפשרות failure_threshold הוא הזמן שיידרש להשבתת מכונה וירטואלית לא תקינה.

הפעלת בדיקות תקינות מפוצלות

כדי לעבור מבדיקות תקינות מדור קודם לבדיקות תקינות מפוצלות ולמנוע הצגה של קודי סטטוס 5xx, צריך לבצע את השלבים הבאים:

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

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

    לחלופין, אפשר להתאים אישית את הקטע liveness_check או readiness_check בקובץ app.yaml לכל גרסה. לדוגמאות, ראו בדיקות פעילות ובדיקות מוכנות.

  3. מריצים את הפקודה הבאה:

    gcloud app update --split-health-checks --project [YOUR_PROJECT_ID]
  4. אם השתמשתם בהגדרות מותאמות אישית לבדיקות תקינות מדור קודם, אתם צריכים להסיר את הקטע health_check מקובץ app.yaml.

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