יצירת מכונות של 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, צריך לבצע את הפעולות הבאות:
|
בנוסף, אפשר להשתמש בפקודות לדוגמה בדף הזה כדי לבדוק את הקישוריות של שידור מרובה משתתפים.
יצירת מופע 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 במערכת ההפעלה של האורח במופע, מבצעים את הפעולות הבאות:
מתחברים למכונה באמצעות SSH.
מריצים את הפקודה הבאה ומזהים את שמות המכשירים של ממשקי הרשת שרוצים לקבל תנועת מולטיקאסט.
sudo ifconfig
לכל ממשק רשת רלוונטי, מריצים את הפקודה הבאה כדי לכפות 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 ממפיק שידורים מרובים
מתחברים למכונה באמצעות SSH.
מתקינים את
iperfאם עדיין לא התקנתם אותו. iperf3לא תומך בשידור מרובה משתתפים. הפקודה הבאה משתמשת ב-iperf, שמתקין אתiperf2.sudo yum install iperf
כדי לשלוח תנועת נתונים של שידור מרובה משתתפים לכתובת ה-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 מצרכן שידורים מרובים
מתחברים למכונה באמצעות SSH.
מתקינים את
iperfאם עדיין לא התקנתם אותו.sudo yum install iperf
כדי להצטרף לקבוצת מולטיקאסט ולתעד ביומן את התנועה שמתקבלת, מריצים את הפקודה הבאה:
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
בממשקי הרשת של ULL במופע, ethtool מציג את הסטטוס של קישור היציאה הפיזית (up/down) ואת מהירויות הקישור הפיזי.
כדי לבדוק את הסטטוס של הקישור הפיזי ואת המהירות של ממשק רשת ULL, מריצים את הפקודה הבאה:
sudo ethtool NIC
מחליפים את NIC בשם של ממשק הרשת שהוקצה על ידי מערכת ההפעלה של האורח, כמו ens8f0 או ens48f0.
המאמרים הבאים
- מידע כללי על פתרון בעיות שקשורות לביצועי הרשת במופעי Bare Metal זמין במאמר פתרון בעיות שקשורות לביצועי הרשת במאמרי העזרה של Compute Engine. לדוגמה, אפשר להשבית את מצבי השינה של המעבד כדי להשיג ביצועים מלאים של רוחב הפס ברשת.
- במאמר עבודה עם Onload מוסבר איך מפעילים סקר פעיל ובודקים את התכונות של Onload במכונות מחשוב עם ULL.
- כדי לסנכרן את שעון המערכת של המופע עם השעון של כרטיס ה-NIC הפיזי של שרת המארח, אפשר לעיין במאמר בנושא הגדרת זמן מדויק.