התחברות מ-Compute Engine

במדריך הזה מוסבר איך ליצור לקוח יחיד של Compute Engine ולחבר אותו למופע Parallelstore.

כדי ליצור חיבור מכמה לקוחות של Compute Engine, אפשר לפעול לפי ההוראות במאמר חיבור מ-Compute Engine: כמה לקוחות.

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

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

כדי ליצור מכונה וירטואלית (VM) ב-Compute Engine, צריך לקבל את תפקיד ה-IAM הבא:

יצירת מכונה וירטואלית ב-Compute Engine

פועלים לפי ההוראות כדי ליצור מכונה וירטואלית ב-Compute Engine באמצעות אחת מהתמונות הבאות:

אפשר לבחור כל סוג מכונה ודיסק אתחול. מומלץ להשתמש לפחות בסוג מכונה c2-standard-4. כדי לשפר את ביצועי הלקוח, צריך להגדיל את מספר ה-vCPU כדי להגדיל את קצב העברת הנתונים ברשת. לדוגמה, c3-standard-176 עם רישות ברמה 1 מספק רוחב פס של 200Gbps ליציאה.

מסוף Google Cloud

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

    כניסה לדף VM instances

  2. בוחרים פרויקט ולוחצים על המשך.

  3. לוחצים על Create instance.

  4. מזינים שם למכונה הווירטואלית בשדה שם. מידע נוסף זמין במאמר מוסכמות למתן שמות למשאבים.

  5. בתפריטים הנפתחים, בוחרים את האזור והתחום של מכונת ה-VM. המכונה הווירטואלית צריכה להיות באותו אזור כמו מופע Parallelstore.

  6. בוחרים תצורת מכונה למכונה הווירטואלית מהרשימה.

  7. בקטע דיסק אתחול לוחצים על Change.

  8. לוחצים על הכרטיסייה תמונות ציבוריות.

  9. בתפריט הנפתח Operating system, בוחרים באחת מהאפשרויות הבאות: HPC VM image,‏ Ubuntu או Debian.

  10. בתפריט הנפתח Version, בוחרים באחת מהאפשרויות הבאות: HPC Rocky Linux 8,‏ Ubuntu 22.04 LTS או Debian GNU/Linux 12 (bookworm). בוחרים בגרסת x86/64 או בגרסת Arm64 בהתאם לסוג המכונה.

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

  12. מרחיבים את הקטע אפשרויות מתקדמות ואז מרחיבים את רשת.

  13. בקטע Network interfaces, בוחרים את רשת ה-VPC שיצרתם במאמר הגדרת רשת VPC.

  14. כדי ליצור את המכונה הווירטואלית ולהפעיל אותה, לוחצים על Create.

gcloud

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

HPC Rocky Linux 8

gcloud compute instances create VM_NAME \
  --project=PROJECT_ID \
  --zone=LOCATION \
  --machine-type=c2d-standard-112 \
  --network-interface=stack-type=IPV4_ONLY,subnet=NETWORK_NAME,nic-type=GVNIC \
  --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
  --create-disk=auto-delete=yes,boot=yes,device-name=VM_NAME,\
image=projects/cloud-hpc-image-public/global/images/hpc-rocky-linux-8-v20240126,\
mode=rw,size=100,type=pd-balanced

‫Rocky Linux 9 Optimized

gcloud compute instances create VM_NAME \
  --project=PROJECT_ID \
  --zone=LOCATION \
  --machine-type=c2d-standard-112 \
  --network-interface=stack-type=IPV4_ONLY,subnet=NETWORK_NAME,nic-type=GVNIC \
  --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
  --create-disk=auto-delete=yes,boot=yes,device-name=VM_NAME,\
image=projects/rocky-linux-cloud/global/images/rocky-linux-9-optimized-gcp-v20241112,\
mode=rw,size=100,type=pd-balanced

RHEL 9

gcloud compute instances create VM_NAME \
  --project=PROJECT_ID \
  --zone=LOCATION \
  --machine-type=c2d-standard-112 \
  --network-interface=stack-type=IPV4_ONLY,subnet=NETWORK_NAME,nic-type=GVNIC \
  --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
  --create-disk=auto-delete=yes,boot=yes,device-name=VM_NAME,\
