הגדרה של בדיקת תקינות מבוססת-אפליקציה ותיקון אוטומטי

במאמרי עזרה זה מוסבר איך להגדיר בדיקת תקינות מבוססת-אפליקציה כדי לתקן באופן אוטומטי מכונות וירטואליות בקבוצת מופעי מכונה מנוהלים (MIG). בנוסף, במאמר מוסבר איך לבצע את הפעולות הבאות: שימוש בבדיקת תקינות ללא תיקון אוטומטי, הסרת בדיקת תקינות, הצגת מדיניות התיקון האוטומטי ובדיקת מצב התקינות של כל מכונה וירטואלית.

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

אפשר גם להשבית את התיקון האוטומטי ב-MIG כדי להשתמש בבדיקת תקינות בלי להפעיל את התיקונים של מכונות וירטואליות לא תקינות.

מידע נוסף על תיקונים ב-MIG זמין במאמר מידע על תיקון מכונות וירטואליות לצורך זמינות גבוהה.

לפני שמתחילים

תמחור

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

הגדרה של בדיקת תקינות מבוססת-אפליקציה ותיקון אוטומטי

כדי להגדיר בדיקת תקינות מבוססת-אפליקציה ותיקון אוטומטי ב-MIG, צריך לבצע את הפעולות הבאות:

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

יצירת בדיקת תקינות

אפשר להחיל בדיקת תקינות אחת על עד 50 קבוצות של מכונות מנוהלות (MIG). אם יש לכם יותר מ-50 קבוצות, אתם צריכים ליצור כמה בדיקות תקינות.

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

המסוף

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

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

    1. נכנסים לדף Create a health check במסוף Cloud de Confiance .

      מעבר אל Create a health check

    2. נותנים שם לבדיקת התקינות, למשל example-check.

    3. בוחרים היקף. אפשר לבחור באפשרות אזורי או גלובלי. בדוגמה הזו, בוחרים באפשרות Global.

    4. בשדה Protocol, מוודאים שהאפשרות HTTP נבחרה.

    5. בשדה Port (יציאה), מזינים 80.

    6. בקטע Health criteria (קריטריונים לבדיקת תקינות), מזינים את הערכים הבאים:

      1. בשדה Check interval (מרווח הבדיקה), מזינים 5.
      2. בשדה Timeout (זמן קצוב לתפוגה), מזינים 5.
      3. מגדירים סף תקינות כדי לקבוע כמה בדיקות תקינות רצופות צריכות להצליח לפני שמכונה וירטואלית לא תקינה מסומנת כתקינה. בדוגמה הזו, מזינים 1.
      4. מגדירים סף של מצב לא תקין כדי לקבוע כמה בדיקות תקינות רצופות לא מוצלחות צריכות להתבצע לפני שמכונה וירטואלית תקינה מסומנת כלא תקינה. בדוגמה הזו, מזינים 3.
    7. לוחצים על יצירה כדי ליצור את בדיקת תקינות.

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

    בדיקות התקינות מגיעות מכתובות בטווחים 130.211.0.0/22 ו-35.191.0.0/16, לכן חשוב לוודא שכללי חומת האש ברשת מאפשרים לבדיקת התקינות להתחבר. בדוגמה הזו, ה-MIG משתמש ברשת default והמכונות הווירטואליות שלו מאזינות ביציאה 80. אם היציאה 80 לא פתוחה ברשת שמוגדרת כברירת מחדל, צריך ליצור כלל לחומת האש.

    1. נכנסים לדף Firewall policies במסוף Cloud de Confiance .

      לדף Firewall policies

    2. לוחצים על יצירת כלל לחומת האש.

    3. מזינים שם לכלל חומת האש. לדוגמה, allow-health-check.

    4. בקטע רשת, בוחרים ברשת default.

    5. בקטע יעדים, בוחרים באפשרות All instances in the network.

    6. בשדה מסנן מקור, בוחרים באפשרות IPv4 ranges.

    7. בשדה Source IPv4 ranges (טווחים של כתובות IPv4 של המקור), מזינים 130.211.0.0/22 ו-35.191.0.0/16.

    8. בקטע Protocols and ports (פרוטוקולים ויציאות), בוחרים באפשרות Specified protocols and ports (פרוטוקולים ויציאות ספציפיים) ופועלים לפי השלבים הבאים:

      1. בוחרים באפשרות TCP.
      2. בשדה יציאות, מזינים 80.
    9. לוחצים על יצירה.

gcloud

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

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

    gcloud compute health-checks create http example-check --port 80 \
       --check-interval 30s \
       --healthy-threshold 1 \
       --timeout 10s \
       --unhealthy-threshold 3 \
       --global
    
  2. יוצרים כלל חומת אש שמאפשר לבקשות לבדיקות תקינות להתחבר לאפליקציה.

    הבדיקות של בדיקת התקינות מגיעות מכתובות בטווחים 130.211.0.0/22 ו-35.191.0.0/16, לכן חשוב לוודא שכללי חומת האש מאפשרים לבדיקת התקינות להתחבר. בדוגמה הזו, ה-MIG משתמש ברשת default, והמכונות הווירטואליות שלו מאזינות ליציאה 80. אם יציאה 80 לא פתוחה כבר ברשת שמוגדרת כברירת מחדל, צריך ליצור כלל לחומת האש.

    gcloud compute firewall-rules create allow-health-check \
        --allow tcp:80 \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --network default
    

