יצירה בכמות גדולה של מכונות שמותאמות ל-HPC באמצעות H4D

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

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

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

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

  • בוחרים אפשרות צריכה: כדי ליצור מכונות וירטואליות בכמות גדולה ולהפעיל יכולות משופרות של ניהול אשכולות, אפשר לבחור באפשרות Future Reservation (הזמנה עתידית) במצב Calendar (יומן) או באפשרות Spot VMs (מכונות וירטואליות מסוג Spot).

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

  • קבלת קיבולת: התהליך לקבלת קיבולת שונה בכל אפשרות צריכה.

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

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

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

    המסוף

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

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

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

סקירה כללית

כדי ליצור מכונות HPC בכמות גדולה עם סוג המכונה H4D:

  1. אופציונלי: יצירת רשתות של ענן וירטואלי פרטי (VPC).
  2. אופציונלי: יוצרים מדיניות מיקום אם לא יוצרים את המכונות הווירטואליות של Compute באותו בלוק או תת-בלוק.
  3. יצירת מכונות H4D בכמות גדולה.

אופציונלי: יצירת רשתות של ענן וירטואלי פרטי (VPC)

כשיוצרים מכונת Compute Engine, אפשר לציין רשת VPC ותת-רשת. אם לא מציינים את ההגדרה הזו, המערכת משתמשת ברשת ובתת-הרשת שמוגדרות כברירת מחדל.

  • אם רוצים להגדיר את מופעי H4D ב-MIG לשימוש ב-Cloud RDMA, צריך לבצע את השלבים שבקטע הזה.
  • אם אתם לא רוצים להשתמש ב-Cloud RDMA, אתם יכולים לדלג על הקטע הזה ולהשתמש ברשת ברירת המחדל.

כדי להשתמש ב-Cloud RDMA עם מופעי H4D, צריך להגדיר לפחות שתי רשתות, אחת לכל סוג של ממשק רשת (NIC):

  • סוג כרטיס הרשת GVNIC: משתמש במנהל ההתקן gve לתעבורת TCP/IP ואינטרנט לתקשורת רגילה בין מכונות וירטואליות ובין מכונות וירטואליות לאינטרנט.
  • סוג כרטיס הרשת IRDMA: משתמש במנהלי התקנים של IDPF/iRDMA לרשת Cloud RDMA בין מופעים.

למכונות שמשתמשות ב-Cloud RDMA יכול להיות רק ממשק IRDMA אחד. אפשר להוסיף עד שמונה ממשקי רשת נוספים GVNIC, כך שבסך הכול יהיו עד 10 ממשקי רשת וירטואליים (vNIC) לכל מכונה.

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

מדריכים להוראה

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

Script