image=projects/rhel-cloud/global/images/rhel-9-v20241112,\
mode=rw,size=100,type=pd-balanced

Ubuntu 22.04

gcloud compute instances create VM_NAME \
  --project=PROJECT_ID \
  --zone=LOCATION \
  --machine-type=c2d-standard-112 \
  --network-interface=stack-type=IPV4_ONLY,subnet=NETWORK_NAME,nic-type=GVNIC \
  --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
  --create-disk=auto-delete=yes,boot=yes,device-name=VM_NAME,\
image=projects/ubuntu-os-cloud/global/images/ubuntu-2204-jammy-v20240927,\
mode=rw,size=100,type=pd-balanced

‫Debian 12

gcloud compute instances create VM_NAME \
  --project=PROJECT_ID \
  --zone=LOCATION \
  --machine-type=c2d-standard-112 \
  --network-interface=stack-type=IPV4_ONLY,subnet=NETWORK_NAME,nic-type=GVNIC \
  --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
  --create-disk=auto-delete=yes,boot=yes,device-name=VM_NAME,\
image=projects/debian-cloud/global/images/debian-12-bookworm-v20240415,\
mode=rw,size=100,type=pd-balanced

למידע נוסף על האפשרויות הזמינות, אפשר לעיין במאמרי העזרה של Compute Engine.

חיבור SSH למכונה הווירטואלית של הלקוח

מסוף Google Cloud

כדי להשתמש ב-SSH כדי להתחבר למכונה וירטואלית של Compute Engine, צריך קודם ליצור כלל חומת אש שמאפשר SSH.

  1. נכנסים לדף Firewall policies במסוף Google Cloud .

    לדף Firewall policies

  2. לוחצים על יצירת כלל לחומת האש.

  3. מזינים שם לכלל.

  4. בשדה Network (רשת), בוחרים את רשת ה-VPC שיצרתם קודם.

  5. בוחרים באפשרות תעבורת נתונים נכנסת (ingress) בתור כיוון התנועה, ובאפשרות אישור בתור פעולה במקרה של התאמה.

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

  7. בשדה Source IPv4 ranges (טווחי כתובות IPv4 של המקור), מזינים 0.0.0.0/0.

  8. בקטע Protocols and ports (פרוטוקולים ויציאות), בוחרים באפשרות Specified protocols and ports (פרוטוקולים ויציאות שצוינו).

  9. בוחרים באפשרות TCP ומזינים 22 בשדה Ports.

  10. לוחצים על יצירה.

לאחר מכן, מתחברים למכונה הווירטואלית באמצעות SSH:

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

    כניסה לדף VM instances

  2. בטבלת המופעים, מאתרים את השורה של המופע ולוחצים על SSH בעמודה Connect.

  3. אם מתבקשים לאשר את החיבור, לוחצים על Authorize (אישור).

gcloud

כדי להשתמש ב-SSH כדי להתחבר למכונה וירטואלית של Compute Engine, צריך קודם ליצור כלל חומת אש שמאפשר SSH.

gcloud compute firewall-rules create FIREWALL_RULE_NAME \
  --allow=tcp:22 \
  --network=NETWORK_NAME \
  --source-ranges=0.0.0.0/0 \
  --project=PROJECT_ID

לאחר מכן מתחברים באמצעות gcloud compute ssh:

gcloud compute ssh VM_NAME --zone=ZONE --project=PROJECT_ID

התקנה של ספריית הלקוח של DAOS

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

HPC Rocky Linux 8

צריך להריץ את הפקודות הבאות בכל מכונת VM של Compute Engine.

  1. מוסיפים את מאגר החבילות Parallelstore:

    sudo tee /etc/yum.repos.d/parallelstore-v2-6-el8.repo << EOF
    [parallelstore-v2-6-el8]
    name=Parallelstore EL8 v2.6
    baseurl=https://us-central1-yum.pkg.dev/projects/parallelstore-packages/v2-6-el8
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    EOF
    
  2. מעדכנים את מטמון המטא-נתונים המקומי:

    sudo dnf makecache
    
  3. התקנה של daos-client:

    sudo dnf install -y epel-release && \
    sudo dnf install -y daos-client
    
  4. שדרוג libfabric:

    sudo dnf upgrade -y libfabric
    

‫Rocky Linux 9 Optimized