Terraform

  1. יוצרים בדיקת תקינות באמצעות משאב google_compute_http_health_check.

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

    resource "google_compute_http_health_check" "default" {
      name                = "example-check"
      timeout_sec         = 10
      check_interval_sec  = 30
      healthy_threshold   = 1
      unhealthy_threshold = 3
      port                = 80
    }
  2. יוצרים חומת אש באמצעות משאב google_compute_firewall.

    בדיקות התקינות מגיעות מכתובות בטווחים 130.211.0.0/22 ו-35.191.0.0/16, לכן צריך לוודא שכללי חומת האש מאפשרים לבדיקת התקינות להתחבר. בדוגמה הזו, ה-MIG משתמש ברשת default והמכונות הווירטואליות שלו מאזינות ליציאה 80. אם היציאה 80 לא פתוחה ברשת שמוגדרת כברירת מחדל, צריך ליצור כלל לחומת האש.

    resource "google_compute_firewall" "default" {
      name          = "allow-health-check"
      network       = "default"
      source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
      allow {
        protocol = "tcp"
        ports    = [80]
      }
    }

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

REST

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

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/healthChecks
    
    {
     "name": "example-check",
     "type": "http",
     "port": 80,
     "checkIntervalSec": 30,
     "healthyThreshold": 1,
     "timeoutSec": 10,
     "unhealthyThreshold": 3
    }
    
  2. יוצרים כלל חומת אש שמאפשר לבקשות לבדיקות תקינות להתחבר לאפליקציה.

    בדיקות התקינות מגיעות מכתובות בטווחים 130.211.0.0/22 ו-35.191.0.0/16, לכן צריך לוודא שכללי חומת האש מאפשרים לבדיקת התקינות להתחבר. בדוגמה הזו, ה-MIG משתמש ברשת default והמכונות הווירטואליות שלו מאזינות ליציאה 80. אם היציאה 80 לא פתוחה ברשת שמוגדרת כברירת מחדל, צריך ליצור כלל לחומת האש.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
    
    {
     "name": "allow-health-check",
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default",
     "sourceRanges": [
      "130.211.0.0/22",
      "35.191.0.0/16"
     ],
     "allowed": [
      {
       "ports": [
        "80"
       ],
       "IPProtocol": "tcp"
      }
     ]
    }
    

    מחליפים את PROJECT_ID במזהה הפרויקט.

הגדרת מדיניות לתיקון אוטומטי בקבוצת מופעים מנוהלת (MIG)

ב-MIG, אפשר להגדיר רק מדיניות אחת לתיקון אוטומטי כדי להחיל בדיקת תקינות.

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

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

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

המסוף

  1. נכנסים לדף Instance groups במסוף Cloud de Confiance .

    כניסה לדף Instance groups

  2. בעמודה שם ברשימה, לוחצים על השם של קבוצת ה-MIG שרוצים להחיל עליה את בדיקת תקינות.

  3. לוחצים על עריכה כדי לשנות את ה-MIG.

  4. לוחצים על Instance lifecycle and autohealing (מחזור החיים של מופע ותיקון אוטומטי) כדי להרחיב את הקטע.

    1. בקטע Autohealing, בשדה Health check, בוחרים בדיקת תקינות גלובלית או אזורית.
    2. בשדה Initial delay (השהיה ראשונית), משתמשים בערך ברירת המחדל או משנים אותו לפי הצורך.

      ההשהיה הראשונית היא מספר השניות שנדרשות למכונה וירטואלית חדשה כדי לבצע אתחול ולהריץ את הסקריפט לטעינה בזמן ההפעלה. במהלך תקופת ההשהיה הראשונית של מכונה וירטואלית, קבוצת ה-MIG מתעלמת מבדיקות תקינות לא מוצלחות כי יכול להיות שהמכונה הווירטואלית נמצאת בתהליך ההפעלה. כך נמנעת יצירה מחדש מוקדמת של מכונה וירטואלית על ידי קבוצת ה-MIG. אם בדיקת תקינות מקבלת תגובה תקינה במהלך ההשהיה הראשונית, זה מצביע על כך שתהליך ההפעלה הושלם והמכונה הווירטואלית מוכנה. הטיימר של ההשהיה הראשונית מתחיל כשהשדה currentAction של המכונה הווירטואלית משתנה ל-VERIFYING. הטיימר נעצר כשהזמן שנקבע מסתיים או כשבדיקת תקינות מצליחה. הערך של ההשהיה הראשונית צריך להיות בין 0 ל-3600 שניות. במסוף, ערך ברירת המחדל הוא 300 שניות.

  5. לוחצים על Save כדי לעדכן את השינויים.

gcloud

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

gcloud compute instance-groups managed update MIG_NAME \
    --health-check HEALTH_CHECK_URL \
    --initial-delay INITIAL_DELAY \
    --zone ZONE

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