אפשר ליצור עד תשעה ממשקי רשת gVNIC וממשק רשת IRDMA אחד לכל מכונה. כל ממשק רשת חייב להיות מחובר לרשת נפרדת. כדי ליצור את הרשתות, אפשר להשתמש בסקריפט הבא, שיוצר שתי רשתות ל-gVNIC ורשת אחת ל-IRDMA.

  1. אופציונלי: לפני שמריצים את הסקריפט, מציגים את פרופילי הרשת של Falcon VPC כדי לוודא שיש פרופיל זמין.
      gcloud compute network-profiles list
      
  2. מעתיקים את הקוד הבא ומפעילים פתרונות חכמים אותו בחלון מעטפת של Linux.

      #!/bin/bash
      # Set the number of GVNIC interfaces to create. You can create up to 9.
      NUM_GVNIC=NUMBER_OF_GVNIC
    
      # Create regular VPC networks and subnets for the GVNIC interfaces
        for N in $(seq 0 $(($NUM_GVNIC - 1))); do
          gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \
              --subnet-mode=custom
    
          gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \
              --network=GVNIC_NAME_PREFIX-net-$N \
              --region=REGION \
              --range=10.$N.0.0/16
    
          gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \
              --network=GVNIC_NAME_PREFIX-net-$N \
              --action=ALLOW \
              --rules=tcp:0-65535,udp:0-65535,icmp \
              --source-ranges=10.0.0.0/8
      done
    
      # Create SSH firewall rules
      gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=tcp:22 \
          --source-ranges=IP_RANGE
    
      # Optional: Create a firewall rule for the external IP address for the
      #  first GVNIC network interface
      gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=icmp \
          --source-ranges=IP_RANGE
    
      # Create a Falcon VPC network for the Cloud RDMA network interface
      gcloud compute networks create RDMA_NAME_PREFIX-irdma \
          --network-profile=ZONE-vpc-falcon \
          --subnet-mode custom
    
      # Create a subnet in the Falcon VPC network
      gcloud compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \
          --network=RDMA_NAME_PREFIX-irdma \
          --region=REGION \
          --range=10.2.0.0/16  # offset to avoid overlap with GVNIC subnet ranges
      

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

    • ‫NUMBER_OF_GVNIC: מספר ממשקי GVNIC שרוצים ליצור. צריך לציין מספר בין 1 ל-9.
    • ‫GVNIC_NAME_PREFIX: תחילית השם לשימוש ברשת VPC רגילה וברשת משנה שמשתמשת בסוג כרטיס רשת GVNIC.
    • ‫REGION: האזור שבו רוצים ליצור את הרשתות. הערך הזה צריך להתאים לאזור שצוין בדגל --network-profile כשיוצרים את רשת ה-VPC של Falcon. לדוגמה, אם מציינים את האזור כ-europe-west4-b, האזור הוא europe-west4.
    • ‫IP_RANGE: טווח כתובות ה-IP מחוץ לרשת ה-VPC שמשמשות לכללי חומת האש של SSH. השיטה המומלצת היא לציין את טווחי כתובות ה-IP הספציפיים שמהם אתם רוצים לאפשר גישה, ולא את כל המקורות של IPv4 או IPv6. אל תשתמשו ב-0.0.0.0/0 או ב-::/0 כטווח מקור, כי זה מאפשר תנועה מכל מקורות IPv4 או IPv6, כולל מקורות מחוץ ל- Google Cloud.
    • ‫RDMA_NAME_PREFIX: תחילית השם שתשמש לרשת ה-VPC ולתת-הרשת שמשתמשות בסוג כרטיס ה-NIC של IRDMA.
    • ‫ZONE: האזור שבו רוצים ליצור את הרשתות ואת המכונות של Compute Engine. אפשר להשתמש ב-us-central1-a או ב-europe-west4-b.
  3. אופציונלי: כדי לוודא שמשאבי רשת ה-VPC נוצרו בהצלחה, בודקים את הגדרות הרשת במסוף Google Cloud :

    1. נכנסים לדף VPC networks במסוף Google Cloud .

      מעבר לרשתות VPC

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

אופציונלי: יצירת מדיניות מיקום מודעה

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

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

gcloud

כדי ליצור מדיניות למיקום קומפקטי, משתמשים בפקודה gcloud compute resource-policies create group-placement:

gcloud compute resource-policies create group-placement POLICY_NAME \
    --collocation=collocated \
    --max-distance=MAX_DISTANCE \
    --region=REGION

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

  • ‫POLICY_NAME: השם של מדיניות המיקום הקומפקטי.
  • ‫MAX_DISTANCE: הגדרת המרחק המקסימלי למכונות הווירטואליות. אפשר לציין את המרחק (תצוגה מקדימה, מומלץ) או לא לציין אותו (להסיר את הדגל --max-distance). בהתאם למה שסוג המכונה תומך בו, אפשר לציין אחד מהערכים הבאים:
    • כדי למקם מכונות וירטואליות באותו תת-בלוק: 1
    • כדי למקם מכונות וירטואליות באותו בלוק: 2
    • כדי למקם מכונות וירטואליות בבלוקים סמוכים: 3
    מוודאים שההגדרה של המרחק המקסימלי תומכת בסדרת המכונות ובמספר המכונות הווירטואליות שאתם מתכננים ליצור. מידע נוסף זמין במאמר מידע על מדיניות מיקום קומפקטית במסמכי העזרה של Compute Engine.
  • ‫REGION: האזור שבו רוצים ליצור את מדיניות המיקום הקומפקטי. מציינים את האזור שמכיל את התחום שבו מתכננים ליצור מכונות, ומוודאים שסוג המכונה שרוצים להשתמש בו זמין באזור הזה. מידע נוסף על אזורים זמין במאמר אזורים זמינים.

