יצירת מכונות של Compute Engine עם ULL

בדף הזה מוסבר איך ליצור מכונות וירטואליות (VM) של Compute Engine עם זמן אחזור נמוך במיוחד (ULL) באמצעות סוגי מכונות U4P או U4C ממשפחת המכונות U4.

סקירה כללית של תהליך הגדרת התשתית של ULL זמינה במאמר סקירה כללית של ההגדרה של פתרון ULL.

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

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

יצירת רשתות VPC

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

יצירת מדיניות לגבי מיקומי מודעות

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

הגדרת הפרויקט

מגדירים את ה-CLI של gcloud לשימוש בפרויקט. לחלופין, אפשר לכלול את הדגל --project=PROJECT_ID בכל פקודה מהפקודות הבאות.

gcloud config set project PROJECT_ID

מחליפים את PROJECT_ID במזהה הפרויקט.

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

כדי לקבל את ההרשאות שדרושות ליצירת מכונות של Compute Engine, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

  • כדי ליצור ולנהל מכונות וירטואליות: Compute Instance Admin ‏ (compute.instanceAdmin) בפרויקט

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

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

סקירה כללית על הגדרת מופע ULL

כדי ליצור מכונת VM עם ULL ולהגדיר אותה לשליחה או לקבלה של תעבורת ULL unicast ו-multicast, מבצעים את הפעולות הבאות:

שלב תיאור
יצירת מופע של ULL יוצרים מכונה באמצעות סוג מכונה U4P או U4C ומקשרים את ממשקי הרשת שלה לרשת VPC למטרות כלליות ולרשת VPC עם ULL. אם אתם מתכננים להשתמש במופע כצרכן של שידור מרובה משתתפים, צריך להגדיר את הדגל igmp-query לערך IGMP_QUERY_V2.
הגדרת ניתוב לממשקים שאינם nic0 לתעבורת יוניקאסט של ULL כדי לוודא שחבילות יוצאות עוזבות דרך הממשק הנכון ולמנוע ניתוב אסימטרי, צריך להגדיר ניתוב מדיניות מבוסס-מקור במערכת ההפעלה של האורח.
הגדרת מופע כצרכן של שידור מרובה כתובות ULL כדי לקבל תעבורת נתונים של Multicast בממשקי רשת של ULL, צריך לבצע את הפעולות הבאות:
כדי לבצע אופטימיזציה נוספת של הביצועים, מומלץ גם להפעיל סקרים בזמן שהמערכת עמוסה כמו שמתואר במאמר עבודה עם Onload.

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

יצירת מופע ULL

בקטע הזה מוסבר איך ליצור מופע חדש לשימוש ב-ULL unicast וב-multicast.

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

gcloud

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

סוג ממשק הרשת הנתמך במכונות ULL הוא GVNIC. צריך לכלול את השדה queue-count ולציין את הערך 32 לתמיכה ב-XDP.

עבור ממשקי הרשת שמצורפים לרשת ULL VPC, צריך לציין את no-address.

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

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --maintenance-policy=TERMINATE \
    --network-interface=nic-type=GVNIC,queue-count=32,network=GENERAL_PURPOSE_VPC_NETWORK,subnet=GENERAL_PURPOSE_SUBNET \
    --network-interface=nic-type=GVNIC,queue-count=32,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_1,no-address,igmp-query=IGMP_QUERY_V2 \
    --network-interface=nic-type=GVNIC,queue-count=32,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_2,no-address,igmp-query=IGMP_QUERY_V2

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

  • ZONE: האזור שבו רוצים ליצור את המכונה
  • INSTANCE_NAME: שם למכונה
  • MACHINE_TYPE: סוג המכונה U4P או U4C של המכונה
  • IMAGE_PROJECT: פרויקט התמונה, כמו rhel-cloud. מערכות הפעלה נתמכות לסוגי מכונות U4
  • IMAGE_FAMILY: משפחת התמונות, למשל rhel-10-2-eus-gvnic-baremetal. מערכות הפעלה נתמכות לסוגי מכונות U4

    כשמציינים משפחת תמונות, המערכת יוצרת את המופע מהגרסה האחרונה של תמונת מערכת ההפעלה במשפחת התמונות, שלא הוצאה משימוש. אפשר גם להשתמש בדגל --image ולציין גרסת תמונה.

  • GENERAL_PURPOSE_VPC_NETWORK, GENERAL_PURPOSE_SUBNET: רשת ה-VPC ותת-הרשת שאליהן יצורף הממשק nic0 של המכונה

  • ULL_VPC_NETWORK: רשת ה-VPC של ULL שאליה יצורפו הממשקים שאינם nic0

    • ULL_SUBNET_1: תת-הרשת ברשת ה-VPC של ULL שאליה רוצים לצרף את הממשק nic1

    • ULL_SUBNET_2: תת-הרשת ברשת ה-VPC של ULL שאליה רוצים לצרף את הממשק nic2

