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

1. מבוא

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

מה תלמדו

  • הסבר על היתרונות של שירותים לקצה עורפי אזורי
  • יצירת מאזן עומסי רשת עם מאגרי יעד
  • אימות של מאגר היעד
  • יצירת שירות לקצה עורפי אזורי באמצעות קבוצות של מכונות לא מנוהלות
  • ביצוע העברה של מאגר יעד לשירות לקצה העורפי
  • אימות שירותים לקצה העורפי

מה צריך להכין

  • ניסיון עם מאזני עומסים

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

בעזרת Network Load Balancing, ללקוחות Google Cloud יש כלי יעיל לחלוקת תעבורת נתונים חיצונית בין מכונות וירטואליות באזור של Google Cloud. כדי להקל על הלקוחות שלנו לנהל תעבורת נתונים נכנסת ולשלוט באופן הפעולה של מאזן העומסים, לאחרונה הוספנו ל-Network Load Balancing תמיכה בשירותים לקצה העורפי. כך הלקוחות שלנו יכולים ליהנות מפריסה עם יכולת התאמה, מהירות, ביצועים ועמידות משופרים – והכול באופן קל לניהול.

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

3. יתרונות של שירותים לקצה עורפי אזורי

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

267db35a58145be.png

מחוץ לבית, שירותים לקצה העורפי האזורי מספקים:

  • בדיקות תקינות באיכות גבוהה עם בדיקות תקינות מאוחדות – בעזרת שירותי קצה עורפי אזוריים, עכשיו אפשר ליהנות מכל היתרונות של תכונות בדיקת התקינות של איזון העומסים, בלי להיות מוגבלים לבדיקות התקינות הקודמות של HTTP. מטעמי תאימות, לקוחות של Network Load Balancing ביקשו לקבל בדיקות תקינות של TCP עם תמיכה במחרוזות בקשה ותגובה בהתאמה אישית או ב-HTTPS.
  • עמידות טובה יותר לקבוצות יתירות כשל – אם משתמשים בקבוצות יתירות כשל, אפשר להקצות קבוצת מכונות כראשית וקבוצה נוספת כמשנית, ותעבורת הנתונים מסוג יתירות כשל כשתקינות המכונות בקבוצה הפעילה יורדת מתחת לסף מסוים. כדי לשלוט טוב יותר במנגנון של מעבר אוטומטי לתרחיש חלופי, אפשר להשתמש בסוכנות כמו keepalived או pacemaker, ולחשוף בדיקת תקינות תקינה או כושלת על סמך שינויים במצב של מכונה בקצה העורפי.
  • יכולת התאמה לעומס וזמינות גבוהה באמצעות קבוצות של מכונות מנוהלות – שירותי קצה עורפי אזוריים תומכים בקבוצות של מכונות מנוהלות כקצה עורפי. עכשיו אפשר לציין תבנית למכונות הווירטואליות בקצה העורפי ולהשתמש בהתאמה אוטומטית של הקיבולת על סמך ניצול המעבד או מדדי מעקב אחרים.

בנוסף לדברים שצוינו למעלה, תוכלו ליהנות מ-Connection Draining לפרוטוקולים מוכווני-חיבור (TCP) ומזמן תכנות מהיר יותר לפריסות גדולות.

הטופולוגיה של רשת Codelab

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

מעבר לשירות לקצה עורפי אזורי מאפשר לנצל את היתרונות של תכונות כמו בדיקות תקינות לא מדור קודם (ל-TCP , SSL , HTTP , HTTPS ו-HTTP/2), קבוצות של מכונות מנוהלות, ריקון החיבור ומדיניות בנושא כשלים בגיבוי.

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

b2ac8a09e53e27f8.png

לפני כן: איזון עומסים ברשת עם מאגר יעד

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

f628fdad64c83af3.png

אחרי: איזון עומסי רשת עם שירות לקצה עורפי אזורי

בדוגמה הזו נניח שיש לכם מאזן עומסי רשת מסורתי שמבוסס על מאגר יעדים, עם שתי מכונות בתחום us-central-1a ושתי מכונות בתחום us-central-1c.