REST

כדי ליצור מדיניות למיקום קומפקטי, שולחים בקשת POST אל ה-method‏ resourcePolicies.insert. בגוף הבקשה, כוללים את השדה collocation שמוגדר ל-COLLOCATED ואת השדה maxDistance.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
  {
    "name": "POLICY_NAME",
    "groupPlacementPolicy": {
      "collocation": "COLLOCATED",
      "maxDistance": MAX_DISTANCE
    }
  }

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

  • PROJECT_ID: מזהה הפרויקט.
  • ‫POLICY_NAME: השם של המדיניות למיקום קומפקטי.
  • ‫MAX_DISTANCE: הגדרת המרחק המקסימלי למכונות ה-VM. אפשר לציין את המרחק (תצוגה מקדימה, מומלץ) או לא לציין אותו (להסיר את השדה maxDistance). בהתאם למה שסוג המכונה תומך בו, אפשר לציין אחד מהערכים הבאים:
    • כדי למקם מכונות וירטואליות באותו תת-בלוק: 1
    • כדי למקם מכונות וירטואליות באותו בלוק: 2
    • כדי למקם מכונות וירטואליות בבלוקים סמוכים: 3
    מוודאים שההגדרה של המרחק המקסימלי תומכת בסדרת המכונות ובמספר המכונות הווירטואליות שאתם מתכננים ליצור. מידע נוסף זמין במאמר מידע על מדיניות מיקום קומפקטית במסמכי העזרה של Compute Engine.
  • ‫REGION: האזור שבו רוצים ליצור את מדיניות המיקום הקומפקטי. מציינים את האזור שמכיל את התחום שבו מתכננים ליצור מכונות, ומוודאים שסוג המכונה שרוצים להשתמש בו זמין באזור הזה. מידע על אזורים זמין במאמר אזורים ואזורים זמינים.

יצירת מכונות וירטואליות בכמות גדולה

בקטע הזה מוסבר איך ליצור מכונות וירטואליות מסוג H4D בכמות גדולה.

לפני שיוצרים מופעי H4D עם Cloud RDMA, חשוב לעיין במגבלות הבאות:

  • אי אפשר להשתמש במיגרציה פעילה במהלך אירועי תחזוקה של מארחים עם מכונות שיש להן ממשק רשת Cloud RDMA. צריך להגדיר את המופע כך שהוא יופסק במהלך אירועי תחזוקה.
  • לממשק הרשת gVNIC יכולה להיות רק כתובת IPv6 אחת, פנימית או חיצונית, אבל לא שתיהן.
  • אפשר להשתמש רק בכתובות IPv4 עם ממשקי רשת IRDMA ועם רשתות Falcon VPC.

gcloud

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

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

נדרשת הזמנה

מתחילים עם gcloud compute instances create הפקודה הבאה.

   gcloud compute instances bulk create \
       --name-pattern=NAME_PATTERN \
       --count=COUNT \
       --machine-type=MACHINE_TYPE \
       --image-family=IMAGE_FAMILY \
       --image=project= IMAGE_PROJECT \
       --instance-termination=action=DELETE \
       --maintenance-policy=TERMINATE \
       --region=REGION \
       --boot-disk-type=hyperdisk-balanced \
       --boot-disk-size=DISK_SIZE
   

