ב- Google Cloud, אפשר לשלב מכשירי צד שלישי בצורה זמינה מאוד, עם יכולת הרחבה. כדי לעשות את זה, מגדירים נתיב סטטי ומגדירים את הדילוג הבא שלו ל Google Cloud מאזן עומסי הרשת הפנימי להעברת סיגנל ללא שינוי. כך מאזן העומסים יכול לאזן את העומס של תעבורת נתונים עבור קידומת יעד למאגר של מכשירי VM של צד שלישי שנבדקו לגבי תקינות.
במדריך הזה אנחנו משתמשים בדוגמה כדי להסביר איך להגדיר מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי כנקודת מעבר הבאה. לפני שתקראו את המדריך הזה, כדאי שתכירו את המושגים הבאים:
- מושגים שקשורים למאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי
- מאזני עומסי רשת פנימיים להעברת סיגנל ללא שינוי כנקודות קפיצה הבאות
הרשאות
כדי לפעול לפי המדריך הזה, צריך ליצור מופעים ולשנות רשת בפרויקט. צריכות להיות לכם הרשאות בעלים או עריכה בפרויקט, או שצריכים להיות לכם כל תפקידי ה-IAM הבאים ב-Compute Engine:
| משימה | התפקיד הנדרש |
|---|---|
| יצירת רשתות, רשתות משנה ורכיבים של מאזן עומסים | אדמין רשתות |
| הוספה והסרה של כללים לחומת האש | אדמין לענייני אבטחה |
| יצירת מופעים | אדמין מכונות של Compute |
מידע נוסף זמין במדריכים הבאים:
הגדרת מאזנים פנימיים של עומסי רשת להעברת סיגנל ללא שינוי כנקודות קפיצה הבאות עם קצוות עורפיים משותפים
במדריך הזה מוסבר איך להשתמש במאזן עומסי רשת פנימי מסוג Network Load Balancer כנקודת המעבר הבאה במסלול סטטי, כדי לשלב מכשירים וירטואליים עם יכולת הרחבה.
הפתרון שמתואר במדריך הזה יוצר מכונות וירטואליות של מכשירים שמריצות Debian Linux. המכונות הווירטואליות בדוגמה לא מבצעות סינון חבילות, אבל אפשר להוסיף את הפונקציונליות הזו על ידי שינוי הגדרות הרשת בדוגמה הזו או על ידי שימוש בתוכנה אחרת לסינון חבילות או לניתוב.
בשלבים שבקטע הזה מוסבר איך להגדיר את המשאבים הבאים:
- דוגמה לרשתות VPC ולרשתות משנה בהתאמה אישית
- Google Cloud כללי חומת אש שמאפשרים חיבורים נכנסים למכונות וירטואליות (VM) של מכשירי קצה (backend)
- מסלולים סטטיים
- שתי מכונות וירטואליות של לקוחות לבדיקת חיבורים
- הרכיבים הבאים של מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי:
- מכונות וירטואליות בבק-אנד בקבוצת מופעי מכונה מנוהלים (MIG)
- בדיקת תקינות של מכונות ה-VM של ה-backend
- שירות פנימי לקצה העורפי באזור
us-west1לניהול חלוקת החיבורים בין המכונות הווירטואליות בקצה העורפי - כלל העברה פנימי וכתובת IP פנימית לקצה הקדמי של מאזן העומסים
בדוגמה הזו מוצג איזון עומסים לכמה כרטיסי רשת בקצה העורפי, כפי שמתואר במאמר איזון עומסים לכמה כרטיסי רשת.
הטופולוגיה נראית כך:
בתרשים מוצגים חלק מהמשאבים שנוצרו בדוגמה:
- מופעי אפליקציות מאחורי מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי (
fr-ilb1, בדוגמה הזו). למכונות של האפליקציה יש רק כתובות IP פנימיות. - בכל מופע של אפליקציה מופעל הדגל
can-ip-forward. בלי הדגל הזה, מכונת VM ב-Compute Engine יכולה להעביר מנה רק אם כתובת ה-IP של המקור של המנה תואמת לכתובת ה-IP הפנימית של מכונת ה-VM, לכתובת IP מטווח של כתובות IP של כינוי או לכתובת IP של כלל העברה שמפנה למכונת ה-VM. הדגלcan-ip-forwardמשנה את ההתנהגות הזו כך שהמכונה הווירטואלית יכולה לשדר חבילות עם כל כתובת IP של מקור. - מסלול סטטי עם יעד
10.50.1.0/24והצעד הבא מוגדר לכלל ההעברה של מאזן העומסים,fr-ilb1.
התרשים מציג גם את זרימת התנועה:
- ברשת ה-VPC
testingיש נתיב סטטי לתנועה שמיועדת לרשת המשנה10.50.1.0/24. המסלול הזה מנתב את התעבורה למאזן העומסים. - מאזן העומסים מעביר את התנועה לאחד מהמופעים של האפליקציה על סמך זיקת הסשן שהוגדרה. (הצמדת סשן משפיעה רק על תנועת TCP).
תרחישי שימוש נוספים מפורטים במאמר מאזני עומסים פנימיים מסוג TCP/UDP כנקודות קפיצה הבאות.
הגדרת הרשתות, האזור ורשתות המשנה
בדוגמה הזו נעשה שימוש ברשתות VPC, באזור ובתת-רשתות הבאים:
רשתות: בדוגמה הזו נדרשות שתי רשתות, שלכל אחת מהן יש לפחות רשת משנה אחת. לכל מכונה וירטואלית של מכשיר צד שלישי בקצה העורפי צריכים להיות לפחות שני ממשקי רשת, אחד בכל רשת VPC. הרשתות בדוגמה הזו הן רשתות VPC במצב מותאם אישית בשמות
testingו-production. הרשתtestingבדוגמה הזו מכילה את הלקוח ואת מאזן העומסים. הרשתproductionמכילה את מכונת ה-VM של יעד ההעברה.אזור: רשתות המשנה ממוקמות באזור
us-west1. תת-הרשתות צריכות להיות באותו אזור כי מכונות וירטואליות הן משאבים אזוריים.תת-רשתות: בתת-הרשתות
testing-subnetו-production-subnetנעשה שימוש בטווחים של כתובות ה-IP הראשיות10.30.1.0/24ו-10.50.1.0/24, בהתאמה.
כדי ליצור את הרשתות ורשתות המשנה לדוגמה, פועלים לפי השלבים הבאים.
המסוף
יוצרים את הרשת testing ואת testing-subnet:
נכנסים לדף VPC networks במסוף Google Cloud .
לוחצים על יצירת רשת VPC.
מזינים שם של
testing.בקטע Subnets (רשתות משנה):
- מגדירים את מצב יצירת רשתות משנה לבהתאמה אישית.
- בקטע New subnet (רשת משנה חדשה), מזינים את הפרטים הבאים:
- Name (שם):
testing-subnet - אזור:
us-west1 - טווח כתובות IP:
10.30.1.0/24 - לוחצים על סיום.
- Name (שם):
לוחצים על יצירה.
יוצרים את הרשת production ואת production-subnet:
נכנסים לדף VPC networks במסוף Google Cloud .
לוחצים על יצירת רשת VPC.
מזינים שם של
production.בקטע Subnets (רשתות משנה):
- מגדירים את מצב יצירת רשתות משנה לבהתאמה אישית.
- בקטע New subnet (רשת משנה חדשה), מזינים את הפרטים הבאים:
- Name (שם):
production-subnet - אזור:
us-west1 - טווח כתובות IP:
10.50.1.0/24 - לוחצים על סיום.
- Name (שם):
לוחצים על יצירה.
gcloud
יוצרים את רשתות ה-VPC במצב מותאם אישית:
gcloud compute networks create testing --subnet-mode=custom
gcloud compute networks create production --subnet-mode=custom
יוצרים רשתות משנה ברשתות
testingו-productionבאזורus-west1:gcloud compute networks subnets create testing-subnet \ --network=testing \ --range=10.30.1.0/24 \ --region=us-west1gcloud compute networks subnets create production-subnet \ --network=production \ --range=10.50.1.0/24 \ --region=us-west1
הגדרת כללים לחומת אש
בדוגמה הזו נעשה שימוש בכללים הבאים של חומת האש:
fw-allow-testing-from-both: כלל תעבורה נכנסת, שחל על כל היעדים ברשתtesting. הכלל הזה מאפשר תנועה ממקורות בטווחים של כתובות ה-IP10.30.1.0/24ו-10.50.1.0/24. שני הטווחים האלה כוללים את כתובות ה-IP הפנימיות העיקריות של מכונות וירטואליות בשתי הרשתות.
fw-allow-production-from-both: כלל תעבורה נכנסת, שחל על כל היעדים ברשתproduction. הכלל הזה מאפשר תנועה ממקורות בטווחים של כתובות ה-IP10.30.1.0/24ו-10.50.1.0/24. שני הטווחים האלה כוללים את כתובות ה-IP הפנימיות העיקריות של מכונות וירטואליות בשתי הרשתות.
fw-allow-testing-ssh: כלל תעבורה נכנסת שחל על המכונות הווירטואליות ברשת ה-VPCtesting. הכלל הזה מאפשר קישוריות SSH נכנסת ביציאת TCP22מכל כתובת. אפשר לבחור טווח IP של מקור מגביל יותר לכלל הזה. לדוגמה, אפשר לציין את טווחי ה-IP של המערכות שמהן אתם מתכננים להפעיל סשנים של SSH. בדוגמה הזו נעשה שימוש בתג היעדallow-sshכדי לזהות את המכונות הווירטואליות שכלל חומת האש חל עליהן.
fw-allow-production-ssh: כלל תעבורה נכנסת שחל על המכונות הווירטואליות ברשת ה-VPCproduction. הכלל הזה מאפשר קישוריות SSH נכנסת ביציאת TCP22מכל כתובת. בדומה לfw-allow-testing-ssh, אפשר לבחור לכלל הזה טווח כתובות IP של מקור שמגביל יותר.
fw-allow-health-check: כלל כניסה למכונות וירטואליות של מכשיר צד שלישי שעוברות איזון עומסים. הכלל הזה מאפשר תנועה ממערכות בדיקת תקינות (Google Cloud ,130.211.0.0/22ו-35.191.0.0/16). בדוגמה הזו נעשה שימוש בתג היעדallow-health-checkכדי לזהות את המופעים שאליהם הכלל צריך לחול.
fw-allow-production-health-check: כלל כניסה למכונות וירטואליות של מכשיר צד שלישי שעוברות איזון עומסים. הכלל הזה מאפשר תנועה ממערכות בדיקת תקינות (Google Cloud ,130.211.0.0/22ו-35.191.0.0/16). בדוגמה הזו נעשה שימוש בתג היעדallow-health-checkכדי לזהות את המופעים שאליהם הכלל צריך לחול.
בלי כללי חומת האש האלה, הכלל default deny ingress חוסם תנועה נכנסת למופעי ה-Backend. צריך ליצור כלל חומת אש כדי לאפשר בדיקות תקינות מטווח כתובות ה-IP של מערכות הבדיקה Google Cloud . מידע נוסף זמין במאמר בנושא טווחים של כתובות IP של בדיקות.
המסוף
נכנסים לדף Firewall policies במסוף Google Cloud .
לוחצים על יצירת כלל חומת אש ומזינים את הפרטים הבאים כדי ליצור את הכלל שיאפשר למכונות וירטואליות לבדיקה לקבל מנות נתונים מרשתות המשנה של הבדיקה ושל הייצור:
- Name (שם):
fw-allow-testing-from-both - רשת:
testing - עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: לאפשר
- יעדים: כל המופעים ברשת
- מסנן מקור: טווחים של IPv4
- טווחים של כתובות IPv4 של המקור:
10.30.1.0/24,10.50.1.0/24 - Protocols and ports: Allow all
- Name (שם):
לוחצים על יצירה.
לוחצים על יצירת כלל חומת אש ומזינים את הפרטים הבאים כדי ליצור את הכלל שיאפשר למכונות וירטואליות בסביבת הייצור לקבל מנות מרשתות המשנה של הבדיקה ושל הייצור:
- Name (שם):
fw-allow-production-from-both - רשת:
production - עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: לאפשר
- יעדים: כל המופעים ברשת
- מסנן מקור: טווחים של IPv4
- טווחים של כתובות IPv4 של המקור:
10.30.1.0/24,10.50.1.0/24 - Protocols and ports: Allow all
- Name (שם):
לוחצים על יצירה.
לוחצים על Create firewall rule (יצירת כלל חומת אש) כדי ליצור את הכלל שיאפשר חיבורי SSH נכנסים בסביבת הבדיקה:
- Name (שם):
fw-allow-testing-ssh - רשת:
testing - עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: לאפשר
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-ssh - מסנן מקור: טווחים של IPv4
- טווחים של כתובות IPv4 של המקור:
0.0.0.0/0 - פרוטוקולים ויציאות: בוחרים באפשרות פרוטוקולים ויציאות שצוינו ומקלידים:
tcp:22
- Name (שם):
לוחצים על יצירה.
לוחצים על יצירת כלל חומת אש כדי ליצור את הכלל שיאפשר חיבורי SSH נכנסים בסביבת הייצור:
- Name (שם):
fw-allow-production-ssh - רשת:
production - עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: לאפשר
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-ssh - מסנן מקור: טווחים של IPv4
- טווחים של כתובות IPv4 של המקור:
0.0.0.0/0 - פרוטוקולים ויציאות: בוחרים באפשרות פרוטוקולים ויציאות שצוינו ומקלידים:
tcp:22
- Name (שם):
לוחצים על יצירה.
לוחצים על יצירת כלל לחומת האש כדי ליצור את הכלל שיאפשרGoogle Cloud בדיקות תקינות בסביבת הבדיקה:
- Name (שם):
fw-allow-health-check - רשת:
testing - עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: לאפשר
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-health-check - מסנן מקור: טווחים של IPv4
- טווחי IPv4 של המקור:
130.211.0.0/22ו-35.191.0.0/16 - פרוטוקולים ויציאות:
tcp
- Name (שם):
לוחצים על יצירה.
לוחצים על יצירת כלל חומת אש כדי ליצור את הכלל שיאפשרGoogle Cloud בדיקות תקינות בסביבת הייצור:
- Name (שם):
fw-allow-production-health-check - רשת:
production - עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: לאפשר
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-health-check - מסנן מקור: טווחים של IPv4
- טווחי IPv4 של המקור:
130.211.0.0/22ו-35.191.0.0/16 - פרוטוקולים ויציאות:
tcp
- Name (שם):
לוחצים על יצירה.
gcloud
יוצרים את כלל חומת האש
fw-allow-testing-subnetכדי לאפשר למכונות הווירטואליות לבדיקה לקבל חבילות נתונים מתת-הרשתותtestingו-production:gcloud compute firewall-rules create fw-allow-testing-from-both \ --network=testing \ --action=allow \ --direction=ingress \ --source-ranges=10.30.1.0/24,10.50.1.0/24 \ --rules=allיוצרים את כלל חומת האש
fw-allow-production-subnetכדי לאפשר למכונות וירטואליות של סביבת הייצור לקבל מנות נתונים מתת-הרשתותtestingו-production:gcloud compute firewall-rules create fw-allow-production-from-both \ --network=production \ --action=allow \ --direction=ingress \ --source-ranges=10.30.1.0/24,10.50.1.0/24 \ --rules=allיוצרים את כלל חומת האש
fw-allow-testing-sshכדי לאפשר קישוריות SSH למכונות וירטואליות עם תג הרשתallow-ssh. אם לא מציינים אתsource-ranges,Google Cloud מפרש את הכלל כאילו הוא מתייחס לכל מקור.gcloud compute firewall-rules create fw-allow-testing-ssh \ --network=testing \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22יוצרים את כלל חומת האש
fw-allow-production-sshכדי לאפשר קישוריות SSH למכונות וירטואליות עם תג הרשתallow-ssh.gcloud compute firewall-rules create fw-allow-production-ssh \ --network=production \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22יוצרים את הכלל
fw-allow-health-checkכדי לאפשר Google Cloudבדיקות תקינות למכונות וירטואליות של מכשירי צד שלישי ברשתtesting.gcloud compute firewall-rules create fw-allow-testing-health-check \ --network=testing \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcpיוצרים את כלל חומת האש
fw-allow-production-health-checkכדי לאפשר בדיקות תקינות של מכונות וירטואליות של מכשירי צד שלישי ברשתproduction.Google Cloudgcloud compute firewall-rules create fw-allow-production-health-check \ --network=production \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp
יצירת מכשירים וירטואליים של צד שלישי
בדוגמה הבאה מוסבר איך ליצור תבנית של הגדרות מכונה וקבוצה מנוהלת של מופעי מכונה אזוריים עם יותר מממשק רשת אחד. קבוצת המופעים הזו משמשת כמכשיר וירטואלי של צד שלישי בדוגמה הזו.
המסוף
חובה להשתמש ב-gcloud בשלב הזה כי צריך ליצור תבנית של מופע עם יותר מממשק רשת אחד. בשלב הזה, Google Cloud המסוף
לא תומך ביצירת תבניות של מכונות וירטואליות עם יותר מממשק רשת אחד.
gcloud
יוצרים קובץ מקומי בשם
config.shומכניסים את התוכן הבא:#!/bin/bash # Enable IP forwarding: echo 1 > /proc/sys/net/ipv4/ip_forward echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/20-example.conf # Read VM network configuration: md_vm="http://metadata.google.internal/computeMetadata/v1/instance/" md_net="$md_vm/network-interfaces" nic0_gw="$(curl $md_net/0/gateway -H "Metadata-Flavor:Google" )" nic0_mask="$(curl $md_net/0/subnetmask -H "Metadata-Flavor:Google")" nic0_addr="$(curl $md_net/0/ip -H "Metadata-Flavor:Google")" nic0_id="$(ip addr show | grep $nic0_addr | awk '{print $NF}')" nic1_gw="$(curl $md_net/1/gateway -H "Metadata-Flavor:Google")" nic1_mask="$(curl $md_net/1/subnetmask -H "Metadata-Flavor:Google")" nic1_addr="$(curl $md_net/1/ip -H "Metadata-Flavor:Google")" nic1_id="$(ip addr show | grep $nic1_addr | awk '{print $NF}')" # Source based policy routing for nic1 echo "100 rt-nic1" >> /etc/iproute2/rt_tables sudo ip rule add pri 32000 from $nic1_gw/$nic1_mask table rt-nic1 sleep 1 sudo ip route add 35.191.0.0/16 via $nic1_gw dev $nic1_id table rt-nic1 sudo ip route add 130.211.0.0/22 via $nic1_gw dev $nic1_id table rt-nic1 # Use a web server to pass the health check for this example. # You should use a more complete test in production. sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl echo "Example web page to pass health check" | \ tee /var/www/html/index.html sudo systemctl restart apache2
יוצרים תבנית של הגדרות מכונה למכשירים וירטואליים של צד שלישי. תבנית של הגדרות מכונה חייבת לכלול את הדגל
--can-ip-forwardכדי שמופעי VM שנוצרו מהתבנית יוכלו להעביר מנות ממופעים אחרים ברשתותtestingו-production.gcloud compute instance-templates create third-party-template-multinic \ --region=us-west1 \ --network-interface subnet=testing-subnet,address="" \ --network-interface subnet=production-subnet \ --tags=allow-ssh,allow-health-check,my-network-tag \ --image-family=debian-12 \ --image-project=debian-cloud \ --can-ip-forward \ --metadata-from-file=startup-script="config.sh"יוצרים קבוצה של מופעי מכונה מנוהלים עבור מכשירים וירטואליים של צד שלישי. הפקודה הזו יוצרת קבוצת מופעי מכונה מנוהלים אזורית, שאפשר להגדיר לה קנה מידה אוטומטי, באזור
us-west1.gcloud compute instance-groups managed create third-party-instance-group \ --region=us-west1 \ --template=third-party-template-multinic \ --size=3
יצירת משאבים לאיזון עומסים
בשלבים האלה מוגדרים כל הרכיבים הפנימיים של מאזן עומסי רשת מסוג העברת סיגנל ללא שינוי, החל מבדיקת תקינות ושירות לקצה העורפי, ולאחר מכן הרכיבים של הקצה הקדמי:
בדיקת תקינות. בדוגמה הזו, בדיקת תקינות ה-HTTP בודקת אם יש תגובת HTTP
200(OK). מידע נוסף זמין בקטע בדיקת תקינות.שירות לקצה העורפי. למרות שבשירות הקצה העורפי בדוגמה הזו מצוין פרוטוקול TCP, כשמאזן העומסים הוא הצעד הבא במסלול,Google Cloud הוא מעביר תנועה לכל הפרוטוקולים (TCP, UDP ו-ICMP).
כלל העברה. למרות שכלל ההעברה הזה מציין יציאת TCP 80, כשמאזן העומסים הוא ה-Next Hop של מסלול, תעבורת נתונים בכל יציאת TCP או UDP נשלחת אל ה-Backends של מאזן העומסים.
כתובת IP פנימית. בדוגמה הזו, כתובת ה-IP הפנימית שמוגדרת לכלל ההעברה היא
10.30.1.99.
המסוף
התחלת ההגדרה
נכנסים לדף Load balancing במסוף Google Cloud .
- לוחצים על Create load balancer (יצירת מאזן עומסים).
- בקטע Type of load balancer (סוג מאזן העומסים), בוחרים באפשרות Network Load Balancer (TCP/UDP/SSL) (מאזן עומסים ברשת (TCP/UDP/SSL)) ולוחצים על Next (הבא).
- בקטע Proxy or passthrough (פרוקסי או העברה), בוחרים באפשרות Passthrough load balancer (מאזן עומסים להעברה) ולוחצים על Next (הבא).
- בקטע גלוי לכולם או פנימי, בוחרים באפשרות פנימי ולוחצים על הבא.
- לוחצים על Configure (הגדרה).
יצירת מאזן העומסים הראשון
- בשדה Load Balancer name (שם מאזן העומסים), מזינים
ilb1. - ברשימה Region בוחרים באזור
us-west1. - ברשימה Network בוחרים באפשרות
testing. - לוחצים על Backend configuration ומבצעים את הפעולות הבאות:
- ברשימה בדיקת תקינות, לוחצים על יצירת בדיקת תקינות ומזינים את הפרטים הבאים:
- Name (שם):
hc-http-80 - Protocol: HTTP
- יציאה:
80 - פרוטוקול שרת proxy: NONE
- בקשה:
/שימו לב: כשמשתמשים במסוף Google Cloud כדי ליצור מאזן עומסים, בדיקת התקינות היא גלובלית. אם רוצים ליצור בדיקת תקינות אזורית, משתמשים ב-gcloudאו ב-API.
- Name (שם):
- לוחצים על יצירה.
- בקטע New backend (שרת קצה עורפי חדש), בוחרים את קבוצת המופעים
third-party-instance-groupולוחצים על Done (סיום). - ברשימה Session affinity בוחרים באפשרות Client IP.
- לפני שממשיכים, מוודאים שלצד Backend configuration מופיע סימן אישור כחול. אם לא, צריך לבדוק את השלב הזה.
- ברשימה בדיקת תקינות, לוחצים על יצירת בדיקת תקינות ומזינים את הפרטים הבאים:
- לוחצים על Frontend configuration. בקטע New Frontend IP and port מבצעים את השינויים הבאים:
- Name (שם):
fr-ilb1 - Subnetwork:
testing-subnet - בקטע כתובת IP פנימית, בוחרים באפשרות Reserve a static internal IP address, מזינים את הפרטים הבאים ולוחצים על Reserve:
- Name (שם):
ip-ilb - כתובת IP סטטית: אני רוצה לבחור
- כתובת IP מותאמת אישית:
10.30.1.99
- Name (שם):
- יציאות: בוחרים באפשרות יחיד ומזינים
80בשדה מספר היציאה. חשוב לזכור שהבחירה של פרוטוקול ויציאה למאזן העומסים לא מגבילה את הפרוטוקולים והיציאות שמשמשים כשהמאזן הוא הניתור הבא של מסלול. - לפני שממשיכים, מוודאים שלצד Frontend configuration מופיע סימן אישור כחול. אם לא, צריך לבדוק את השלב הזה.
- Name (שם):
- לוחצים על Review and finalize. כדאי לבדוק שוב את ההגדרות.
- לוחצים על יצירה.
התחלת ההגדרה
נכנסים לדף Load balancing במסוף Google Cloud .
- לוחצים על Create load balancer (יצירת מאזן עומסים).
- בקטע Type of load balancer (סוג מאזן העומסים), בוחרים באפשרות Network Load Balancer (TCP/UDP/SSL) (מאזן עומסים ברשת (TCP/UDP/SSL)) ולוחצים על Next (הבא).
- בקטע Proxy or passthrough (פרוקסי או העברה), בוחרים באפשרות Passthrough load balancer (מאזן עומסים להעברה) ולוחצים על Next (הבא).
- בקטע גלוי לכולם או פנימי, בוחרים באפשרות פנימי ולוחצים על הבא.
- לוחצים על Configure (הגדרה).
יצירת מאזן העומסים השני
- מגדירים את Name לערך
ilb2. - מגדירים את Region לערך
us-west1. - מגדירים את Network ל-
production. - לוחצים על Backend configuration ומבצעים את השינויים הבאים:
- בקטע פריט חדש של קצה עורפי, בוחרים את קבוצת המופעים
third-party-instance-groupולוחצים על סיום. - בקטע Health check (בדיקת תקינות), בוחרים באפשרות
hc-http-80. - בקטע Session affinity (זיקה לסשן), בוחרים באפשרות Client IP (כתובת IP של לקוח).
- לפני שממשיכים, מוודאים שלצד Backend configuration מופיע סימן אישור כחול. אם לא, צריך לבדוק את השלב הזה.
- בקטע פריט חדש של קצה עורפי, בוחרים את קבוצת המופעים
- לוחצים על Frontend configuration. בקטע New Frontend IP and port מבצעים את השינויים הבאים:
- Name (שם):
fr-ilb2 - Subnetwork:
production-subnet - בקטע כתובת IP פנימית, בוחרים באפשרות Reserve a static internal IP address, מזינים את הפרטים הבאים ולוחצים על Reserve:
- Name (שם):
ip-ilb2 - כתובת IP סטטית: אני רוצה לבחור
- כתובת IP מותאמת אישית:
10.50.1.99
- Name (שם):
- יציאות: בוחרים באפשרות יחיד ומזינים
80בשדה מספר היציאה. חשוב לזכור שהבחירה של פרוטוקול ויציאה למאזן העומסים לא מגבילה את הפרוטוקולים והיציאות שמשמשים כשהמאזן הוא הניתור הבא של מסלול. - לפני שממשיכים, מוודאים שלצד Frontend configuration מופיע סימן אישור כחול. אם לא, צריך לבדוק את השלב הזה.
- Name (שם):
- לוחצים על Review and finalize. כדאי לבדוק שוב את ההגדרות.
- לוחצים על יצירה.
gcloud
יוצרים בדיקת תקינות חדשה של HTTP כדי לבדוק את קישוריות ה-TCP למכונות הווירטואליות בפורט 80.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80יוצרים שני שירותים פנימיים לקצה עורפי באזור
us-west1.gcloud compute backend-services create ilb1 \ --load-balancing-scheme=internal \ --health-checks-region=us-west1 \ --health-checks=hc-http-80 \ --region=us-west1 \ --network=testing \ --session-affinity=CLIENT_IPgcloud compute backend-services create ilb2 \ --load-balancing-scheme=internal \ --health-checks-region=us-west1 \ --health-checks=hc-http-80 \ --region=us-west1 \ --network=production \ --session-affinity=CLIENT_IPמוסיפים את קבוצות המכונות שמכילות את המכשירים הווירטואליים של הצד השלישי בתור קצה עורפי בשירותים לקצה העורפי.
gcloud compute backend-services add-backend ilb1 \ --instance-group=third-party-instance-group \ --instance-group-region=us-west1 \ --region=us-west1gcloud compute backend-services add-backend ilb2 \ --instance-group=third-party-instance-group \ --instance-group-region=us-west1 \ --region=us-west1יוצרים את כללי ההעברה הפנימיים ומקשרים אותם לשירותי ה-Backend כדי להשלים את ההגדרה של מאזן העומסים. חשוב לזכור שהפרוטוקול (TCP) והיציאה (80) של מאזני העומסים לא מגבילים את היציאות והפרוטוקולים שמועברים למופעי ה-Backend (הציוד הווירטואלי של צד שלישי) כשמשתמשים במאזני העומסים כנקודות הקפיצה הבאות של המסלולים.
gcloud compute forwarding-rules create fr-ilb1 \ --load-balancing-scheme=internal \ --ports=80 \ --network=testing \ --subnet=testing-subnet \ --region=us-west1 \ --backend-service=ilb1 \ --address=10.30.1.99gcloud compute forwarding-rules create fr-ilb2 \ --load-balancing-scheme=internal \ --ports=80 \ --network=production \ --subnet=production-subnet \ --region=us-west1 \ --backend-service=ilb2 \ --address=10.50.1.99
יצירת מסלולים סטטיים שמגדירים את מאזני העומסים כנקודות הקפיצה הבאות
יוצרים שני נתיבים סטטיים שמשתמשים במאזן עומסים של קפיצה הבאה.
המסוף
יצירת המסלול הראשון
נכנסים לדף Routes במסוף Google Cloud .
לוחצים על יצירת מסלול.
בשדה שם של הנתיב, מזינים
ilb-nhop-dest-10-50-1.בוחרים את רשת
testing.בשדה טווח כתובות ה-IP של היעד, מזינים
10.50.1.0/24.בשדה Instance tags, מזינים
my-network-tag.בשדה הניתוב הבא של המסלול, בוחרים באפשרות ציון כלל העברה של מאזן עומסים פנימי מסוג TCP/UDP.
כדי לציין את כתובת ה-IP של מאזן העומסים כנקודת הקפיצה הבאה, משתמשים ב-CLI של gcloud או ב-API.
מציינים את השם של כלל ההעברה. בוחרים שם לכלל ההעברה
fr-ilb1.לוחצים על יצירה.
יצירת המסלול השני
- לוחצים על יצירת מסלול.
- בשדה שם של הנתיב, מזינים
ilb-nhop-dest-10-30-1. - בוחרים את רשת
testing. - בשדה טווח כתובות ה-IP של היעד, מזינים
10.30.1.0/24. בשדה הניתוב הבא של המסלול, בוחרים באפשרות ציון כלל העברה של מאזן עומסים פנימי מסוג TCP/UDP.
כדי לציין את כתובת ה-IP של מאזן העומסים כנקודת הקפיצה הבאה, משתמשים ב-CLI של gcloud או ב-API.
בוחרים את השם של כלל ההעברה
fr-ilb2.לוחצים על יצירה.
gcloud
יוצרים מסלולים סטטיים עם קפיצה הבאה שמוגדרת לכלל ההעברה של כל מאזן עומסים, וכל טווח יעד מוגדר בהתאם.
בדגל --next-hop-ilb, אפשר לציין שם של כלל העברה או כתובת IP של כלל העברה. כתובת ה-IP של כלל העברה של קפיצה הבאה יכולה להיות באותה רשת VPC שמכילה את המסלול או ברשת VPC שכנה ומקושרת. מידע נוסף זמין במאמר פרויקט ורשת של הניתוב הבא.
בדוגמה, המסלול הראשון משתמש בכתובת ה-IP 10.30.1.99, והמסלול השני משתמש בשם כלל ההעברה fr-ilb12.
אפשר לציין באופן אופציונלי תגים של מופעים במסלול.
אפשר להחיל את המסלול על מכונות וירטואליות ספציפיות אם מציינים תגי רשת במסלול. אם לא מציינים תג רשת, המסלול חל על כל מכונות ה-VM ברשת ה-VPC. בדוגמה הזו, המסלול משתמש ב-my-network-tag לתג הרשת של המסלול.
gcloud compute routes create ilb-nhop-dest-10-50-1 \
--network=testing \
--destination-range=10.50.1.0/24 \
--next-hop-ilb=10.30.1.99 \
--tags=my-network-tag
gcloud compute routes create ilb-nhop-dest-10-30-1 \
--network=production \
--destination-range=10.30.1.0/24 \
--next-hop-ilb=fr-ilb2 \
--next-hop-ilb-region=us-west1
יצירת מופע של מכונה וירטואלית testing
בדוגמה הזו נוצרת מכונה וירטואלית עם כתובת ה-IP 10.30.1.100 ב-testing-subnet (10.30.1.0/24) ברשת ה-VPC testing.
gcloud
יוצרים את
testing-vmעל ידי הפעלת הפקודה הבאה.gcloud compute instances create testing-vm \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,my-network-tag \ --subnet=testing-subnet \ --private-network-ip 10.30.1.100 \ --metadata=startup-script='#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sudo systemctl restart apache2'
יצירת מופע של מכונה וירטואלית production
בדוגמה הזו נוצרת מכונה וירטואלית עם כתובת ה-IP 10.50.1.100 ב-production-subnet (10.50.1.0/24) ברשת ה-VPC production.
gcloud
production-vm יכול להיות בכל אזור באותו אזור כמו מאזן העומסים, והוא יכול להשתמש בכל רשת משנה באותו אזור. בדוגמה הזו, השעה production-vm היא באזור הזמן us-west1-a.
יוצרים את
production-vmעל ידי הפעלת הפקודה הבאה.gcloud compute instances create production-vm \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=production-subnet \ --private-network-ip 10.50.1.100 \ --metadata=startup-script='#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sudo systemctl restart apache2'
בדיקת איזון עומסים בפריסה עם כמה כרטיסי NIC
בודקים את תקינות הקצה העורפי של מאזן העומסים.
gcloud compute backend-services get-health ilb1 --region us-west1
gcloud compute backend-services get-health ilb2 --region us-west1
בודקים את הקישוריות מהמכונה הווירטואלית
testing.gcloud compute ssh testing-vm --zone=us-west1-a
curl http://10.50.1.99
exit
בודקים את הקישוריות מהמכונה הווירטואלית
production.gcloud compute ssh production-vm --zone=us-west1-a
curl http://10.30.1.99
exit
הפעלת גיבוב סימטרי
כשמחשבים את הגיבוב שממופה למופע של ה-Backend, מערכתGoogle Cloud מתעלמת מהכיוון של כתובות ה-IP והיציאות. ערך הגיבוב העקבי המחושב של מנות TCP/UDP זהה ללא קשר לכיוון שממנו המנות מגיעות. התהליך הזה נקרא גיבוב סימטרי.
כדי להפעיל את התנהגות הגיבוב הזו במאזני עומסים קיימים מסוג 'העברת סיגנל ללא שינוי', צריך ליצור מחדש את כלל ההעברה ואת המסלול של הנתב הבא.
מידע נוסף זמין במאמר בנושא גיבוב סימטרי.
מחיקה ויצירה מחדש של כללי ההעברה
המסוף
מחיקת כלל ההעברה ויצירת כלל חדש
נכנסים לדף Load balancing במסוף Google Cloud .
לוחצים על מאזן העומסים
be-ilbואז על עריכה.לוחצים על Frontend configuration.
מעבירים את העכבר מעל כלל ההעברה ולוחצים על מחיקה כדי להסיר אותו.
לוחצים על Add frontend IP and port.
בקטע New Frontend IP and port, מבצעים את השינויים הבאים:
- Name (שם):
FORWARDING_RULE_NAME - Subnetwork:
SUBNET_NAME - בקטע כתובת IP פנימית, בוחרים באפשרות
IP_ADDRESS. - יציאות:
PORT_NUMBERאוALL. - לוחצים על סיום.
- לפני שממשיכים, מוודאים שלצד Frontend configuration מופיע סימן אישור כחול. אם לא, צריך לבדוק את השלב הזה.
- Name (שם):
לוחצים על Review and finalize. כדאי לבדוק שוב את ההגדרות.
לוחצים על יצירה.
gcloud
מוחקים את כללי ההעברה הקיימים.
gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \ --region=REGIONיוצרים כללי העברה חלופיים עם אותו שם.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=internal \ --ports=PORT_NUMBER or `ALL` \ --network=NETWORK_NAME \ --subnet=SUBNET_NAME \ --region=REGION \ --backend-service=BACKEND_SERVICE_NAME \ --address=IP_ADDRESS
מתי לא צריך SNAT
כפי שמוצג בדוגמה הקודמת, תרגום כתובות רשת של המקור (SNAT) לא נדרש אם כל התנאים הבאים מתקיימים:
- כלל ההעברה למאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי נוצר ב-22 ביוני 2021 או אחריו.
- הנתיב הסטטי שמפנה לכלל ההעברה נוצר ב-22 ביוני 2021 או אחריו.
- שירות הקצה העורפי של מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי לא משתמש בהגדרה
NONEשל שיוך סשן.
כדי להמיר מסלול קיים של מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי לשימוש בגיבוב סימטרי, פועלים לפי השלבים הבאים:
מוודאים ששירות הקצה העורפי של מאזן עומסי הרשת הפנימי להעברת סיגנל ללא שינוי לא משתמש בהגדרה
NONEsession affinityיוצרים כלל העברה חלופי שמפנה לאותו שירות קצה עורפי. כלל ההעברה החלופי משתמש בכתובת IP אחרת.
יוצרים נתיב סטטי חלופי שמפנה לכלל ההעברה החדש. חשוב לוודא שלמסלול החלופי הזה יש עדיפות גבוהה יותר מהמסלול הקיים.
מוחקים את המסלול הקיים עם העדיפות הנמוכה יותר (שמפנה לכלל ההעברה הקודם), ואז מוחקים את כלל ההעברה הקודם.
הסרת המשאבים
בהגדרות של מאזן העומסים, מסירים את הקצה העורפי משירותי הקצה העורפי.
gcloud compute backend-services remove-backend ilb1 \ --instance-group=third-party-instance-group \ --instance-group-region=us-west1 \ --region=us-west1gcloud compute backend-services remove-backend ilb2 \ --instance-group=third-party-instance-group \ --instance-group-region=us-west1 \ --region=us-west1מחיקת המסלולים.
gcloud compute routes delete ilb-nhop-dest-10-50-1
gcloud compute routes delete ilb-nhop-dest-10-30-1
בהגדרות של איזון העומסים, מוחקים את כללי ההעברה.
gcloud compute forwarding-rules delete fr-ilb1 \ --region=us-west1gcloud compute forwarding-rules delete fr-ilb2 \ --region=us-west1בהגדרות של מאזן העומסים, מוחקים את שירותי הקצה העורפי.
gcloud compute backend-services delete ilb1 \ --region=us-west1gcloud compute backend-services delete ilb2 \ --region=us-west1בהגדרות של מאזן העומסים, מוחקים את בדיקת התקינות.
gcloud compute health-checks delete hc-http-80 \ --region=us-west1אם השתמשתם ב Google Cloud מסוף, בדיקת התקינות היא גלובלית. לכן, הפקודה היא:
gcloud compute health-checks delete hc-http-80 \ --globalמוחקים את קבוצת מופעי המכונה המנוהלים.
gcloud compute instance-groups managed delete third-party-instance-group \ --region=us-west1מוחקים את תבניות המכונות.
gcloud compute instance-templates delete third-party-template
gcloud compute instance-templates delete third-party-template-multinic
מוחקים את מופעי הבדיקה והייצור.
gcloud compute instances delete testing-vm \ --zone=us-west1-agcloud compute instances delete production-vm \ --zone=us-west1-a
המאמרים הבאים
- סקירה כללית על מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי
- מעבר לגיבוי (Failover) למאזני עומסי רשת פנימיים להעברת סיגנל ללא שינוי
- הגדרה של מאזני עומסי רשת פנימיים להעברת סיגנל ללא שינוי עם קצוות עורפיים של קבוצות מכונות וירטואליות
- רישום ביומן ומעקב במאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי
- מאזני עומסי רשת פנימיים להעברת סיגנל ללא שינוי ורשתות מחוברות
- פתרון בעיות במאזני עומסי רשת פנימיים להעברת סיגנל ללא שינוי
- ניקוי ההגדרות של מאזן העומסים