הצגת המיקום הפיזי של מכונה של Compute Engine

במאמר הזה מוסבר איך לראות את המיקום הפיזי של המכונות הפועלות של Compute Engine בארגון ב- Google Cloud .

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

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

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

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

מגבלות

אתם יכולים לראות את המזהה של האשכול, הבלוק, בלוק המשנה והמארח של מכונות שעומדות באחת או יותר מהדרישות הבאות:

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

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

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

ב-Compute Engine, שדות המשנה הבאים מופיעים בשדה physicalHostTopology של כל מכונה. ככל שיש יותר שדות משנה משותפים לשתי מכונות פעילות, כך הן קרובות יותר זו לזו.

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

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

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

  • ‫Host (host): המזהה הספציפי לארגון או לפרויקט של המארח שבו פועלת המכונה. מזהה המארח משתנה באופן הבא:

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

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

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

      • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי 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 .

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

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

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

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

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

      • כדי לראות את הפרטים של מכונה: compute.instances.get
      • כדי לראות רשימה של מכונות: compute.instances.list
      • כדי לחשוף את מזהה המארח כשיוצרים מכונה:
        • ‫compute.instances.create בפרויקט
        • כדי להשתמש באימג' בהתאמה אישית ליצירת המכונה הווירטואלית (VM)‏: compute.images.useReadOnly בקובץ אימג'
        • כדי להשתמש ב-snapshot ליצירת המכונה הווירטואלית: compute.snapshots.useReadOnly בקובץ snapshot
        • כדי להשתמש בתבנית של הגדרות מכונה ליצירת המכונה הווירטואלית: compute.instanceTemplates.useReadOnly בתבנית של הגדרות המכונה
        • כדי להקצות רשת מדור קודם למכונה הווירטואלית: ‫compute.networks.use בפרויקט
        • כדי לציין כתובת IP סטטית למכונה הווירטואלית: compute.addresses.use בפרויקט
        • כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת מדור קודם: compute.networks.useExternalIp בפרויקט
        • כדי לציין רשת משנה למכונה הווירטואלית: compute.subnetworks.use בפרויקט או ברשת המשנה שנבחרה
        • כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת VPC: compute.subnetworks.useExternalIp בפרויקט או ברשת המשנה שנבחרה
        • כדי להגדיר מטא-נתונים של המכונה הווירטואלית: compute.instances.setMetadata בפרויקט
        • כדי להגדיר תגים למכונה הווירטואלית: compute.instances.setTags במכונה הווירטואלית
        • כדי להגדיר תוויות למכונה הווירטואלית: compute.instances.setLabels במכונה הווירטואלית
        • כדי להגדיר חשבון שירות לשימוש של המכונה הווירטואלית: compute.instances.setServiceAccount במכונה הווירטואלית
        • כדי ליצור דיסק חדש למכונה הווירטואלית: ‫compute.disks.create בפרויקט
        • כדי לצרף דיסק קיים במצב קריאה-בלבד או במצב קריאה וכתיבה: compute.disks.use בדיסק
        • כדי לצרף דיסק קיים במצב קריאה-בלבד: compute.disks.useReadOnly בדיסק
      • כדי לחשוף את מזהה המארח כשיוצרים תבנית של הגדרות מכונה: compute.instanceTemplates.create
      • כדי לחשוף או להסתיר את מזהה המארח במכונה קיימת: compute.instances.update

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

      הצגה או הסתרה של מזהה המארח

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

      כדי לחשוף או להסתיר את מזהה המארח במכונה, משתמשים באחת מהשיטות הבאות:

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

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

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

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

      • אם המכונה משתמשת בסוג מכונה H4D או בסוג מכונה A3 High עם 8 יחידות GPU (או דורות מאוחרים יותר), אז Compute Engine מתעלם מהבקשה.

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

      gcloud

      כדי לחשוף או להסתיר את מזהה המארח של מכונה קיימת, משתמשים בפקודה gcloud compute instances update עם אחד מהדגלים הבאים:

      • כדי לחשוף את מזהה המארח, צריך לכלול את הדגל --expose-host-topology:

        gcloud compute instances update INSTANCE_NAME \
            --expose-host-topology \
            --zone=ZONE
        
      • כדי להסתיר את מזהה המארח, מוסיפים את הדגל --no-expose-host-topology:

        gcloud compute instances update INSTANCE_NAME \
            --no-expose-host-topology \
            --zone=ZONE
        

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

      • ‫INSTANCE_NAME: השם של המכונה.

      • ‫ZONE: האזור שבו נמצאת המכונה.

      REST

      1. כדי לראות את המאפיינים של מכונה קיימת, שולחים בקשת GET אל ה-method‏ instances.get:

        GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
        

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

        • ‫PROJECT_ID: מזהה הפרויקט שבו יצרתם את המכונה.

        • ‫ZONE: האזור שבו נמצאת המכונה.

        • ‫INSTANCE_NAME: השם של המכונה.

      2. כדי לעדכן מכונה כך שמזהה המארח יוצג או יוסתר, שולחים בקשת PUT אל ה-method‏ instances.update. בגוף הבקשה, משתמשים בפלט של הבקשה GET מהשלב הקודם. עם זאת, בשדה scheduling צריך להוסיף את השדה exposeHostTopology כדי לחשוף או להסתיר את מזהה המארח. אם השדה scheduling לא קיים בפלט של הבקשה, צריך להוסיף גם אותו.

        בקשת ה-PUT דומה לבקשה הבאה:

        PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=REFRESH
        
        {
          "scheduling": {
            "exposeHostTopology": EXPOSE_HOST_ID
          },
          ...
        }
        

        מחליפים את EXPOSE_HOST_ID באחד מהערכים הבאים:

        • כדי לחשוף את מזהה המארח: true

        • כדי להסתיר את מזהה המארח: false

      חשיפת מזהה המארח במכונה חדשה

      כדי לחשוף את מזהה המארח כשיוצרים מכונה, בוחרים באחת מהאפשרויות הבאות:

      gcloud

      כדי לחשוף את מזהה המארח כשיוצרים מכונה, משתמשים בפקודה gcloud compute instances create עם הדגל --expose-host-topology:

      gcloud compute instances create INSTANCE_NAME \
          --machine-type=MACHINE_TYPE \
          --expose-host-topology \
          --zone=ZONE
      

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

      • ‫INSTANCE_NAME: השם של המכונה.

      • ‫MACHINE_TYPE: סוג המכונה שרוצים להשתמש בה כמכונה.

      • ‫ZONE: האזור שבו רוצים ליצור את המכונה.

      REST

      כדי לחשוף את מזהה המארח כשיוצרים מכונה, שולחים בקשת POST אל ה-method‏ instances.insert. בגוף הבקשה, כוללים את השדה scheduling.exposeHostTopology וקובעים את הערך true.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
      
      {
        "name": "INSTANCE_NAME",
        "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
        "disks": [
          {
            "boot": true,
            "initializeParams": {
              "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
            }
          }
        ],
        "networkInterfaces": [
          {
            "network": "global/networks/default"
          }
        ],
        "scheduling": {
          "exposeHostTopology": true
        }
      }
      

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

      • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המכונה.

      • ‫ZONE: האזור שבו רוצים ליצור את המכונה.

      • ‫INSTANCE_NAME: השם של המכונה.

      • ‫MACHINE_TYPE: סוג המכונה שרוצים להשתמש בה כמכונה.

      • ‫IMAGE_PROJECT: פרויקט התמונה שמכיל את התמונה, לדוגמה debian-cloud. למידע נוסף על פרויקטים של קובצי אימג' נתמכים, ראו קובצי אימג' של מערכת ההפעלה ציבוריים.

      • ‫IMAGE: מציינים אחת מהאפשרויות הבאות:

        • גרסה ספציפית של קובץ האימג' של מערכת ההפעלה, לדוגמה debian-12-bookworm-v20240617.

        • משפחת תמונות, בפורמט family/IMAGE_FAMILY. כך מציינים את קובץ אימג' של מערכת ההפעלה העדכני ביותר, שלא הוצא משימוש. לדוגמה, אם מציינים את family/debian-12, המערכת משתמשת בגרסה העדכנית במשפחת קובצי האימג' של Debian 12. למידע נוסף על השימוש במשפחות של קובצי אימג', קראו את המאמר שיטות מומלצות למשפחות של קובצי אימג'.

      חשיפת מזהה המארח במכונות חדשות בכמות גדולה

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

      gcloud

      כדי לחשוף את מזהה המארח כשיוצרים כמות גדולה של מכונות, מריצים את הפקודה gcloud compute instances bulk create עם הדגל --expose-host-topology.

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

      gcloud compute instances bulk create \
          --count=COUNT \
          --machine-type=MACHINE_TYPE \
          --name-pattern="NAME_PATTERN" \
          --expose-host-topology \
          --zone=ZONE
      

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

      • ‫COUNT: מספר המכונות שרוצים ליצור.

      • ‫MACHINE_TYPE: סוג המכונה שרוצים להשתמש בה במכונות ה-Compute.

      • ‫NAME_PATTERN: תבנית השם של המכונות. כדי להחליף רצף של מספרים בשם של מכונה, משתמשים ברצף של תווי סולמית (#). לדוגמה, אם משתמשים ב-instance-# בתבנית השם, נוצרות מכונות עם שמות שמתחילים ב-instance-1, instance-2 וכן הלאה, עד למספר המכונות שצוין ב-COUNT.

      • ‫ZONE: האזור שבו רוצים ליצור מכונות בכמות גדולה.

      REST

      כדי לחשוף את מזהה המארח כשיוצרים כמות גדולה של מכונות, שולחים בקשת POST אל ה-method‏ instances.bulkInsert. בגוף הבקשה, כוללים את השדה instanceProperties.scheduling.exposeHostTopology ומוגדר ל-true.

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

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
      
      {
        "count": "COUNT",
        "namePattern": "NAME_PATTERN",
        "instanceProperties": {
          "machineType": "MACHINE_TYPE",
          "disks": [
            {
              "boot": true,
              "initializeParams": {
                "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
              }
            }
          ],
          "networkInterfaces": [
            {
              "network": "global/networks/default"
            }
          ],
          "scheduling": {
            "exposeHostTopology": true
          }
        }
      }
      

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

      • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המכונות.

      • ‫ZONE: האזור שבו רוצים ליצור את המכונות.

      • ‫COUNT: מספר המכונות שרוצים ליצור.

      • ‫NAME_PATTERN: תבנית השם של המכונות. כדי להחליף רצף של מספרים בשם של מכונה, משתמשים ברצף של תווי סולמית (#). לדוגמה, אם משתמשים ב-instance-# בתבנית השם, נוצרות מכונות עם שמות שמתחילים ב-instance-1, instance-2 וכן הלאה, עד למספר המכונות שצוין ב-COUNT.

      • ‫MACHINE_TYPE: סוג המכונה שרוצים להשתמש בה במכונות ה-Compute.

      • ‫IMAGE_PROJECT: פרויקט התמונה שמכיל את התמונה, לדוגמה debian-cloud. למידע נוסף על פרויקטים של קובצי אימג' נתמכים, ראו קובצי אימג' של מערכת ההפעלה ציבוריים.

      • ‫IMAGE: מציינים אחת מהאפשרויות הבאות:

        • גרסה ספציפית של קובץ האימג' של מערכת ההפעלה, לדוגמה debian-12-bookworm-v20240617.

        • משפחת תמונות, בפורמט family/IMAGE_FAMILY. כך מציינים את קובץ אימג' של מערכת ההפעלה העדכני ביותר, שלא הוצא משימוש. לדוגמה, אם מציינים את family/debian-12, המערכת משתמשת בגרסה העדכנית במשפחת קובצי האימג' של Debian 12. למידע נוסף על השימוש במשפחות של קובצי אימג', קראו את המאמר שיטות מומלצות למשפחות של קובצי אימג'.

      חשיפת מזהה המארח בתבנית חדשה של הגדרות מכונה

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

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

      gcloud

      כדי לחשוף את מזהה המארח כשיוצרים תבנית של הגדרות מכונה, משתמשים בפקודה gcloud compute instance-templates create עם הדגל --expose-host-topology.

      לדוגמה, כדי ליצור תבנית של הגדרות מכונה אזורית, משתמשים בפקודה הבאה: כדי ליצור תבנית גלובלית של הגדרות מכונה, משתמשים באותה פקודה בלי הדגל --instance-template-region.

      gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
          --expose-host-topology \
          --instance-template-region=REGION \
          --machine-type=MACHINE_TYPE
      

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

      • ‫INSTANCE_TEMPLATE_NAME: השם של התבנית של הגדרות המכונה.

      • ‫REGION: האזור שבו יוצרים את התבנית של הגדרות המכונה.

      • ‫MACHINE_TYPE: סוג המכונה שרוצים להשתמש בה במכונות ה-Compute.

      REST

      כדי לחשוף את מזהה המארח בזמן שיוצרים תבנית של הגדרות מכונה, שולחים בקשת POST לאחת מהשיטות הבאות. בגוף הבקשה, כוללים את השדה properties.scheduling.exposeHostTopology ומוגדר ל-true.

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

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates
      
      {
        "name": "INSTANCE_TEMPLATE_NAME",
        "properties": {
          "disks": [
            {
              "boot": true,
              "initializeParams": {
                "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
              }
            }
          ],
          "machineType": "MACHINE_TYPE",
          "networkInterfaces": [
            {
              "network": "global/networks/default"
            }
          ],
          "scheduling": {
            "exposeHostTopology": true
          }
        }
      }
      

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

      • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את התבנית של הגדרות המכונה.

      • ‫REGION: האזור שבו רוצים ליצור את התבנית של הגדרות המכונה.

      • ‫INSTANCE_TEMPLATE_NAME: השם של התבנית של הגדרות המכונה.

      • ‫IMAGE_PROJECT: פרויקט התמונה שמכיל את התמונה, לדוגמה debian-cloud. מידע נוסף על פרויקטים של קובצי אימג' נתמכים זמין במאמר קובצי אימג' ציבוריים של מערכת ההפעלה.

      • ‫IMAGE: מציינים אחת מהאפשרויות הבאות:

        • גרסה ספציפית של קובץ האימג' של מערכת ההפעלה, לדוגמה debian-12-bookworm-v20240617.

        • משפחת תמונות, בפורמט family/IMAGE_FAMILY. כך מציינים את קובץ אימג' של מערכת ההפעלה העדכני ביותר, שלא הוצא משימוש. לדוגמה, אם מציינים את family/debian-12, המערכת משתמשת בגרסה העדכנית במשפחת קובצי האימג' של Debian 12. למידע נוסף על השימוש במשפחות של קובצי אימג', קראו את המאמר שיטות מומלצות למשפחות של קובצי אימג'.

      • ‫MACHINE_TYPE: סוג המכונה שרוצים להשתמש בה במכונות ה-Compute.

      אימות המיקום הפיזי של המכונה

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

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

      אימות המיקום הפיזי באמצעות מסוף Google Cloud , ה-CLI של gcloud או REST

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

      המסוף

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

        כניסה לדף VM instances

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

      3. בקטע Basic information, בודקים את הערך בשדה Physical host.

      gcloud

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

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

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

      • ‫INSTANCE_NAME: שם המכונה.

      • ‫ZONE: האזור שבו נמצאת המכונה.

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

      • אם אתם יכולים לראות את המזהה של האשכול, הבלוק, תת-הבלוק והמארח של מכונה, הפלט אמור להיראות כך:

        ---
        block: 3e3056e23cf91a5cb4a8621b6a52c100
        cluster: europe-west1-cluster-jfhb
        host: 1215168a4ecdfb434fd4d28056589059
        subBlock: 0fc09525cbd5abd734342893ca1c083f
        
      • אם אתם יכולים לראות רק את המזהה של המארח אחרי שחשפתם אותו, הפלט אמור להיראות כך:

        ---
        block: null
        cluster: null
        host: 1215168a4ecdfb434fd4d28056589059
        subBlock: null
        

      REST

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

      • כדי לראות רשימה של המכונות בכל האזורים: השיטה instances.aggregatedList

        GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
        
      • כדי להציג רשימה של המכונות באזור ספציפי: ה-method‏ 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: מזהה הפרויקט שבו נמצאות המכונות.

      • ‫ZONE: האזור שבו נמצאות המכונות.

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

      • אם אתם יכולים לראות את המזהה של האשכול, הבלוק, תת-הבלוק והמארח של מכונה, הפלט אמור להיראות כך: בדוגמה הבאה, המכונות 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"
                }
              }
            },
            ...
          ]
        }
        
      • אם אתם יכולים לראות רק את המזהה של המארח אחרי שחשפתם אותו, הפלט אמור להיראות כך:

        {
          "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": null,
                  "cluster": null,
                  "host": "1215168a4ecdfb434fd4d28056589059",
                  "subBlock": null
                }
              }
            },
            {
              "name": "vm-02",
              "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
              "resourceStatus": {
                "physicalHostTopology": {
                  "block": null,
                  "cluster": null,
                  "host": "2326279b5ecdfc545fd5e39167698168",
                  "subBlock": null
                }
              }
            },
            ...
          ]
        }
        

      כדי לצמצם את רשימת המכונות, עורכים את ביטוי הסינון בפרמטר השאילתה 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"
          }
          
        • אם אתם יכולים לראות את המזהה של המארח רק אחרי שאתם חושפים אותו, הפלט אמור להיראות כך:

          {
            "block": null,
            "cluster": null,
            "host": "2326279b5ecdfc545fd5e39167698168",
            "subBlock": null
          }
          

      מכונות 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"
          }
          
        • אם אתם יכולים לראות את המזהה של המארח רק אחרי שאתם חושפים אותו, הפלט אמור להיראות כך:

          {
            "block": null,
            "cluster": null,
            "host": "2326279b5ecdfc545fd5e39167698168",
            "subBlock": null
          }
          

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