כך עושים את זה:

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

    • ‫NAME_PATTERN: תבנית השם של המכונות. לדוגמה, שימוש ב-vm-# בתבנית השם יוצר מופעים עם שמות כמו vm-1 ו-vm-2, עד למספר שצוין באמצעות הדגל --count.
    • ‫COUNT: מספר המופעים שרוצים ליצור.
    • ‫MACHINE_TYPE: סוג המכונה שבה רוצים להשתמש עבור המופעים. משתמשים באחד מסוגי המכונות של H4D, לדוגמה h4d-highmem-192-lssd.
    • ‫IMAGE_FAMILY: משפחת התמונות של תמונת מערכת ההפעלה שרוצים להשתמש בה, לדוגמה rocky-linux-9-optimized-gcp.

      רשימת תמונות מערכת ההפעלה הנתמכות מופיעה במאמר בנושא מערכת הפעלה נתמכת. בוחרים גרסה של קובץ אימג' של מערכת ההפעלה שתומכת בממשק IRDMA.

    • ‫IMAGE_PROJECT: מזהה הפרויקט של תמונת מערכת ההפעלה, לדוגמה, rocky-linux-cloud.
    • ‫REGION: מציינים אזור שבו סוג המכונה שרוצים להשתמש בו זמין, לדוגמה europe-west4. מידע על אזורים זמינים מופיע במאמר אזורים ואזורי זמינות זמינים.
    • ‫DISK_SIZE: אופציונלי: גודל דיסק האתחול ב-GiB. הערך חייב להיות מספר שלם.
  2. אופציונלי: אם בחרתם להשתמש במדיניות למיקום קומפקטי, הוסיפו את הדגל --resource-policies:

             --resource-policies=POLICY_NAME
             

    מחליפים את POLICY_NAME בשם של מדיניות מיקום המודעות הקומפקטית.

  3. כדי לציין את ההזמנה, מבצעים אחת מהפעולות הבאות:

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

                 --provisioning-model=RESERVATION_BOUND \
                 --reservation-affinity=specific \
                 --reservation=RESERVATION_NAME \
                 

      מחליפים את RESERVATION_NAME בשם של ההזמנה, לדוגמה h4d-highmem-exfr-prod.

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

                 --provisioning-model=RESERVATION_BOUND \
                 --reservation-affinity=specific \
                 --reservation=<RESERVATION_BLOCK_NAME \
                 

      מחליפים את RESERVATION_BLOCK_NAME בשם של בלוק בהזמנה, לדוגמה h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1.

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

  4. אופציונלי: כדי להגדיר את המופעים לשימוש ב-Cloud RDMA, מוסיפים לפקודה דגלים דומים לאלה שבהמשך. בדוגמה הזו מגדירים שני ממשקי רשת של GVNIC וממשק רשת אחד של IRDMA:

            --network-interface=nic-type=GVNIC, \
                network=GVNIC_NAME_PREFIX-net-0, \
                subnet=GVNIC_NAME_PREFIX-sub-0, \
                stack-type=STACK_TYPE, \
                address=EXTERNAL_IPV4_ADDRESS \
            --network-interface=nic-type=GVNIC, \
                network=GVNIC_NAME_PREFIX-net-1, \
                subnet=GVNIC_NAME_PREFIX-sub-1, no-address \
            --network-interface=nic-type=IRDMA, \
                network=RDMA_NAME_PREFIX-irdma, \
                subnet=RDMA_NAME_PREFIX-irdma-sub, \
                stack-type=IPV4_ONLY, no-address \
            

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

    • ‫GVNIC_NAME_PREFIX: התוספת לשם שבה השתמשתם כשייצרתם את רשת ה-VPC ואת תת-הרשת לממשק gVNIC.

      בממשק הרשת הראשון של GVNIC, אפשר להשמיט את הדגלים network ו-subnet כדי להשתמש ברשת default במקום זאת.

    • ‫STACK_TYPE: אופציונלי: סוג ה-stack של ממשק הרשת GVNIC. הערך של STACK_TYPE חייב להיות אחד מהערכים IPV4_ONLY או IPV4_IPV6. ערך ברירת המחדל הוא IPV4_ONLY.
    • ‫EXTERNAL_IPV4_ADDRESS: אופציונלי: כתובת IPv4 חיצונית סטטית לשימוש עם ממשק הרשת. צריך לשמור מראש כתובת IPv4 חיצונית. מבצעים אחת מהפעולות הבאות:
      • צריך לציין כתובת IPv4 תקינה מרשת המשנה.
      • אם לא רוצים שממשק הרשת יקבל כתובת IP חיצונית, צריך להשתמש בדגל no-address.
      • מציינים address='' אם רוצים שממשק יקבל כתובת IP חיצונית ארעית.

      כדי לציין כתובת IPv6 חיצונית, משתמשים בדגל --external-ipv6-address.

    • ‫RDMA_NAME_PREFIX: תחילית השם שבה השתמשתם כשייצרתם את רשת ה-VPC ואת תת-הרשת לממשק IRDMA.
  5. אופציונלי: מוסיפים דגלים נוספים כדי להתאים אישית את שאר המאפיינים של המכונה, לפי הצורך.
  6. מריצים את הפקודה.