gcloud compute instance-groups managed create MIG_NAME \
    --size SIZE \
    --template INSTANCE_TEMPLATE_URL \
    --health-check HEALTH_CHECK_URL \
    --initial-delay INITIAL_DELAY \
    --zone ZONE

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

  • MIG_NAME: השם של קבוצת ה-MIG שרוצים להגדיר בה תיקון אוטומטי.
  • SIZE: מספר המכונות הווירטואליות בקבוצה.
  • INSTANCE_TEMPLATE_URL: כתובת ה-URL של תבנית של הגדרות מכונה שרוצים להשתמש בה כדי ליצור מכונות ב-MIG. כתובת ה-URL יכולה להכיל את המזהה או את השם של תבנית של הגדרות מכונה. מציינים אחד מהערכים הבאים:
    • לתבנית של הגדרות מכונה אזורית: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • לתבנית של הגדרות מכונה גלובלית: INSTANCE_TEMPLATE_ID
  • HEALTH_CHECK_URL: כתובת ה-URL החלקית של בדיקת תקינות שרוצים להגדיר לתיקון אוטומטי. לדוגמה:
    • בדיקת תקינות אזורית: projects/example-project/regions/us-central1/healthChecks/example-health-check.
    • בדיקת תקינות כללית: projects/example-project/global/healthChecks/example-health-check.
  • INITIAL_DELAY: מספר השניות שנדרשות למכונה וירטואלית חדשה כדי לבצע אתחול ולהריץ את סקריפט לטעינה בזמן ההפעלה שלה. במהלך תקופת ההשהיה הראשונית של מכונה וירטואלית, קבוצת ה-MIG מתעלמת מבדיקות תקינות לא מוצלחות כי יכול להיות שהמכונה הווירטואלית נמצאת בתהליך ההפעלה. כך נמנעת יצירה מחדש מוקדמת של מכונה וירטואלית על ידי קבוצת ה-MIG. אם בדיקת תקינות מקבלת תגובה תקינה במהלך ההשהיה הראשונית, זה מצביע על כך שתהליך ההפעלה הושלם והמכונה הווירטואלית מוכנה. הטיימר של ההשהיה הראשונית מתחיל כשהשדה currentAction של המכונה הווירטואלית משתנה ל-VERIFYING. הטיימר נעצר כשהזמן שנקבע מסתיים או כשבדיקת תקינות מצליחה. הערך של ההשהיה הראשונית צריך להיות בין 0 ל-3600 שניות. ערך ברירת המחדל הוא 0.
  • ZONE: האזור שבו נמצאת קבוצת ה-MIG. בשביל MIG אזורי, משתמשים בדגל --region.

Terraform

כדי להגדיר מדיניות לתיקון אוטומטי בקבוצת מופעים מנוהלת (MIG), משתמשים בבלוק auto_healing_policies.

הדוגמה הבאה מגדירה מדיניות לתיקון אוטומטי בקבוצת MIG אזורית. מידע נוסף על המשאב שבו נעשה שימוש בדוגמה זמין במאמר google_compute_instance_group_manager. בשביל MIG אזורי, משתמשים במשאב google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name               = "igm-with-hc"
  base_instance_name = "test"
  target_size        = 3
  zone               = "us-central1-f"
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  auto_healing_policies {
    health_check      = google_compute_http_health_check.default.id
    initial_delay_sec = 30
  }
}

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

REST

כדי להגדיר מדיניות לתיקון אוטומטי בקבוצת מופעים מנוהלת (MIG) קיימת, משתמשים בשיטה patch באופן הבא:

לדוגמה, מריצים את הקריאה הבאה כדי להגדיר תיקון תוכנה אוטומטי (autohealing) ב-MIG אזורי קיים:

  PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME
  {
    "autoHealingPolicies": [
      {
        "healthCheck": "HEALTH_CHECK_URL",
        "initialDelaySec": INITIAL_DELAY
      }
    ]
  }

כדי להגדיר מדיניות לתיקון אוטומטי כשיוצרים קבוצת מופעים מנוהלת (MIG), משתמשים ב-method ‏insert באופן הבא:

לדוגמה, כדי להגדיר מדיניות של תיקון תוכנה אוטומטי (autohealing) כשיוצרים קבוצת MIG אזורית, מבצעים את הקריאה הבאה:

  POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
  {
    "name": "MIG_NAME",
    "targetSize": SIZE,
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "autoHealingPolicies": [
      {
        "healthCheck": "HEALTH_CHECK_URL",
        "initialDelaySec": INITIAL_DELAY
      }
    ]
  }

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

  • PROJECT_ID: מזהה הפרויקט.
  • MIG_NAME: השם של קבוצת ה-MIG שרוצים להגדיר בה תיקון אוטומטי.
  • SIZE: מספר המכונות הווירטואליות בקבוצה.
  • INSTANCE_TEMPLATE_URL: כתובת ה-URL של תבנית של הגדרות מכונה שרוצים להשתמש בה כדי ליצור מכונות ב-MIG. כתובת ה-URL יכולה להכיל את המזהה או את השם של תבנית של הגדרות מכונה. מציינים אחד מהערכים הבאים:
    • לתבנית של הגדרות מכונה אזורית: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • לתבנית של הגדרות מכונה גלובלית: INSTANCE_TEMPLATE_ID
  • HEALTH_CHECK_URL: כתובת ה-URL החלקית של בדיקת תקינות שרוצים להגדיר לתיקון אוטומטי. לדוגמה:
    • בדיקת תקינות אזורית: projects/example-project/regions/us-central1/healthChecks/example-health-check.
    • בדיקת תקינות כללית: projects/example-project/global/healthChecks/example-health-check.
  • INITIAL_DELAY: מספר השניות שנדרשות למכונה וירטואלית חדשה כדי לבצע אתחול ולהריץ את סקריפט לטעינה בזמן ההפעלה שלה. במהלך תקופת ההשהיה הראשונית של מכונה וירטואלית, קבוצת ה-MIG מתעלמת מבדיקות תקינות לא מוצלחות כי יכול להיות שהמכונה הווירטואלית נמצאת בתהליך ההפעלה. כך נמנעת יצירה מחדש מוקדמת של מכונה וירטואלית על ידי קבוצת ה-MIG. אם בדיקת תקינות מקבלת תגובה תקינה במהלך ההשהיה הראשונית, זה מצביע על כך שתהליך ההפעלה הושלם והמכונה הווירטואלית מוכנה. הטיימר של ההשהיה הראשונית מתחיל כשהשדה currentAction של המכונה הווירטואלית משתנה ל-VERIFYING. הטיימר נעצר כשהזמן שנקבע מסתיים או כשבדיקת תקינות מצליחה. הערך של ההשהיה הראשונית צריך להיות בין 0 ל-3600 שניות. ערך ברירת המחדל הוא 0.
  • ZONE: האזור שבו נמצאת קבוצת ה-MIG. אם מדובר בקבוצת מופעים מנוהלת אזורית, צריך להשתמש ב-regions/REGION בכתובת ה-URL.