השלבים העיקריים הנדרשים למעבר כזה:

  1. קיבוץ המכונות במאגר היעד לקבוצות של מכונות. שירותי הקצה העורפי פועלים רק עם קבוצות של מכונות מנוהלות או לא מנוהלות. הערה: אין הגבלה על מספר המופעים שאפשר לכלול במאגר יעד אחד, אבל לקבוצות של מכונות יש גודל מקסימלי. אם במאגר היעד יש יותר ממספר המכונות המקסימלי הזה, תצטרכו לפצל את הקצוות העורפיים שלו לכמה קבוצות של מכונות. אם הפריסה הקיימת כוללת מאגר יעד לגיבוי, צריך ליצור קבוצת מכונות נפרדת למכונות האלה. קבוצת המכונות הזו תוגדר כקבוצת חלופית.
  2. יוצרים שירות לקצה עורפי אזורי. אם הפריסה כוללת מאגר יעד לגיבוי, תצטרכו לציין יחס חלופי בזמן יצירת שירות הקצה העורפי. הערך הזה צריך להתאים ליחס ההעברה בעת כשל שהוגדר בעבר לפריסה של מאגר היעד.
  3. מוסיפים לשירות לקצה העורפי קבוצות של מכונות (שנוצרו קודם). אם הפריסה כוללת מאגר יעד לגיבוי, מסמנים את קבוצת המופעים המתאימה של יתירות כשל באמצעות הדגל -failover כאשר מוסיפים אותה לשירות לקצה העורפי.
  4. הגדרת כלל העברה שמפנה לשירות הקצה העורפי החדש. יש שתי אפשרויות:
  • (מומלץ) מעדכנים את כלל ההעברה הקיים כך שיצביע לשירות הקצה העורפי. או
  • יוצרים הפניה חדשה שמצביעה על שירות הקצה העורפי. לשם כך, צריך ליצור כתובת IP חדשה לממשק הקצה של מאזן העומסים. לאחר מכן, משנים את הגדרות ה-DNS כדי לעבור בצורה חלקה מכתובת ה-IP הישנה של מאזן העומסים שמבוסס על מאגר היעד לכתובת ה-IP החדשה.

הגדרת סביבה בקצב עצמאי

  1. נכנסים למסוף Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

חשוב לזכור את מזהה הפרויקט, שם ייחודי בכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא מתאים לכם, סליחה). בהמשך ב-Codelab הזה, היא תיקרא PROJECT_ID.

  1. בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים של Google Cloud.

מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. חשוב לפעול לפי ההוראות בקטע 'ניקוי', שבו מוסבר איך להשבית את המשאבים כדי שלא תחויבו אחרי סיום המדריך. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.

הפעלת Cloud Shell

אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.

במסוף GCP, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

למכונה הווירטואלית הזו נטען כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, משפרת מאוד את ביצועי הרשת ואת האימות. כל העבודה בשיעור ה-Lab הזה יכולה להתבצע באמצעות דפדפן בלבד.

נכנסים ל-cloudshell ומגדירים את projectid

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID

echo $projectid

4. יצירת רשת VPC

רשת VPC

מ-Cloud Shell

gcloud compute networks create network-lb --subnet-mode custom

יצירת תת-רשת

מ-Cloud Shell

gcloud compute networks subnets create network-lb-subnet \
        --network network-lb --range 10.0.0.0/24 --region us-central1

יצירת כללי חומת אש

מ-Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

יצירת מכונות לא מנוהלות

יצירת מכונות: 2 מכונות לכל תחום, us-central1-a ו-us-central1-c

יצירת מכונה 1 מ-Cloud Shell

gcloud compute instances create www1 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html"

יצירת מכונה 2 מ-Cloud Shell

gcloud compute instances create www2 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html"

יוצרים מכונה 3 ב-Cloud Shell

gcloud compute instances create www3 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html"

יוצרים מכונה 4 מ-Cloud Shell

gcloud compute instances create www4 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www4</h1></body></html>' | tee /var/www/html/index.html"

יוצרים כלל של חומת אש שמאפשר תעבורת נתונים חיצונית למכונות הווירטואליות האלה

מ-Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

יצירת כתובת IP חיצונית סטטית למאזן העומסים

מ-Cloud Shell

gcloud compute addresses create network-lb-ip-1 \
    --region us-central1