כרטיס Spot

מתחילים עם gcloud compute instances create הפקודה הבאה.

   gcloud compute instances bulk create \
       --name-pattern=NAME_PATTERN \
       --count=COUNT \
       --machine-type=MACHINE_TYPE \
       --image-family=IMAGE_FAMILY \
       --image=project= IMAGE_PROJECT \
       --region=REGION \
       --boot-disk-type=hyperdisk-balanced \
       --boot-disk-size=DISK_SIZE \
       --provisioning-model=SPOT \
       --instance-termination=action=TERMINATION_ACTION
   

כך עושים את זה:

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

    • ‫NAME_PATTERN: תבנית השם של המכונות. לדוגמה, שימוש ב-vm-# בתבנית השם יוצר מופעים עם שמות כמו vm-1 ו-vm-2, עד למספר שצוין באמצעות הדגל --count.
    • ‫COUNT: מספר המופעים שרוצים ליצור.
    • ‫MACHINE_TYPE: סוג המכונה שבה רוצים להשתמש עבור המופעים. משתמשים באחד מסוגי המכונות של H4D, לדוגמה h4d-highmem-192-lssd.
    • ‫IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה שבה רוצים להשתמש, לדוגמה rocky-linux-9-optimized-gcp.

      כאן תוכלו למצוא רשימה של קובצי אימג' של מערכות הפעלה נתמכות. בוחרים גרסה של קובץ אימג' של מערכת ההפעלה שתומכת בממשק IRDMA.

    • ‫IMAGE_PROJECT: מזהה הפרויקט של תמונת מערכת ההפעלה, לדוגמה, rocky-linux-cloud.
    • ‫REGION: מציינים אזור שבו סוג המכונה שרוצים להשתמש בה זמין, לדוגמה europe-west4. מידע על אזורים זמינים מופיע במאמר אזורים ואזורי זמינות זמינים.
    • ‫DISK_SIZE: אופציונלי: הגודל של דיסק האתחול ב-GiB. הערך חייב להיות מספר שלם.
    • ‫TERMINATION_ACTION: הפעולה שתתבצע כש-Compute Engine יבצע דחיקה של המכונה, או STOP (ברירת מחדל) או DELETE.

  2. אופציונלי: אם בחרתם להשתמש במדיניות מיקום קומפקטית, מוסיפים את הדגל הבא לפקודה:

          --resource-policies=POLICY_NAME \
          

    מחליפים את POLICY_NAME בשם של מדיניות המיקום הקומפקטי.

  3. אופציונלי: כדי להגדיר את המכונות לשימוש ב-Cloud RDMA, מוסיפים לפקודה דגלים שדומים לאלה: בדוגמה הזו מוגדרים שני ממשקי רשת מסוג GVNIC וממשק רשת אחד מסוג IRDMA:

          --network-interface=nic-type=GVNIC, \
              network=GVNIC_NAME_PREFIX-net-0, \
              subnet=GVNIC_NAME_PREFIX-sub-0, \
              stack-type=STACK_TYPE, \
              address=EXTERNAL_IPV4_ADDRESS \
          --network-interface=nic-type=GVNIC, \
              network=GVNIC_NAME_PREFIX-net-1, \
              subnet=GVNIC_NAME_PREFIX-sub-1, no-address \
          --network-interface=nic-type=IRDMA, \
              network=RDMA_NAME_PREFIX-irdma, \
              subnet=RDMA_NAME_PREFIX-irdma-sub, \
              stack-type=IPV4_ONLY, no-address \
          

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

    • ‫GVNIC_NAME_PREFIX: התוספת לשם שבה השתמשתם כשייצרתם את רשת ה-VPC ואת תת-הרשת לממשק gVNIC.

      בממשק הרשת הראשון של GVNIC, אפשר להשמיט את הדגלים network ו-subnet כדי להשתמש ברשת default במקום זאת.

    • ‫STACK_TYPE: אופציונלי: סוג ה-stack של ממשק הרשת GVNIC. הערך של STACK_TYPE חייב להיות אחד מהערכים IPV4_ONLY או IPV4_IPV6. ערך ברירת המחדל הוא IPV4_ONLY.
    • ‫EXTERNAL_IPV4_ADDRESS: אופציונלי: כתובת IPv4 חיצונית סטטית לשימוש עם ממשק הרשת. צריך לשריין כתובת IPv4 חיצונית מראש. מבצעים אחת מהפעולות הבאות:
      • צריך לציין כתובת IPv4 תקינה מרשת המשנה.
      • אם לא רוצים שממשק הרשת יקבל כתובת IP חיצונית, צריך להשתמש בדגל no-address.
      • מציינים address='' אם רוצים שממשק יקבל כתובת IP חיצונית ארעית.

      כדי לציין כתובת IPv6 חיצונית, משתמשים בדגל --external-ipv6-address.

    • ‫RDMA_NAME_PREFIX: תחילית השם שבה השתמשתם כשייצרתם את רשת ה-VPC ואת תת-הרשת לממשק IRDMA.
  4. אופציונלי: מוסיפים דגלים נוספים כדי להתאים אישית את שאר המאפיינים של המכונה, לפי הצורך.
  5. מריצים את הפקודה.