אחרי שמסיימים את ההגדרה של תיקון אוטומטי, יכולות לעבור 10 דקות לפני שהתיקון האוטומטי מתחיל לעקוב אחרי מכונות וירטואליות בקבוצה. אחרי שהמעקב מתחיל, Compute Engine מתחיל לסמן מכונות וירטואליות כפעילות (או יוצר אותן מחדש) על סמך הגדרת התיקון האוטומטי. לדוגמה, אם מגדירים השהיה ראשונית של 5 דקות, מרווח בין בדיקות תקינות של דקה אחת וסף תקינות של בדיקה אחת, ציר הזמן ייראה כך:

  • עיכוב של 10 דקות לפני שתהליך התיקון האוטומטי מתחיל לעקוב אחרי מכונות וירטואליות בקבוצה
  • ‫+ 5 דקות לעיכוב הראשוני שהוגדר
  • ‫+ דקה אחת למרווח הבדיקה * סף תקינות (60 שניות * 1)
  • ‫= 16 דקות לפני שהמכונה הווירטואלית מסומנת כפעילה או נוצרת מחדש

הגדרת בדיקת תקינות ללא תיקון אוטומטי

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

כדי להגדיר בדיקת תקינות בלי תיקון תוכנה אוטומטי (autohealing), בוחרים אחת מהאפשרויות הבאות.

המסוף

  1. נכנסים לדף Instance groups במסוף Cloud de Confiance .

    כניסה לדף Instance groups

  2. בעמודה שם ברשימה, לוחצים על השם של קבוצת ה-MIG שרוצים להחיל עליה את בדיקת תקינות.

  3. לוחצים על עריכה כדי לשנות את ה-MIG.

  4. לוחצים על Instance lifecycle and autohealing (מחזור החיים של מופע ותיקון אוטומטי) כדי להרחיב את הקטע.

    1. בקטע Autohealing, בשדה Health check, בוחרים בדיקת תקינות גלובלית או אזורית.
    2. בשדה Initial delay (השהיה ראשונית), משתמשים בערך ברירת המחדל או משנים אותו לפי הצורך.

      ההשהיה הראשונית היא מספר השניות שנדרשות למכונה וירטואלית חדשה כדי לבצע אתחול ולהריץ את הסקריפט לטעינה בזמן ההפעלה. במהלך תקופת ההשהיה הראשונית של מכונה וירטואלית, קבוצת ה-MIG מתעלמת מבדיקות תקינות לא מוצלחות כי יכול להיות שהמכונה הווירטואלית נמצאת בתהליך ההפעלה. כך נמנעת יצירה מחדש מוקדמת של מכונה וירטואלית על ידי קבוצת ה-MIG. אם בדיקת תקינות מקבלת תגובה תקינה במהלך ההשהיה הראשונית, זה מצביע על כך שתהליך ההפעלה הושלם והמכונה הווירטואלית מוכנה. הטיימר של ההשהיה הראשונית מתחיל כשהשדה currentAction של המכונה הווירטואלית משתנה ל-VERIFYING. הטיימר נעצר כשהזמן שנקבע מסתיים או כשבדיקת תקינות מצליחה. הערך של ההשהיה הראשונית צריך להיות בין 0 ל-3600 שניות. במסוף, ערך ברירת המחדל הוא 300 שניות.

    1. ברשימה On failed health check בוחרים באפשרות No action.
  5. לוחצים על Save כדי לעדכן את השינויים.

gcloud

