הדמיה של הפסקת חשמל באזור עבור MIG אזורי

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

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

  • כדי להשתמש בדוגמאות של שורת הפקודה במדריך הזה, צריך להתקין את Google Cloud CLI.
  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:

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

    gcloud

    1. התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init
  • הגדרת אזור ותחום כברירת מחדל
  • REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .

שימוש בסקריפט כדי לדמות הפסקת חשמל באזור

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

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

    #!/usr/bin/env bash
    
    # Copyright 2016 Google Inc. All Rights Reserved.
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    set -o nounset
    set -o errexit
    set -o pipefail
    
    function GetMetadata() {
      curl -s "$1" -H "Metadata-Flavor: Google"
    }
    
    PROJECT_METADATA_URL="http://metadata.google.internal/computeMetadata/v1/project/attributes"
    INSTANCE_METADATA_URL="http://metadata.google.internal/computeMetadata/v1/instance"
    ZONE=$(GetMetadata "$INSTANCE_METADATA_URL/zone" | cut -d '/' -f 4)
    INSTANCE_NAME=$(hostname)
    
    # We keep track of the state to make sure failure and recovery is triggered only once.
    STATE="healthy"
    while true; do
      if [[ "$ZONE" = "$(GetMetadata $PROJECT_METADATA_URL/failed_zone)" ]] && \
         [[ "$INSTANCE_NAME" = *"$(GetMetadata $PROJECT_METADATA_URL/failed_instance_names)"* ]]; then
        if [[ "$STATE" = "healthy" ]]; then
          STATE="failure"
          # Do something to simulate failure here.
          echo "STARTING A FAILURE"
          /etc/init.d/apache2 stop
        fi
      else
        if [[ "$STATE" = "failure" ]] ; then
          STATE="healthy"
          # Do something to recover here.
          echo "RECOVERING FROM FAILURE"
          /etc/init.d/apache2 start
        fi
      fi
      sleep 5
    done
    
    
  2. כדי לדמות כשל באזור, מגדירים את שני שדות המטא-נתונים של הפרויקט האלה:

    • failed_zone: הגדרת האזור שבו רוצים לדמות את ההשבתה (הגבלת הכשל לאזור אחד בלבד).
    • failed_instance_names: בחירת מכונות וירטואליות להוצאה ממצב אונליין לפי שם (כדי להגביל את הכשל רק לשמות של מכונות וירטואליות שמכילים את המחרוזת הזו).

    אפשר להגדיר את המטא-נתונים האלה באמצעות ה-CLI של gcloud. לדוגמה, הפקודה הבאה מגדירה את ההשבתה של האזור לאזור europe-west1-b ומשפיעה על מכונות וירטואליות שהשמות שלהן מתחילים ב-base-instance-name:

    gcloud compute project-info add-metadata --metadata failed_zone='europe-west1-b',failed_instance_names='base-instance-name-'
  3. אחרי שמסיימים את הסימולציה של ההשבתה, מסירים את מפתחות המטא-נתונים כדי לבצע שחזור מהכשל:

    gcloud compute project-info remove-metadata --keys failed_zone,failed_instance_names

ריכזנו כאן כמה רעיונות לתרחישי כשל שאפשר להריץ באמצעות הסקריפט הזה:

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

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