צריך להריץ את הפקודות הבאות בכל מכונת VM של Compute Engine.

  1. מוסיפים את מאגר החבילות Parallelstore:

    sudo tee /etc/yum.repos.d/parallelstore-v2-6-el9.repo << EOF
    [parallelstore-v2-6-el9]
    name=Parallelstore EL9 v2.6
    baseurl=https://us-central1-yum.pkg.dev/projects/parallelstore-packages/v2-6-el9
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    EOF
    
  2. מעדכנים את מטמון המטא-נתונים המקומי:

    sudo dnf makecache
    
  3. התקנה של daos-client:

    sudo dnf install -y epel-release && \
    sudo dnf install -y daos-client
    
  4. שדרוג libfabric:

    sudo dnf upgrade -y libfabric
    

RHEL 9

צריך להריץ את הפקודות הבאות בכל מכונת VM של Compute Engine.

  1. מוסיפים את מאגר החבילות Parallelstore:

    sudo tee /etc/yum.repos.d/parallelstore-v2-6-el9.repo << EOF
    [parallelstore-v2-6-el9]
    name=Parallelstore EL9 v2.6
    baseurl=https://us-central1-yum.pkg.dev/projects/parallelstore-packages/v2-6-el9
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    EOF
    
  2. מעדכנים את מטמון המטא-נתונים המקומי:

    sudo dnf makecache
    
  3. התקנה של daos-client:

    sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
    
    sudo dnf install -y epel-release && \
    sudo dnf install -y daos-client
    
  4. שדרוג libfabric:

    sudo dnf upgrade -y libfabric
    

Ubuntu 22.04

צריך להריץ את הפקודות הבאות בכל מכונת VM של Compute Engine.

  1. מוסיפים את מאגר החבילות Parallelstore:

    curl https://us-central1-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
    echo "deb https://us-central1-apt.pkg.dev/projects/parallelstore-packages v2-6-deb main" | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
    
  2. מעדכנים את אינדקס החבילות:

    sudo apt update
    
  3. התקנה של daos-client:

    sudo apt install -y daos-client
    

‫Debian 12

צריך להריץ את הפקודות הבאות בכל מכונת VM של Compute Engine.

  1. מוסיפים את מאגר החבילות Parallelstore:

    curl https://us-central1-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
    echo "deb https://us-central1-apt.pkg.dev/projects/parallelstore-packages v2-6-deb main" | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
    
  2. מעדכנים את אינדקס החבילות:

    sudo apt update
    
  3. התקנה של daos-client:

    sudo apt install -y daos-client
    

הגדלת מכסת הקבצים הפתוחים (Ubuntu בלבד)

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

אם אתם בוחרים שלא להשתמש בספריית היירוט, אתם יכולים להריץ את הפקודה ulimit -n 131072 מיד לפני הפעלת dfuse.

כדי להגדיל את מכסת הקבצים הפתוחים מ-1024, מריצים את הפקודות הבאות בכל מכונה וירטואלית.

sudo tee -a /etc/security/limits.conf <<EOF
* soft nofile 131072
* hard nofile 131072
EOF

לאחר מכן, מפעילים מחדש:

sudo reboot

אחרי שה-VM של הלקוח מופעל מחדש, מתחברים אליו שוב באמצעות SSH.

עדכון ההגדרה של סוכן DAOS