כדי להגדיר בדיקת תקינות ללא תיקון אוטומטי, כשמציינים את הגדרות בדיקת התקינות צריך להגדיר גם את הדגל --action-on-vm-failed-health-check לערך do-nothing, באופן הבא:

  • ב-MIG קיים, משתמשים בפקודה update.

    לדוגמה, משתמשים בפקודה הבאה ב-MIG אזורי קיים:

    gcloud compute instance-groups managed update MIG_NAME \
        --health-check HEALTH_CHECK_URL \
        --initial-delay INITIAL_DELAY \
        --action-on-vm-failed-health-check do-nothing \
        --zone ZONE
    
  • כדי ליצור קבוצת מופעים מנוהלת, משתמשים בפקודה create.

    לדוגמה, משתמשים בפקודה הבאה כשיוצרים קבוצת MIG אזורית:

    gcloud compute instance-groups managed create MIG_NAME \
        --size SIZE \
        --template INSTANCE_TEMPLATE_URL \
        --health-check HEALTH_CHECK_URL \
        --initial-delay INITIAL_DELAY \
        --action-on-vm-failed-health-check do-nothing \
        --zone ZONE
    

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

  • MIG_NAME: השם של קבוצת ה-MIG שרוצים להגדיר בה תיקון אוטומטי.
  • SIZE: מספר המכונות הווירטואליות בקבוצה.
  • INSTANCE_TEMPLATE_URL: כתובת ה-URL של תבנית של הגדרות מכונה שרוצים להשתמש בה כדי ליצור מכונות ב-MIG. כתובת ה-URL יכולה להכיל את המזהה או את השם של תבנית של הגדרות מכונה. מציינים אחד מהערכים הבאים:
    • לתבנית של הגדרות מכונה אזורית: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • לתבנית של הגדרות מכונה גלובלית: INSTANCE_TEMPLATE_ID
  • HEALTH_CHECK_URL: כתובת ה-URL החלקית של בדיקת תקינות שרוצים להגדיר לתיקון אוטומטי. לדוגמה:
    • בדיקת תקינות אזורית: projects/example-project/regions/us-central1/healthChecks/example-health-check.
    • בדיקת תקינות כללית: projects/example-project/global/healthChecks/example-health-check.
  • INITIAL_DELAY: מספר השניות שנדרשות למכונה וירטואלית חדשה כדי לבצע אתחול ולהריץ את סקריפט לטעינה בזמן ההפעלה שלה. במהלך תקופת ההשהיה הראשונית של מכונה וירטואלית, קבוצת ה-MIG מתעלמת מבדיקות תקינות לא מוצלחות כי יכול להיות שהמכונה הווירטואלית נמצאת בתהליך ההפעלה. כך נמנעת יצירה מחדש מוקדמת של מכונה וירטואלית על ידי קבוצת ה-MIG. אם בדיקת תקינות מקבלת תגובה תקינה במהלך ההשהיה הראשונית, זה מצביע על כך שתהליך ההפעלה הושלם והמכונה הווירטואלית מוכנה. הטיימר של ההשהיה הראשונית מתחיל כשהשדה currentAction של המכונה הווירטואלית משתנה ל-VERIFYING. הטיימר נעצר כשהזמן שנקבע מסתיים או כשבדיקת תקינות מצליחה. הערך של ההשהיה הראשונית צריך להיות בין 0 ל-3600 שניות. ערך ברירת המחדל הוא 0.
  • ZONE: האזור שבו נמצאת קבוצת ה-MIG. בשביל MIG אזורי, משתמשים בדגל --region.

REST

כדי להגדיר בדיקת תקינות בלי תיקון תוכנה אוטומטי (autohealing), כשמציינים את ההגדרה של בדיקת התקינות צריך גם להגדיר את השדה onFailedHealthCheck לערך DO_NOTHING, באופן הבא:

  • ב-MIG קיים, משתמשים בשיטה patch באופן הבא:

    לדוגמה, מבצעים את הקריאה הבאה ב-MIG אזורי קיים:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME
    {
      "autoHealingPolicies": [
        {
          "healthCheck": "HEALTH_CHECK_URL",
          "initialDelaySec": INITIAL_DELAY
        }
      ],
      "instanceLifecyclePolicy": {
        "onFailedHealthCheck": "DO_NOTHING"
      }
    }
    
  • כשיוצרים קבוצת MIG, משתמשים בשיטה insert באופן הבא:

    לדוגמה, מבצעים את הקריאה הבאה כשיוצרים קבוצת MIG אזורית:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    {
      "name": "MIG_NAME",
      "targetSize": SIZE,
      "instanceTemplate": "INSTANCE_TEMPLATE_URL",
      "autoHealingPolicies": [
        {
          "healthCheck": "HEALTH_CHECK_URL",
          "initialDelaySec": INITIAL_DELAY
        }
      ],
      "instanceLifecyclePolicy": {
        "onFailedHealthCheck": "DO_NOTHING"
      }
    }
    

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

  • PROJECT_ID: מזהה הפרויקט.
  • MIG_NAME: השם של קבוצת ה-MIG שרוצים להגדיר בה תיקון אוטומטי.
  • SIZE: מספר המכונות הווירטואליות בקבוצה.
  • INSTANCE_TEMPLATE_URL: כתובת ה-URL של תבנית של הגדרות מכונה שרוצים להשתמש בה כדי ליצור מכונות ב-MIG. כתובת ה-URL יכולה להכיל את המזהה או את השם של תבנית של הגדרות מכונה. מציינים אחד מהערכים הבאים:
    • לתבנית של הגדרות מכונה אזורית: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • לתבנית של הגדרות מכונה גלובלית: INSTANCE_TEMPLATE_ID
  • HEALTH_CHECK_URL: כתובת ה-URL החלקית של בדיקת תקינות שרוצים להגדיר לתיקון אוטומטי. לדוגמה:
    • בדיקת תקינות אזורית: projects/example-project/regions/us-central1/healthChecks/example-health-check.
    • בדיקת תקינות כללית: projects/example-project/global/healthChecks/example-health-check.
  • INITIAL_DELAY: מספר השניות שנדרשות למכונה וירטואלית חדשה כדי לבצע אתחול ולהריץ את סקריפט לטעינה בזמן ההפעלה שלה. במהלך תקופת ההשהיה הראשונית של מכונה וירטואלית, קבוצת ה-MIG מתעלמת מבדיקות תקינות לא מוצלחות כי יכול להיות שהמכונה הווירטואלית נמצאת בתהליך ההפעלה. כך נמנעת יצירה מחדש מוקדמת של מכונה וירטואלית על ידי קבוצת ה-MIG. אם בדיקת תקינות מקבלת תגובה תקינה במהלך ההשהיה הראשונית, זה מצביע על כך שתהליך ההפעלה הושלם והמכונה הווירטואלית מוכנה. הטיימר של ההשהיה הראשונית מתחיל כשהשדה currentAction של המכונה הווירטואלית משתנה ל-VERIFYING. הטיימר נעצר כשהזמן שנקבע מסתיים או כשבדיקת תקינות מצליחה. הערך של ההשהיה הראשונית צריך להיות בין 0 ל-3600 שניות. ערך ברירת המחדל הוא 0.
  • ZONE: האזור שבו נמצאת קבוצת ה-MIG. אם מדובר בקבוצת מופעים מנוהלת אזורית, צריך להשתמש ב-regions/REGION בכתובת ה-URL.

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