הגדרת ניתוב לממשקי nic0 שאינם מיועדים לתעבורת נתונים מסוג unicast של ULL

כברירת מחדל, מכונה משתמשת בנתיב ברירת המחדל שמשויך לממשק nic0 שלה כדי לשלוח תנועה לכל יעד מחוץ לתת-הרשת שמחוברת אליה ישירות. מידע נוסף זמין במאמר סקירה כללית על ממשקי רשת מרובים.

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

דוגמה להגדרת ניתוב מדיניות מופיעה במאמר הגדרת ניתוב מדיניות במדריך הגדרת ניתוב לממשק רשת נוסף.

הגדרת מופע כצרכן של שידור מרובה כתובות עם השהיה נמוכה במיוחד

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

הפעלה של שאילתת IGMP במופע ULL קיים

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

gcloud

כדי להפעיל שאילתת IGMP במכונת ULL קיימת, משתמשים בפקודה compute instances network-interfaces update.

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

gcloud compute instances network-interfaces update INSTANCE_NAME \
    --zone=ZONE \
    --network-interface=NETWORK_INTERFACE_NAME \
    --igmp-query=IGMP_QUERY_V2

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

  • INSTANCE_NAME: השם של המכונה
  • ZONE: האזור של המכונה
  • NETWORK_INTERFACE_NAME: השם של ממשק הרשת שבו רוצים להפעיל שאילתת IGMP. ב Google Cloud, הפורמט הוא nicNUMBER, לדוגמה: nic0,‏ nic1 או nic2.

הגדרת IGMPv2 במערכת ההפעלה של האורח

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

  1. מתחברים למכונה באמצעות SSH.

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

    sudo ifconfig
    
  3. לכל ממשק רשת רלוונטי, מריצים את הפקודה הבאה כדי לכפות IGMPv2.

    sudo -i
    echo "2" > /proc/sys/net/ipv4/conf/NETWORK_INTERFACE_DEVICE_NAME/force_igmp_version
    

    מחליפים את NETWORK_INTERFACE_DEVICE_NAME בשם המכשיר של ממשק הרשת, כמו eth0,‏ eth1 או eth2.

הגדרת סינון של נתיב הפוך (rp_filter)

במקרים מסוימים, כמו מקרים של מופעי multi-NIC, אימות מקור קפדני באמצעות סינון נתיב הפוך (rp-filter) עלול לגרום להשמטה של מנות מרובות שידור לגיטימיות. כדי למנוע את הבעיה הזו, אפשר להגדיר סינון של נתיב הפוך כדי להפחית את ההגבלות על אימות המקור או להשבית אותו בממשקי רשת שאינם nic0 שמקבלים תנועה של שידור לקבוצה. לדוגמה, הפקודות הבאות מגדירות סינון של נתיב הפוך כדי להשבית את אימות המקור ב-eth1 וב-eth2 על ידי הגדרת rp_filter ל-0.

sudo sysctl -w net.ipv4.conf.all.rp_filter=0
sudo sysctl -w net.ipv4.conf.eth1.rp_filter=0
sudo sysctl -w net.ipv4.conf.eth2.rp_filter=0

מידע נוסף על rp_filter זמין במאמר IP Sysctl במסמכי התיעוד של ליבת Linux.

הגדלת הגודל של מאגר הנתונים הזמני של הרינג בדרייבר של הרשת

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

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