REST

כדי ליצור כמות גדולה של מכונות וירטואליות, שולחים בקשת POST ל-method‏ instances.bulkInsert.

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

הזמנה מראש

מתחילים בבקשת POST הבאה ל-method‏ instances.bulkInsert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
    {
      "namePattern":"NAME_PATTERN",
      "count":"COUNT",
      "instanceProperties":{
        "machineType":"MACHINE_TYPE",
        "disks":[
          {
            "boot":true,
            "initializeParams":{
              "diskSizeGb":"DISK_SIZE",
              "diskType":"hyperdisk-balanced",
              "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            },
            "mode":"READ_WRITE",
            "type":"PERSISTENT"
          }
        ],
        "scheduling":{
            "provisioningModel":"RESERVATION_BOUND",
            "instanceTerminationAction":"DELETE",
            "onHostMaintenance": "TERMINATE",
            "automaticRestart":true
        }
      }
    }
    

כך עושים את זה:

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

    • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המופעים.
    • ‫ZONE: מציינים אזור שבו סוג המכונה שרוצים להשתמש בה זמין. אם אתם משתמשים במדיניות למיקום קומפקטי, אתם צריכים להשתמש באזור באותו אזור כמו המדיניות למיקום קומפקטי. מידע על האזורים שבהם סוגי המכונות H4D זמינים מופיע במאמר אזורים ואזורי זמינות.
    • ‫NAME_PATTERN: תבנית השם של המכונות. לדוגמה, אם משתמשים ב-vm-# בתבנית השם, נוצרים מכונות עם שמות כמו vm-1 ו-vm-2, עד למספר שצוין בשדה count.
    • ‫COUNT: מספר המכונות שרוצים ליצור.
    • ‫MACHINE_TYPE: סוג המכונה שבה רוצים להשתמש עבור המופעים. משתמשים באחד מסוגי המכונות H4D, למשל h4d-highmem-192-lssd.
    • ‫DISK_SIZE: גודל דיסק האתחול ב-GiB.
    • ‫IMAGE_PROJECT: מזהה הפרויקט של תמונת מערכת ההפעלה, לדוגמה, debian-cloud.
    • ‫IMAGE_FAMILY: משפחת התמונות של תמונת מערכת ההפעלה שרוצים להשתמש בה, לדוגמה rocky-linux-9-optimized-gcp. רשימת תמונות מערכת ההפעלה הנתמכות מופיעה במאמר בנושא מערכת הפעלה נתמכת. בוחרים גרסה של תמונת מערכת הפעלה שתומכת בממשק IRDMA.
  2. אופציונלי: אם בחרתם להשתמש במדיניות מיקום קומפקטית, צריך לכלול את הפרמטר resourcePolicies בגוף הבקשה כחלק מהפרמטר "instanceProperties".

              "resourcePolicies": [
                "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
              ],
              

    מחליפים את POLICY_NAME בשם של מדיניות מיקום קומפקטית.

  3. כדי לציין את ההזמנה, מבצעים אחת מהפעולות הבאות:

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

                 "reservationAffinity":{
                   "consumeReservationType":"SPECIFIC_RESERVATION",
                   "key":"compute.googleapis.com/reservation-name",
                   "values":[
                     "RESERVATION_NAME"
                   ],
                 },
                 

      מחליפים את RESERVATION_NAME בשם ההזמנה, לדוגמה, h4d-highmem-exfr-prod.

    • אם אתם לא משתמשים במדיניות למיקום קומפקטי או שאתם רוצים שהמכונות ימוקמו בבלוק ספציפי, הוסיפו את הפרמטר הבא לגוף הבקשה כחלק מהפרמטר "instanceProperties":

                  "reservationAffinity":{
                    "consumeReservationType":"SPECIFIC_RESERVATION",
                    "key":"compute.googleapis.com/reservation-name",
                    "values":[
                      "RESERVATION_BLOCK_NAME"
                    ],
                  },
                 

      מחליפים את RESERVATION_BLOCK_NAME בשם של בלוק בהזמנה, לדוגמה, h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1.

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

  4. אם רוצים להגדיר את המופעים לשימוש ב-Cloud RDMA, צריך לכלול בלוק פרמטרים דומה לזה שבהמשך בגוף הבקשה כחלק מהפרמטר "instanceProperties". בדוגמה הזו מוגדרים שני ממשקי רשת מסוג GVNIC וממשק רשת אחד מסוג IRDMA:

              "networkInterfaces": [
              {
                "network": "GVNIC_NAME_PREFIX-net-0",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-0",
                "accessConfigs": [
                   {
                      "type": "ONE_TO_ONE_NAT",
                      "name": "External IP",
                      "natIP": "EXTERNAL_IPV4_ADDRESS"
                   }
                ],
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "GVNIC_NAME_PREFIX-net-1",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-1",
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "RDMA_NAME_PREFIX-irdma",
                "subnetwork": "RDMA_NAME_PREFIX-irdma-sub",
                "stackType": "IPV4_ONLY",
                "nicType": "IRDMA",
              }
            ],
             

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

    • ‫GVNIC_NAME_PREFIX: התוספת לשם שבה השתמשתם כשייצרתם את רשת ה-VPC ואת תת-הרשת לממשק gVNIC.

      בממשק הרשת GVNIC, אפשר להשמיט את השדות network ו-subnetwork כדי להשתמש ברשת default.

    • ‫EXTERNAL_IPV4_ADDRESS: אופציונלי: כתובת IPv4 חיצונית סטטית לשימוש עם ממשק הרשת. צריך לשמור מראש כתובת IPv4 חיצונית.
    • ‫RDMA_NAME_PREFIX: התחילית של השם ששימש ליצירת רשת ה-VPC ותת-הרשת של ממשק ה-IRDMA.
  5. אופציונלי: מתאימים אישית את שאר המאפיינים של המכונה לפי הצורך.
  6. שולחים את הבקשה.

Spot

מתחילים עם בקשת POST הבאה ל-method‏ instances.bulkInsert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
    {
      "namePattern":"NAME_PATTERN",
      "count":"COUNT",
      "instanceProperties":{
        "machineType":"MACHINE_TYPE",
        "disks":[
          {
            "boot":true,
            "initializeParams":{
              "diskSizeGb":"DISK_SIZE",
              "diskType":"hyperdisk-balanced",
              "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            },
            "mode":"READ_WRITE",
            "type":"PERSISTENT"
          }
        ],
        "scheduling":{
            "provisioningModel":"SPOT",
            "instanceTerminationAction":"TERMINATION_ACTION"
        }
      }
    }
    

כך עושים את זה:

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

    • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המופעים.
    • ‫ZONE: מציינים אזור שבו סוג המכונה שרוצים להשתמש בו זמין. אם אתם משתמשים במדיניות למיקום קומפקטי, אתם צריכים להשתמש באזור באותו אזור כמו המדיניות למיקום קומפקטי. במאמר אזורים זמינים מפורטים האזורים שבהם אפשר להשתמש בסוגי המכונות H4D.
    • ‫NAME_PATTERN: תבנית השם של המכונות. לדוגמה, שימוש ב-vm-# בתבנית השם יוצר מופעים עם שמות כמו vm-1 ו-vm-2, עד למספר שצוין בשדה count.
    • ‫COUNT: מספר המכונות שרוצים ליצור.
    • ‫MACHINE_TYPE: סוג המכונה שבה רוצים להשתמש עבור המופעים. משתמשים באחד מסוגי המכונות H4D, למשל h4d-highmem-192-lssd.
    • ‫DISK_SIZE: גודל דיסק האתחול ב-GiB.
    • ‫IMAGE_PROJECT: מזהה הפרויקט של תמונת מערכת ההפעלה, לדוגמה, debian-cloud.
    • ‫IMAGE_FAMILY: משפחת התמונות של תמונת מערכת ההפעלה שרוצים להשתמש בה, לדוגמה rocky-linux-9-optimized-gcp. כאן תוכלו למצוא רשימה של קובצי אימג' של מערכות הפעלה נתמכות. בוחרים גרסה של תמונת מערכת הפעלה שתומכת בממשק IRDMA.
    • ‫TERMINATION_ACTION: הפעולה שצריך לבצע כש-Compute Engine מפקיע את המכונה, STOP (ברירת המחדל) או DELETE.

  2. אופציונלי: אם בחרתם להשתמש במדיניות מיקום קומפקטית, צריך לכלול את הפרמטר resourcePolicies כחלק מהפרמטר "instanceProperties".

              "resourcePolicies": [
                "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
              ]
              
  3. אם רוצים להגדיר את המופעים לשימוש ב-Cloud RDMA, צריך לכלול בלוק פרמטרים דומה לזה שבהמשך בגוף הבקשה כחלק מהפרמטר "instanceProperties". בדוגמה הזו מוגדרים שני ממשקי רשת מסוג GVNIC וממשק רשת אחד מסוג IRDMA:

              "networkInterfaces": [
              {
                "network": "GVNIC_NAME_PREFIX-net-0",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-0",
                "accessConfigs": [
                   {
                      "type": "ONE_TO_ONE_NAT",
                      "name": "External IP",
                      "natIP": "EXTERNAL_IPV4_ADDRESS"
                   }
                ],
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "GVNIC_NAME_PREFIX-net-1",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-1",
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "RDMA_NAME_PREFIX-irdma",
                "subnetwork": "RDMA_NAME_PREFIX-irdma-sub",
                "stackType": "IPV4_ONLY",
                "nicType": "IRDMA",
              }
            ],
             

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

    • ‫GVNIC_NAME_PREFIX: התוספת לשם שבה השתמשתם כשייצרתם את רשת ה-VPC ואת תת-הרשת לממשק gVNIC.

      בממשק הרשת GVNIC, אפשר להשמיט את השדות network ו-subnetwork כדי להשתמש ברשת default.

    • ‫EXTERNAL_IPV4_ADDRESS: אופציונלי: כתובת IPv4 חיצונית סטטית לשימוש עם ממשק הרשת. צריך לשמור מראש כתובת IPv4 חיצונית.
    • ‫RDMA_NAME_PREFIX: תחילית השם שבה השתמשתם כשייצרתם את רשת ה-VPC ואת תת-הרשת לממשק IRDMA.
  4. אופציונלי: מתאימים אישית את שאר המאפיינים של המכונה לפי הצורך.
  5. שולחים את הבקשה.

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