הוספת משאב קודם של בדיקת תקינות של HTTP

מ-Cloud Shell

gcloud compute http-health-checks create basic-check

5. יצירת כלל העברה ומאגר יעדים

יצירת מאגר יעד

gcloud compute target-pools create www-pool \
            --region us-central1 --http-health-check basic-check

הוספת המכונות למאגר היעד, us-central1-a

gcloud compute target-pools add-instances www-pool \
--instances www1,www2 \
--instances-zone us-central1-a

הוספת המכונות למאגר היעד, us-central1-c

gcloud compute target-pools add-instances www-pool \
--instances www3,www4 \
--instances-zone us-central1-c

הוספת כלל העברה

gcloud compute forwarding-rules create www-rule \
--region us-central1 \
--ports 80 \
--address network-lb-ip-1 \
--target-pool www-pool

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

מזהים את כתובת ה-IP של הקצה הקדמי באמצעות בחירת מאזני עומסים ← Frontends (www-rule)

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

while true; do curl -m1 IP_ADDRESS; done

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

יצירת בדיקות תקינות מאוחדות לשירות לקצה העורפי

gcloud compute health-checks create tcp my-tcp-health-check --port 80 --region us-central1

יצירת קבוצות מכונות ממכונות קיימות במאגר היעד

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1a --zone=us-central1-a

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1a --zone=us-central1-a --instances=www1,www2

יצירת קבוצות מכונות ממכונות קיימות במאגר היעד

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1c --zone=us-central1-c

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1c --zone=us-central1-c --instances=www3,www4

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

gcloud compute backend-services create my-backend-service --region us-central1 --health-checks my-tcp-health-check --health-checks-region us-central1 --load-balancing-scheme external

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

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1a --instance-group-zone us-central1-a --region us-central1

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1c --instance-group-zone us-central1-c --region us-central1

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

שימו לב לשם של כלל ההעברה 'www-rule' ולכתובת ה-IP המשויכת:

Select Load Balancer → Frontends

בנוסף, ציינו את ארבע בריכות היעד

Select Load Balancer → Select ‘www-pool'

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

gcloud compute forwarding-rules set-target www-rule --region=us-central1 --backend-service my-backend-service --region us-central1

מוודאים שמאזן העומסים 'www-pool' לא מוגדר יותר עם חזית ה-'www-rule' (ראו צילום המסך בהמשך)

בוחרים מאזן עומסים ← www-pool

9a393b3ca4e0942c.png

כלל ההעברה של חזית הלקוח מאומת ועכשיו משויך למאזן העומסים 'my-backend-service'

Select Load Balancer → Frontends

הערה: כתובת ה-IP של שם הכלל 'www-rule' נשמרת, ומאזן העומסים 'my-backend-service' נמצא עכשיו בשימוש

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

while true; do curl -m1 IP_ADDRESS; done

7. שלבי הניקוי

gcloud compute forwarding-rules delete www-rule --region=us-central1 --quiet
 
gcloud compute backend-services delete my-backend-service --region us-central1 --quiet
 
gcloud compute target-pools delete www-pool --region us-central1 --quiet
 
gcloud compute addresses delete network-lb-ip-1 --region us-central1 --quiet

gcloud compute firewall-rules delete www-firewall-network-lb --quiet
 
gcloud compute instances delete www4 --zone us-central1-c --quiet
 
gcloud compute instances delete www3 --zone us-central1-c --quiet
 
gcloud compute instances delete www2 --zone us-central1-a --quiet

gcloud compute instances delete www1 --zone us-central1-a --quiet
 
gcloud compute networks subnets delete network-lb-subnet --region us-central1 --quiet

gcloud compute networks delete network-lb --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1a --zone us-central1-a --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1c --zone us-central1-c --quiet

8. מעולה!

כל הכבוד על השלמת ה-Codelab.

מה עסקנו בו

  • הסבר על היתרונות של שירותים לקצה עורפי אזורי
  • יצירת מאזן עומסי רשת עם מאגרי יעד
  • אימות של מאגר היעד
  • יצירת שירות לקצה עורפי אזורי באמצעות קבוצות של מכונות לא מנוהלות
  • ביצוע העברה של מאגר יעד לשירות לקצה העורפי
  • אימות שירותים לקצה העורפי