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

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

במאמר סקירה כללית על הגדרת התשתית של ULL Solution מוסבר על תהליך ההגדרה של תשתית ULL.

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

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

יצירת רשתות VPC

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

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

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

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

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

gcloud config set project PROJECT_ID

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

הפעלת ממשקי ה-API

אם עדיין לא עשיתם זאת, מפעילים את ממשקי ה-API הבאים.

המסוף

מפעילים את Compute Engine API.

תפקידים שנדרשים להפעלת ממשקי API

כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

להפעלת ה-API

gcloud

מפעילים את Compute Engine API:

תפקידים שנדרשים להפעלת ממשקי API

כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

gcloud services enable compute.googleapis.com

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

כדי לקבל את ההרשאות שדרושות ליצירת מכונות של 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 כדי לוודא שחבילות יוצאות עוזבות דרך הממשק הנכון ולמנוע ניתוב אסימטרי, צריך להגדיר ניתוב מדיניות מבוסס-מקור במערכת ההפעלה של האורח.
הגדרת מכונה כצרכן של שידור מרובה כתובות עם זמן אחזור נמוך במיוחד כדי לקבל תעבורת נתונים של Multicast בממשקי רשת של ULL, צריך לבצע את הפעולות הבאות:
כדי לבצע אופטימיזציה נוספת של הביצועים, מומלץ לפעול לפי ההוראות במאמרים עבודה עם Onload או עבודה עם DPDK.

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

יצירת מופע 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 unicast, צריך להגדיר ניתוב מדיניות מבוסס-מקור במערכת ההפעלה של האורח. ההגדרה הזו מבטיחה שחבילות יוצאות יעברו דרך הממשק הנכון, ומונעת ניתוב אסימטרי שבו התנועה נכנסת לממשק אחד אבל מנסה לצאת דרך nic0.

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

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

בקטע הזה מוסבר איך להגדיר מופע 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.

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

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

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

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

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

פקודות לדוגמה לבדיקת קישוריות מולטיקאסט של 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 שציינתם

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

  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 או DPDK לביצוע אופטימיזציה של הביצועים, אפשר לעיין במאמרים עבודה עם Onload ועבודה עם DPDK.
  • כדי לסנכרן את שעון המערכת של המופע עם השעון של כרטיס ה-NIC הפיזי של שרת המארח, אפשר לעיין במאמר בנושא הגדרת זמן מדויק.