הסרת בדיקת תקינות

כדי להסיר בדיקת תקינות שהוגדרה במדיניות לתיקון אוטומטי:

המסוף

  1. נכנסים לדף Instance groups במסוף Cloud de Confiance .

    כניסה לדף Instance groups

  2. לוחצים על השם של ה-MIG שממנו רוצים להסיר את בדיקת תקינות.

  3. לוחצים על עריכה כדי לשנות את ה-MIG.

  4. לוחצים על Instance lifecycle and autohealing (מחזור החיים של מופע ותיקון אוטומטי) כדי להרחיב את הקטע.

  5. בקטע תיקון אוטומטי, באפשרות בדיקת תקינות, בוחרים באפשרות ללא בדיקת תקינות.

  6. לוחצים על שמירה כדי להחיל את השינויים.

gcloud

כדי להסיר את ההגדרה של בדיקת תקינות במדיניות לתיקון אוטומטי, משתמשים בדגל --clear-autohealing בפקודה update באופן הבא:

gcloud compute instance-groups managed update MIG_NAME \
    --clear-autohealing

מחליפים את MIG_NAME בשם של קבוצת MIG.

REST

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

לדוגמה, כדי להסיר בדיקת תקינות ב-MIG אזורי, שולחים את הבקשה הבאה:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
  "autoHealingPolicies": [
    {}
  ]
}

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

  • PROJECT_ID: מזהה הפרויקט.
  • MIG_NAME: השם של קבוצת ה-MIG שרוצים להגדיר בה תיקון אוטומטי.
  • ZONE: האזור שבו נמצאת קבוצת ה-MIG. בשביל MIG אזורי, משתמשים ב-regions/REGION.

צפייה במדיניות לתיקון אוטומטי בקבוצת מופעים מנוהלת (MIG)

כדי לראות את מדיניות התיקון האוטומטי של קבוצת MIG:

המסוף

  1. נכנסים לדף Instance groups במסוף Cloud de Confiance .

    כניסה לדף Instance groups

  2. לוחצים על שם ה-MIG שרוצים להציג את מדיניות התיקון האוטומטי שלו.

  3. עוברים לכרטיסייה פרטים.

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

gcloud

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

gcloud compute instance-groups managed describe MIG_NAME \
    --format="(autoHealingPolicies)"

מחליפים את MIG_NAME בשם של קבוצת MIG.

זו דוגמה לפלט:

autoHealingPolicies:
  healthCheck: https://www.googleapis.com/compute/v1/projects/example-project/global/healthChecks/example-health-check
  initialDelaySec: 300

REST

כדי לראות את מדיניות התיקון האוטומטי ב-MIG, משתמשים בשיטות REST באופן הבא:

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

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

בודקים אם יש אובייקט autoHealingPolicies[] בגוף התשובה.

זוהי דוגמה לתשובה:

{
  ...
  "autoHealingPolicies": [
    {
      "healthCheck": "https://www.googleapis.com/compute/v1/projects/example-project/global/healthChecks/example-health-check",
      "initialDelaySec": 300
    }
  ],
  ...
}

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

  • PROJECT_ID: מזהה הפרויקט.
  • MIG_NAME: השם של קבוצת ה-MIG שרוצים להגדיר בה תיקון אוטומטי.
  • ZONE: האזור שבו נמצאת קבוצת ה-MIG. בשביל MIG אזורי, משתמשים ב-regions/REGION.

בדיקת הסטטוס

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

בדיקה אם מכונות ה-VM תקינות

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

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

  • זיהוי מכונות וירטואליות לא תקינות שלא מתוקנות. יכול להיות שמכונה וירטואלית לא תתוקן באופן מיידי גם אם אובחנה כמכונה לא תקינה במצבים הבאים:
    • המכונה הווירטואלית עדיין נמצאת בתהליך אתחול, וההשהיה הראשונית שלה עדיין לא הסתיימה.
    • חלק משמעותי מהמופעים הלא תקינים עובר תיקון. קבוצת ה-MIG מעכבת את התיקון האוטומטי כדי להבטיח שהקבוצה תמשיך להפעיל קבוצת משנה של מופעים.
  • איתור שגיאות בהגדרת בדיקות התקינות. לדוגמה, תוכלו לזהות כללי חומת אש שהוגדרו בצורה שגויה או נקודת קצה לא חוקית לבדיקת תקינות של אפליקציה אם המופע מדווח על מצב תקינות של TIMEOUT.
  • כדי לקבוע את ערך ההשהיה הראשוני שצריך להגדיר, מודדים את משך הזמן שחולף מהרגע שבו המכונה הווירטואלית עוברת לRUNNING סטטוס ועד הרגע שבו היא עוברת למצב תקינות HEALTHY. כדי למדוד את הפער הזה, אפשר להפעיל את השיטה list-instances או לבדוק את הזמן שעובר בין הפעולה instances.insert לבין האות התקין הראשון שמתקבל.