בדוגמאות הבאות של פקודות מוגדרים nic1 ו-nic2:

sudo ethtool -G eth1 rx 2048 tx 2048
sudo ethtool -G eth2 rx 2048 tx 2048

פקודות לדוגמה לבדיקת קישוריות של שידור מרובה כתובות (multicast) ב-ULL

בקטע הזה מופיעות פקודות לדוגמה לבדיקת תעבורת multicast בלי להפעיל עומס עבודה של אפליקציה באמצעות הכלי iperf. כדי לבצע את השלבים שבקטע הזה, צריך להשלים את הגדרת ה-Multicast שמתוארת במאמר סקירה כללית של הגדרת פתרון ULL.

שליחת תנועת שידורים מרובים של ULL ממפיק שידורים מרובים

  1. מתחברים למכונה באמצעות SSH.

  2. מתקינים את iperf אם עדיין לא התקנתם אותו. ‫iperf3 לא תומך בשידור מרובה משתתפים. הפקודה הבאה משתמשת ב-iperf, שמתקין את iperf2.

    sudo yum install iperf
    
  3. כדי לשלוח תנועת נתונים של שידור מרובה משתתפים לכתובת ה-IP של קבוצת השידור המרובה, מריצים את הפקודה הבאה:

    iperf -c MULTICAST_GROUP_ADDRESS%NIC -p 1234 -l 512 -i 1 -u -b 1000pps -t 999999 -B NIC_IP_ADDRESS
    

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

    • MULTICAST_GROUP_ADDRESS: כתובת ה-IP של קבוצת ה-Multicast
    • NIC השם של הממשק ברשת, כמו eth1 או eth2
    • NIC_IP_ADDRESS כתובת ה-IP שמוקצית ל-NIC שציינתם

הצטרפות לקבוצה וקבלת תנועת שידורים מרובים של ULL מצרכן שידורים מרובים

  1. מתחברים למכונה באמצעות SSH.

  2. מתקינים את iperf אם עדיין לא התקנתם אותו.

    sudo yum install iperf
    
  3. כדי להצטרף לקבוצת מולטיקאסט ולתעד ביומן את התנועה שמתקבלת, מריצים את הפקודה הבאה:

    iperf -s -p 1234 -B MULTICAST_GROUP_ADDRESS%NIC -l 512 -u -i 1
    

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

    • MULTICAST_GROUP_ADDRESS כתובת ה-IP של קבוצת ה-multicast
    • NIC השם של הממשק ברשת, כמו eth1 או eth2

    לדוגמה, הפקודה הבאה מצטרפת לקבוצה עם כתובת ה-IP‏ 224.1.0.176 כדי לקבל מנות של עד 512 בייט, ומתעדת ביומן את התנועה שהתקבלה:

    iperf -s -p 1234 -B 224.1.0.176%eth1 -l 512 -u -i 1
    

בממשקי הרשת של ULL במופע, ethtool מציג את הסטטוס של קישור היציאה הפיזית (up/down) ואת מהירויות הקישור הפיזי.

כדי לבדוק את הסטטוס של הקישור הפיזי ואת המהירות של ממשק רשת ULL, מריצים את הפקודה הבאה:

sudo ethtool NIC

מחליפים את NIC בשם של ממשק הרשת שהוקצה על ידי מערכת ההפעלה של האורח, כמו ens8f0 או ens48f0.

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

  • מידע כללי על פתרון בעיות שקשורות לביצועי הרשת במופעי Bare Metal זמין במאמר פתרון בעיות שקשורות לביצועי הרשת במאמרי העזרה של Compute Engine. לדוגמה, אפשר להשבית את מצבי השינה של המעבד כדי להשיג ביצועים מלאים של רוחב הפס ברשת.
  • במאמר עבודה עם Onload מוסבר איך מפעילים סקר פעיל ובודקים את התכונות של Onload במכונות מחשוב עם ULL.
  • כדי לסנכרן את שעון המערכת של המופע עם השעון של כרטיס ה-NIC הפיזי של שרת המארח, אפשר לעיין במאמר בנושא הגדרת זמן מדויק.