הצגת הטופולוגיה של מכונות ב-Compute Engine

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

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

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

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

מגבלות

אפשר לראות את הטופולוגיה רק של מופעי מחשוב שעומדים באחת או יותר מהדרישות הבאות:

הסבר על הטופולוגיה של מכונות Compute

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

  • Cluster (cluster): השם הגלובלי של האשכול שבו קיים מופע המחשוב. קלאסטר הוא קיבוץ לוגי ברמה גבוהה של כמה מארחים, שיכולים להתפרס על פני כמה בלוקים, שפועלים יחד כמאגר משותף של משאבים.

  • Block (block): המזהה הספציפי לארגון של הבלוק שבו קיים מופע המחשוב. בלוק הוא אוסף של כמה מארחים שמקובצים יחד. למופעי מחשוב באותה קבוצה יש זמן אחזור נמוך ברשת.

  • Sub-block (subBlock): המזהה הספציפי לארגון של ה-sub-block שבו קיים מופע המחשוב. תת-בלוק הוא חלוקה פיזית בתוך בלוק, שמאגדת מארחים במתחם פיזי אחד. מכונות וירטואליות של Compute באותו תת-בלוק נהנות מחביון רשת נמוך יותר מאשר מכונות וירטואליות של Compute באותו בלוק.

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

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

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

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

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

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud

    gcloud

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

      gcloud init

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

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

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

      התקינו את ה-CLI של Google Cloud.

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

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

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות לאימות הטופולוגיה של מכונות ה-Compute, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד Compute Viewer (‏roles/compute.viewer) בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

ההרשאות הנדרשות

כדי לאמת את הטופולוגיה של מכונות ה-Compute, נדרשות ההרשאות הבאות:

  • כדי לראות את הפרטים של מופע Compute: compute.instances.get בפרויקט
  • כדי לראות רשימה של מופעי מחשוב: compute.instances.list בפרויקט

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

אימות הטופולוגיה של מופע מחשוב

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

אימות הטופולוגיה של מכונת Compute באמצעות מסוף Google Cloud , ה-CLI של gcloud או REST

כדי לראות את הטופולוגיה של כמה מופעי מחשוב בו-זמנית, משתמשים ב-API בארכיטקטורת REST. אחרת, בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. בעמודה Name (שם), לוחצים על השם של מופע Compute שרוצים לראות את הפרטים שלו. מופיע דף עם פרטי המופע והכרטיסייה פרטים נבחרת.

  3. בקטע מידע בסיסי, בודקים את הערך בשדה מארח פיזי.

gcloud

כדי לראות את הטופולוגיה של מכונת Compute פעילה, משתמשים בפקודה gcloud compute instances describe עם הדגל --flatten=resourceStatus.physicalHostTopology:

gcloud compute instances describe INSTANCE_NAME \
    --flatten=resourceStatus.physicalHostTopology \
    --zone=ZONE

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

  • INSTANCE_NAME: השם של מכונת החישוב.

  • ZONE: האזור שבו קיימת מכונת ה-Compute.

הפלט אמור להיראות כך:

---
block: 3e3056e23cf91a5cb4a8621b6a52c100
cluster: europe-west1-cluster-jfhb
host: 1215168a4ecdfb434fd4d28056589059
subBlock: 0fc09525cbd5abd734342893ca1c083f

REST

כדי לראות את הטופולוגיה של מכונות ה-Compute הפעילות, שולחים אחת מהבקשות הבאות של GET. כששולחים בקשה, צריך לכלול את פרמטר השאילתה fields ולציין שיוצגו רק השדות name, machineType ו-physicalHostTopology של מופע מחשוב. צריך גם לכלול את הפרמטר filter של השאילתה ולציין שרוצים לראות רק את מופעי המחשוב הפעילים.

  • כדי לראות רשימה של המופעים בכל האזורים: instances.aggregatedList method

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
    
  • כדי לראות רשימה של המכונות שלכם באזור מסוים: שיטת instances.list

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
    

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

  • PROJECT_ID: מזהה הפרויקט שבו קיימים מופעי Compute.

  • ZONE: האזור שבו קיימות מכונות ה-Compute.

הפלט אמור להיראות כך: בדוגמה הבאה, מופעי Compute‏ vm-01 ו-vm-02 נמצאים באותו בלוק.

{
  "items": [
    {
      "name": "vm-01",
      "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
      "resourceStatus": {
        "physicalHostTopology": {
          "block": "3e3056e23cf91a5cb4a8621b6a52c100",
          "cluster": "europe-west1-cluster-jfhb",
          "host": "1215168a4ecdfb434fd4d28056589059",
          "subBlock": "0fc09525cbd5abd734342893ca1c083f"
        }
      }
    },
    {
      "name": "vm-02",
      "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
      "resourceStatus": {
        "physicalHostTopology": {
          "block": "3e3056e23cf91a5cb4a8621b6a52c100",
          "cluster": "europe-west1-cluster-jfhb",
          "host": "2326279b5ecdfc545fd5e39167698168",
          "subBlock": "1fc18636cbd4abd623553784ca2c174e"
        }
      }
    },
    ...
  ]
}

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

אימות הטופולוגיה של מופע מחשוב באמצעות שאילתת מפתח מטא-נתונים

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

מכונות Linux

  1. מתחברים למופע Linux.

  2. שולחים שאילתה למפתח המטא-נתונים physical_host_topology באמצעות curl:

    user@myinst:~$ curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology
    

    הפלט אמור להיראות כך:

    {
      "block": "3e3056e23cf91a5cb4a8621b6a52c100",
      "cluster": "europe-west1-cluster-jfhb",
      "host": "2326279b5ecdfc545fd5e39167698168",
      "subBlock": "1fc18636cbd4abd623553784ca2c174e"
    }
    

מכונות וירטואליות של Windows

  1. מתחברים למופע Windows.

  2. שולחים שאילתה למפתח המטא-נתונים physical_host_topology באמצעות הפקודה Invoke-RestMethod:

    PS C:\> 
    $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology")
    $value
    

    הפלט אמור להיראות כך:

    {
      "block": "3e3056e23cf91a5cb4a8621b6a52c100",
      "cluster": "europe-west1-cluster-jfhb",
      "host": "2326279b5ecdfc545fd5e39167698168",
      "subBlock": "1fc18636cbd4abd623553784ca2c174e"
    }
    

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