אפשר להשתמש במסוף, בכלי שורת הפקודה gcloud או ב-REST כדי לראות את מצבי התקינות.

המסוף

  1. נכנסים לדף Instance groups במסוף Cloud de Confiance .

    כניסה לדף Instance groups.

  2. בעמודה שם ברשימה, לוחצים על השם של קבוצת ה-MIG שרוצים לבדוק. ייפתח דף עם המאפיינים של קבוצת המכונות ורשימה של מכונות וירטואליות שכלולות בקבוצה.

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

gcloud

משתמשים בפקודת המשנה list-instances.

gcloud compute instance-groups managed list-instances MIG_NAME
    --zone ZONE

הפלט של הפקודה אמור להיראות כך: HEALTH_STATE בשדה מוצג מצב התקינות של כל מכונה וירטואלית.

NAME: igm-with-hc-fvz6
ZONE: europe-west1-b
STATUS: RUNNING
HEALTH_STATE: HEALTHY
ACTION: NONE
INSTANCE_TEMPLATE: my-template
VERSION_NAME:
LAST_ERROR:

NAME: igm-with-hc-gtz3
ZONE: europe-west1-b
STATUS: RUNNING
HEALTH_STATE: HEALTHY
ACTION: NONE
INSTANCE_TEMPLATE: my-template
VERSION_NAME:
LAST_ERROR:

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

  • MIG_NAME: השם של ה-MIG.
  • ZONE: האזור שבו נמצאת קבוצת ה-MIG. בשביל MIG אזורי, משתמשים ב---region REGION.

REST

כדי ליצור קבוצת MIG אזורית, שולחים בקשת POST אל ה-method‏ listManagedInstances:

POST https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/MIG_NAME/listManagedInstances

כדי להשתמש ב-MIG אזורי, משתמשים בשיטה zonal MIG listManagedInstances:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/MIG_NAME/listManagedInstances

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

{
  "managedInstances": [
    {
      "instance": "https://www.googleapis.com/compute/v1/projects/sproject-id/zones/zone/instances/igm-with-hc-fvz6",
      "instanceStatus": "RUNNING",
      "currentAction": "NONE",
      "id": "6159431761228150698",
      "version": {
        "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/my-template"
      },
      "instanceHealth": [
        {
          "healthCheck": "https://www.googleapis.com/compute/v1/projects/project-id/global/healthChecks/example-check-01",
          "detailedHealthState": "HEALTHY"
        }
      ],
      "name": "igm-with-hc-fvz6"
    },
    {
      "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/igm-with-hc-gtz3",
      "instanceStatus": "RUNNING",
      "currentAction": "NONE",
      "id": "6622324799312181783",
      "version": {
        "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/my-template"
      },
      "instanceHealth": [
        {
          "healthCheck": "https://www.googleapis.com/compute/v1/projects/project-id/global/healthChecks/example-check-01",
          "detailedHealthState": "HEALTHY"
        }
      ],
      "name": "igm-with-hc-gtz3"
    }
  ]
}

מצבים בריאותיים

אלה הסטטוסים של תקינות המכונות הווירטואליות שזמינים:

  • HEALTHY: אפשר להגיע למכונה הווירטואלית, אפשר ליצור חיבור לנקודת הקצה של בדיקת תקינות האפליקציה, והתגובה עומדת בדרישות שהוגדרו בבדיקת התקינות.
  • DRAINING: המכונה הווירטואלית נמצאת בתהליך של ניקוי נתונים. החיבורים הקיימים למכונה הווירטואלית יסתיימו, אבל חיבורים חדשים יידחו.
  • UNHEALTHY: אפשר להגיע למכונה הווירטואלית, אבל היא לא עומדת בדרישות שהוגדרו בבדיקת התקינות.
  • TIMEOUT: אי אפשר להגיע למכונה הווירטואלית, אי אפשר ליצור חיבור לנקודת הקצה של בדיקת תקינות האפליקציה, או שהשרת במכונה הווירטואלית לא מגיב בתוך הזמן הקצוב שצוין. לדוגמה, יכול להיות שהסיבה לכך היא כללי חומת אש שהוגדרו בצורה שגויה או אפליקציית שרת שעמוסה מדי במכונה וירטואלית.
  • UNKNOWN: מערכת בדיקת תקינות לא מודעת למכונה הווירטואלית או שהתקינות שלה לא ידועה כרגע. יכולות לעבור 10 דקות עד שהמעקב יתחיל במכונות וירטואליות חדשות ב-MIG.

מכונות וירטואליות חדשות מחזירות מצב UNHEALTHY עד שהן מאומתות על ידי מערכת בדיקת התקינות.

התיקון של מכונה וירטואלית תלוי במצב התקינות שלה:

  • אם מצב התקינות של מכונת VM הוא UNHEALTHY או TIMEOUT, ותקופת האתחול שלה הסתיימה, קבוצת ה-MIG מנסה לתקן אותה באופן מיידי.
  • אם למכונה וירטואלית יש מצב תקינות של UNKNOWN, הקבוצה של ה-MIG לא מתקנת אותה באופן מיידי. הסיבה לכך היא למנוע תיקון מיותר של מכונה וירטואלית שאות בדיקת התקינות שלה לא זמין באופן זמני.

