במאמר הזה מוסבר איך לראות את המיקום הפיזי, שנקרא גם טופולוגיה, של המכונות הווירטואליות של Compute Engine באזור מסוים. כדי לראות את הטופולוגיה של אשכול ב-Cluster Director, קראו את המאמר הצגת הטופולוגיה של אשכול.
אחרי שיוצרים מכונות או מכונות וירטואליות מסוג A5X, A4X Max, A4X, A4, A3 Ultra, A3 Mega ו-A3 High (8 GPUs) שמציינות מדיניות למיקום קומפקטי או מדיניות של עומס עבודה, אפשר לראות את המיקום הפיזי של המכונות ביחס זו לזו. כשאתם יודעים מה הקרבה של המכונות, אתם יכולים להתאים את האפליקציה או את עיצוב עומס העבודה כדי להריץ משימות שרגישות לזמן אחזור במכונות שהכי קרובות זו לזו. בכל שאר הסוגים של המכונות, אפשר לראות את המזהה של המארח שבו הן פועלות אחרי שחושפים את מזהה המארח.
לפני שמתחילים
- קוראים את המונחים שקשורים לטופולוגיה של מכונות Compute.
-
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API של Google Cloud , לא צריך להגדיר אימות.
gcloud
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לצפייה בטופולוגיה של מכונות, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד מוגדר מראש שכולל את ההרשאות שנדרשות כדי לצפות בטופולוגיה של מכונות Compute. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לראות את הטופולוגיה של המכונה, צריך את ההרשאות הבאות:
-
כדי לראות את הפרטים של מכונה:
compute.instances.getבפרויקט -
כדי לראות רשימה של מכונות:
compute.instances.listבפרויקט
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
הסבר על הטופולוגיה של מכונות וירטואליות
כדי להבין את המיקום הפיזי של מכונה באשכול, בודקים את השדה Physical host במסוף Google Cloud . אם אתם משתמשים ב-CLI של gcloud, ב-Compute Engine API או בשאילתת מפתח של מטא-נתונים, בדקו את השדה physicalHostTopology. השדות האלה מכילים את שדות המשנה הבאים:
cluster: השם הגלובלי של האשכול.
block: המזהה הספציפי לארגון של הבלוק השמור שבו נמצא המכונה.
sub-block: המזהה הספציפי לארגון של הבלוק המשני שבו נמצא המכונה.
host: המזהה הספציפי לארגון של המארח שבו פועל המכונה.
כדי להבין את הקרבה בין המכונות, משווים בין הערכים של השדות Physical host או physicalHostTopology בין המכונות. ככל שיש יותר שדות משנה משותפים למכונות, כך הן קרובות יותר זו לזו.
אפשר גם לראות את הטופולוגיה של ההזמנה שבה נוצרו המכונות. בשדות physicalHostTopology של ההזמנה ושל המכונה מוצגים אותם שדות block ו-cluster. לדוגמה, כשאתם צופים בבלוק שמור ספציפי, אתם יכולים לראות את השם ואת הבלוק המשני של כל המכונות שנפרסו בבלוק. איך רואים את הטופולוגיה של ההזמנה?
הצגת הטופולוגיה של המכונה
כדי לראות את המיקום הפיזי של כמה מכונות שפועלות בו-זמנית, צריך להשתמש ב-API בארכיטקטורת REST. אם לא, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
בעמודה Name, לוחצים על השם של המכונה שרוצים לראות את הפרטים שלה. מופיע דף עם פרטי המכונה, והכרטיסייה Details נבחרת.
בקטע 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: האזור שבו נמצאת המכונה.
הפלט אמור להיראות כך:
אם אתם יכולים לראות את המזהה של האשכול, הבלוק, תת-הבלוק והמארח של מכונה, הפלט אמור להיראות כך:
--- cluster: europe-west1-cluster-jfhb block: 3e3056e23cf91a5cb4a8621b6a52c100 subBlock: 0fc09525cbd5abd734342893ca1c083f host: 1215168a4ecdfb434fd4d28056589059אם אתם יכולים לראות רק את המזהה של המארח אחרי שחשפתם אותו, הפלט אמור להיראות כך:
--- cluster: null block: null subBlock: null host: 1215168a4ecdfb434fd4d28056589059
REST
כדי לראות את המיקום הפיזי של המכונות הפועלות, שולחים אחת מבקשות ה-GET הבאות. כששולחים בקשה, צריך לכלול את הפרמטר של השאילתה fields ולציין שיוצגו רק השדות name, machineType ו-physicalHostTopology של מכונה. צריך גם לכלול את הפרמטר של השאילתה filter ולציין שרוצים להציג רק מכונות Compute Engine שפועלות.
כדי לראות רשימה של המכונות בכל האזורים: השיטה
instances.aggregatedListGET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNINGכדי להציג רשימה של המכונות באזור ספציפי: ה-method
instances.listGET 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: האזור שבו נמצאות המכונות.
הפלט אמור להיראות כך:
אם אתם יכולים לראות את המזהה של האשכול, הבלוק, תת-הבלוק והמארח של המכונות, הפלט אמור להיראות כך:
{ "items": [ { "name": "vm-01", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "cluster": "europe-west1-cluster-jfhb", "block": "3e3056e23cf91a5cb4a8621b6a52c100", "subBlock": "0fc09525cbd5abd734342893ca1c083f", "host": "1215168a4ecdfb434fd4d28056589059" } } }, { "name": "vm-02", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "cluster": "europe-west1-cluster-jfhb", "block": "3e3056e23cf91a5cb4a8621b6a52c100", "subBlock": "1fc18636cbd4abd623553784ca2c174e", "host": "2326279b5ecdfc545fd5e39167698168" } } }, ... ] }אם אתם יכולים לראות רק את המזהה של המכונות של המארח אחרי שחשפתם אותו, הפלט אמור להיראות כך:
{ "items": [ { "name": "vm-01", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "cluster": null, "block": null, "subBlock": null, "host": "1215168a4ecdfb434fd4d28056589059" } } }, { "name": "vm-02", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "cluster": null, "block": null, "subBlock": null, "host": "2326279b5ecdfc545fd5e39167698168" } } }, ... ] }
כדי לצמצם את רשימת המכונות, עורכים את ביטוי הסינון בפרמטר השאילתה filter.
הצגת הטופולוגיה של מכונות באמצעות שאילתה של מפתח מטא-נתונים
כדי לראות את המיקום הפיזי של מכונה פועלת באמצעות שאילתה למפתח המטא-נתונים physical_host_topology, בוחרים באחת מהאפשרויות הבאות:
מכונות Linux
מתחברים למכונה של Linux.
במכונה של Linux, יוצרים שאילתה באמצעות הכלי
curl. כדי לשלוח שאילתה למפתח המטא-נתוניםphysical_host_topologyבמכונות Linux, מריצים את הפקודה הבאה:user@myinst:~$ curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topologyהפלט אמור להיראות כך:
אם אתם יכולים לראות את המזהה של האשכול, הבלוק, תת-הבלוק והמארח של מכונה, הפלט אמור להיראות כך:
{ "cluster": "europe-west1-cluster-jfhb", "block": "3e3056e23cf91a5cb4a8621b6a52c100", "subBlock": "0fc09525cbd5abd734342893ca1c083f", "host": "1215168a4ecdfb434fd4d28056589059" }אם אתם יכולים לראות את המזהה של המארח רק אחרי שאתם חושפים אותו, הפלט אמור להיראות כך:
{ "cluster": null, "block": null, "subBlock": null, "host": "1215168a4ecdfb434fd4d28056589059" }
מכונות Windows
מתחברים למכונה הווירטואלית ב-Google Compute Engine שמריצה Windows.
במכונה של Windows, יוצרים שאילתה באמצעות הפקודה
Invoke-RestMethod. כדי לשלוח שאילתה למפתח המטא-נתוניםphysical_host_topologyבמכונות של Windows, מריצים את הפקודה הבאה:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology") $valueהפלט אמור להיראות כך:
אם אתם יכולים לראות את המזהה של האשכול, הבלוק, תת-הבלוק והמארח של מכונה, הפלט אמור להיראות כך:
{ "cluster": "europe-west1-cluster-jfhb", "block": "3e3056e23cf91a5cb4a8621b6a52c100", "subBlock": "0fc09525cbd5abd734342893ca1c083f", "host": "1215168a4ecdfb434fd4d28056589059" }אם אתם יכולים לראות את המזהה של המארח רק אחרי שאתם חושפים אותו, הפלט אמור להיראות כך:
{ "cluster": null, "block": null, "subBlock": null, "host": "1215168a4ecdfb434fd4d28056589059" }
המאמרים הבאים
איך מנהלים אירועים כמארחים: