יצירת מכונות של Compute Engine עם ULL
בדף הזה מוסבר איך ליצור מופעים של Compute Engine עם זמן אחזור נמוך במיוחד (ULL) באמצעות סוגי מכונות U4P או U4C ממשפחת המכונות U4.
סקירה כללית של תהליך הגדרת התשתית של ULL Solution
לפני שמתחילים
לפני שיוצרים מכונות וירטואליות עם 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). איך מקצים תפקידים
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 בשידור יחיד ובשידור מרובה:
| שלב | תיאור |
|---|---|
| יצירת מכונה של ULL | יוצרים מכונה באמצעות סוג מכונה U4P או U4C ומחברים את ממשקי הרשת שלה לרשת VPC למטרות כלליות ולרשת VPC עם ULL. אם אתם מתכננים להשתמש במופע כצרכן של שידור מרובה משתתפים, צריך להגדיר את הדגל igmp-query לערך IGMP_QUERY_V2. |
הגדרת ניתוב לממשקי nic0 שאינם מיועדים לתעבורת נתונים מסוג unicast של 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-oot-gve. מערכות הפעלה שנתמכות בסוגי מכונות 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.
דוגמה להגדרת ניתוב מדיניות מופיעה במאמר הגדרת ניתוב מדיניות במדריך הגדרת ניתוב לממשק רשת נוסף.
הגדרת מופע כצרכן של שידור מרובה כתובות עם השהיה נמוכה מאוד
בקטע הזה מוסבר איך להגדיר מופע ULL קיים כצרכן מולטיקאסט.
הפעלת שאילתת IGMP במכונת ULL קיימת
אם לא הפעלתם את IGMP כשנוצר המופע, תוכלו להפעיל אותו במופע הקיים שלכם כמו שמתואר בקטע הזה.
gcloud
כדי להפעיל שאילתת IGMP במכונת ULL קיימת, משתמשים בפקודה compute instances network-interfaces update.
חוזרים על הפקודה הבאה לכל ממשק רשת שרוצים לקבל בו תעבורת נתונים של Multicast.
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 במסמכי התיעוד של ליבת לינוקס.
הגדלת הגודל של שטח האחסון הזמני של הדרייבר ברשת
בקטע הזה מוסבר איך להגדיל את הגודל של מאגר הנתונים הזמני של מנהל התקן הרשת במופע.
לצרכני multicast שמקבלים רמות גבוהות של תעבורה, מומלץ להגדיל את גודל שטח האחסון הזמני של טבעת מנהל ההתקן של הרשת לערך של 2048 כדי למנוע אובדן מנות. צריך לעשות את זה לכל ממשק רשת שמקבל תנועת מולטיקאסט.
בדוגמאות הבאות של פקודות, מוגדרים nic1 ו-nic2:
sudo ethtool -G eth1 rx 2048 tx 2048 sudo ethtool -G eth2 rx 2048 tx 2048
דוגמאות לפקודות לבדיקת קישוריות של שידור מרובה משתתפים ב-ULL
בקטע הזה מופיעות פקודות לדוגמה לבדיקת תעבורת multicast בלי להפעיל עומס עבודה של אפליקציה באמצעות כלי iperf. כדי לבצע את השלבים בקטע הזה, צריך להשלים את הגדרת ה-Multicast שמתוארת במאמר סקירה כללית של הגדרת פתרון ULL.
שליחת תנועת Multicast של ULL ממפיק Multicast
מתחברים למופע באמצעות SSH.
מתקינים את
iperfאם עוד לא עשיתם זאת. iperf3לא תומך בשידור מרובה משתתפים. הפקודה הבאה משתמשת ב-iperf, שמתקין אתiperf2.sudo yum install iperf
כדי לשלוח תעבורת נתונים של Multicast לכתובת ה-IP של קבוצת ה-Multicast, מריצים את הפקודה הבאה:
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
מתחברים למופע באמצעות 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 או DPDK לביצוע אופטימיזציה של הביצועים, אפשר לעיין במאמרים עבודה עם Onload ועבודה עם DPDK.
- כדי לסנכרן את שעון המערכת של המופע עם השעון של כרטיס ה-NIC הפיזי של שרת המארח, אפשר לעיין במאמר בנושא הגדרת שעה מדויקת.