כך מעדכנים את /etc/daos/daos_agent.yml:

  1. מבטלים את ההערה של access_points ומעדכנים אותו עם כתובות ה-IP של accessPoints ממאפייני מופע Parallelstore. לדוגמה: access_points: ['172.21.95.2', '172.21.95.4', '172.21.95.5'].

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

    echo access_points\: $(gcloud beta parallelstore instances describe \
      INSTANCE_ID --location LOCATION --project PROJECT_ID \
      --format "value[delimiter=', '](format("{0}", accessPoints))")
    
  2. מבטלים את ההערה בשתי השורות הבאות. ההזחה חשובה, לכן צריך להקפיד על הרווחים לפני allow_insecure:

    # transport_config:
    #   allow_insecure: false
    
  3. צריך לשנות את הערך של allow_insecure ל-true כי אין תמיכה באישורים.

     transport_config:
       allow_insecure: true
    
  4. מציינים את ממשק הרשת שמספק קישוריות למופע Parallelstore. בדרך כלל הממשק הוא eth0,‏ ens4 או enp0s3, אבל יכול להיות שהוא יהיה שונה בהתאם להגדרות הרשת. אפשר להשתמש בפקודה route כדי להציג את שער ברירת המחדל של המכונה הווירטואלית. בדרך כלל, הממשק שצריך לציין הוא הממשק שמשתף רשת משנה עם השער.

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

    ip a
    

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

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    2: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc noqueue state UP group default
        link/ether e4:9x:3f:x7:dx:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet 10.88.0.3/16 brd 10.88.255.255 scope global eth0
           valid_lft forever preferred_lft forever
    3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1460 qdisc noqueue state DOWN group default
        link/ether 02:4x:6y:1z:84:45 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
           valid_lft forever preferred_lft forever
    

    מריצים את הפקודה route כדי להציג את טבלת הניתוב:

    route
    

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

    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         10.88.0.1       0.0.0.0         UG    0      0        0 eth0
    10.88.0.0       0.0.0.0         255.255.0.0     U     0      0        0 eth0
    172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
    

    בדוגמה, שער ברירת המחדל הוא 10.88.0.1 והוא משותף על ידי eth0, לכן צריך לציין את eth0 כממשק לשימוש.

    עריכה של /etc/daos/daos_agent.yml. מבטלים את ההערה include_fabric_ifaces ומעדכנים את הערך:

    include_fabric_ifaces: ["eth0"]
    

    שומרים את הקובץ וסוגרים אותו.

הפעלת סוכן DAOS

HPC Rocky Linux 8

sudo systemctl start daos_agent.service

כדי לוודא שהסוכן פועל, אפשר לבדוק את הסטטוס:

systemctl status daos_agent.service

‫Rocky Linux 9 Optimized

sudo systemctl start daos_agent.service

כדי לוודא שהסוכן פועל, אפשר לבדוק את הסטטוס:

systemctl status daos_agent.service

RHEL 9

sudo systemctl start daos_agent.service

כדי לוודא שהסוכן פועל, אפשר לבדוק את הסטטוס:

systemctl status daos_agent.service

Ubuntu 22.04

sudo mkdir /var/run/daos_agent && \
sudo daos_agent -o /etc/daos/daos_agent.yml &

‫Debian 12

sudo mkdir /var/run/daos_agent && \
sudo daos_agent -o /etc/daos/daos_agent.yml &

הגדרה של רישום ביומן

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

export D_LOG_MASK=INFO
export D_LOG_FILE_APPEND_PID=1
rm -f /tmp/client.log.*
export D_LOG_FILE=/tmp/client.log

טעינת המכונה באמצעות dfuse

טוענים את מופע Parallelstore באמצעות dfuse (DAOS FUSE).

  1. עורכים את /etc/fuse.conf כדי להוסיף user_allow_other.

  2. מציינים את האפשרות --multi-user עם dfuse:

    mkdir -p /tmp/parallelstore
    dfuse -m /tmp/parallelstore \
      --pool default-pool \
      --container default-container \
      --disable-wb-cache \
      --thread-count=20 \
      --eq-count=10 \
      --multi-user
    

כדי לקבל עזרה באופטימיזציה של הערכים של --thread-count ו---eq-count, אפשר לעיין בקטע ספירת השרשורים וספירת תורי האירועים בדף שיקולים לגבי ביצועים.

גישה למופע Parallelstore

המופע של Parallelstore מותקן עכשיו במכונת ה-VM של Compute Engine בנתיב שצוין באמצעות הדגל -m, ואפשר לקרוא ולכתוב בו באמצעות תחביר POSIX רגיל, עם כמה חריגים.

אם מריצים את הפקודה df במופע, הערך של SIZE הוא פי 1.5 מהערך שצוין באמצעות --capacity-gib. נפח האחסון שניתן לשימוש הוא עדיין --capacity-gib בגלל אופי קידוד המחיקה שמשמש את Parallelstore. כל 2 בייטים שנכתבים משתמשים ב-3 בייטים מנקודת המבט של df.

ביטול הטעינה של המכונה

אפשר לבטל את הטעינה של מופע Parallelstore באמצעות הפקודה הבאה:

sudo umount /tmp/parallelstore/

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