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

1. מבוא

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

מה תלמדו

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

מה צריך להכין

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

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

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

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

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

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

267db35a58145be.png

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

  • בדיקת תקינות ברמת דיוק גבוהה באמצעות בדיקת תקינות מאוחדת – עכשיו בעזרת שירותים לקצה העורפי האזורי אפשר עכשיו לנצל את מלוא היתרונות של תכונות בדיקת התקינות של איזון העומסים, בלי להתפשר על האילוצים של בדיקות תקינות של HTTP מדור קודם. מטעמי תאימות, בדיקות תקינות של TCP עם תמיכה במחרוזות מותאמות אישית של בקשות ותגובה או HTTPS היו בקשה נפוצה של לקוחות איזון עומסי רשת.
  • עמידות טובה יותר לקבוצות יתירות כשל – אם משתמשים בקבוצות יתירות כשל, ניתן להקצות קבוצת מכונות כראשית וקבוצה נוספת כמשנית, ותעבורת הנתונים מסוג יתירות כשל כשתקינות המכונות בקבוצה הפעילה יורדת מתחת לסף מסוים. כדי לקבל שליטה רבה יותר על מנגנון הכשל, אפשר להשתמש בסוכן כמו keepalive או pacemaker, או חשיפה של בדיקת תקינות תקינה או נכשלת על סמך שינויים במצב של המכונה בקצה העורפי.
  • יכולת התאמה וזמינות גבוהה באמצעות קבוצות מכונות מנוהלות – שירותים לקצה עורפי אזורי תומכים בקבוצות עור מנוהלות בתור קצוות עורפיים. עכשיו אפשר לציין תבנית למכונות הווירטואליות בקצה העורפי ולהשתמש בהתאמה לעומס (autoscaling) על סמך ניצול המעבד (CPU) או מדדי מעקב אחרים.

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

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

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

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

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

b2ac8a09e53e27f8.png

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

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

f628fdad64c83af3.png

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

בדוגמה הזו יצאנו מנקודת הנחה שיש לכם מאזן עומסי רשת מסורתי שמבוסס על מאגר יעד, עם שתי מכונות בתחום us-central-1a ו-2 מכונות בתחום 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 מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-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 מכונות לכל תחום (zone), 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 המשויכת, מבצעים את הפעולות הבאות:

בוחרים מאזן עומסים ← קצה קדמי

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

בוחרים מאזן עומסים ← בוחרים 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'

בוחרים מאזן עומסים ← קצה קדמי

חשוב לשים לב לשם הכלל www-rule כתובת ה-IP נשמרת ומאזן העומסים '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.

אילו נושאים דיברנו?

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