יכול להיות שיהיה עיכוב בניסיונות לתיקון אוטומטי אם:

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

נשמח לשמוע על תרחישי השימוש, האתגרים או המשוב שלכם לגבי ערכי מצב התקינות של מכונות וירטואליות. אפשר לשלוח משוב לצוות שלנו בכתובת mig-discuss@google.com.

בדיקת הפעולות הנוכחיות במכונות וירטואליות

כשקבוצת מופעי מכונה מנוהלים (MIG) נמצאת בתהליך של יצירת מכונה וירטואלית, היא מגדירה את השדה currentAction לקריאה בלבד של המכונה הזו לערך CREATING. אם מדיניות לתיקון אוטומטי מצורפת לקבוצה, אחרי שהמכונה הווירטואלית נוצרת ופועלת, קבוצת ה-MIG מגדירה את הפעולה הנוכחית של המופע ל-VERIFYING, ובודק תקינות המערכת מתחיל לבדוק את האפליקציה של המכונה הווירטואלית. אם האפליקציה עוברת את בדיקת התקינות הראשונית הזו בתוך הזמן שנדרש להפעלת האפליקציה, המכונה הווירטואלית מאומתת והקבוצה המנוהלת של המכונות הווירטואליות משנה את השדה currentAction של המכונה הווירטואלית לNONE.

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

בודקים אם ה-MIG יציב

ברמת הקבוצה, Compute Engine מאכלס שדה לקריאה בלבד בשם status שמכיל דגל isStable.

אם כל המכונות הווירטואליות בקבוצה פועלות ותקינות (כלומר, השדה currentAction של כל מופע מנוהל מוגדר לערך NONE), קבוצת ה-MIG מגדירה את השדה status.isStable לערך true. חשוב לזכור שהיציבות של קבוצת מופעי מכונה מנוהלים (MIG) תלויה בהגדרות הקבוצה מעבר למדיניות התיקון האוטומטי. לדוגמה, אם הקבוצה עוברת מידרוג אוטומטי, ואם היא עוברת הגדלה או הקטנה, אז קבוצת ה-MIG מגדירה את השדה status.isStable לערך false בגלל פעולת המידרוג האוטומטי.

כדי לבדוק את הערכים של השדה status.isStable של ה-MIG, אפשר לעיין במאמר בדיקה אם קבוצת מופעים מנוהלת יציבה.

צפייה בפעולות היסטוריות של תיקון אוטומטי

אפשר להשתמש ב-CLI של gcloud או ב-REST כדי לראות אירועים קודמים של תיקון אוטומטי.

gcloud

אפשר להשתמש בפקודה gcloud compute operations list עם מסנן כדי לראות רק את אירועי התיקון האוטומטי בפרויקט.

gcloud compute operations list --filter='operationType~compute.instances.repair.*'

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

gcloud compute operations describe repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5 --zone us-east1-b

REST

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

GET https://compute.googleapis.com/compute/v1/projects/project-id/region/region/operations?filter=operationType+%3D+%22compute.instances.repair.*%22

ל-MIG אזורי, משתמשים במשאב zoneOperations.

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/operations?filter=operationType+%3D+%22compute.instances.repair.*%22

כדי לקבל מידע נוסף על פעולת תיקון ספציפית, שולחים GET בקשה לגבי הפעולה הספציפית הזו. לדוגמה:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/operations/repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5

מה הופך בדיקת תקינות של תיקון אוטומטי לטובה

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

  • unhealthy-threshold. הערך צריך להיות גדול מ-1. מומלץ להגדיר את הערך הזה ל-3 או יותר. ההגדרה הזו מגנה מפני כשלים נדירים כמו אובדן מנות ברשת.
  • healthy-threshold. ערך של 2 מספיק לרוב האפליקציות.
  • timeout. מגדירים את ערך הזמן הזה לסכום גבוה (פי חמישה או יותר מזמן התגובה הצפוי). הערך של הזמן הקצוב לתפוגה חייב להיות קטן מהערך של check-interval או שווה לו. ההגדרה הזו מגנה מפני עיכובים לא צפויים, כמו מקרים שבהם יש עומס על המופעים או חיבור איטי לרשת.
  • check-interval. הערך הזה צריך להיות בין שנייה אחת לבין כפליים של הזמן הקצוב לתפוגה (לא ארוך מדי ולא קצר מדי). אם הערך ארוך מדי, המערכת לא מזהה מופע שנכשל מספיק מהר. אם הערך קצר מדי, העומס על המופעים ועל הרשת יכול להיות גבוה, כי בכל שנייה נשלחות הרבה בדיקות תקינות.

סיבות אפשריות לעיכובים בתיקון אוטומטי

כדי לשמור על היציבות של ה-MIG במהלך התיקון האוטומטי, מערכת Compute Engine מטילה את המגבלות הבאות. בגלל המגבלות האלה, יכול להיות שיהיו עיכובים בתיקון האוטומטי.

  • מספר תיקונים מקסימלי בו-זמנית: כשמופעים בקבוצת מופעי מכונה מנוהלים (MIG) נכשלים בבדיקות תקינות, קבוצת ה-MIG מתקנת באופן אוטומטי עד 30% מהמופעים שלא פועלים בכל זמן נתון. לדוגמה, אם ל-MIG יש 10 מופעים ו-4 מהם נכשלים בבדיקת תקינות, התיקון האוטומטי ינסה לתקן לכל היותר 2 מופעים (30% מ-4, מעוגל כלפי מעלה).

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

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