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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. מוסיפים קבוצות של מכונות וירטואליות (שנוצרו קודם) לשירות לקצה העורפי.

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

  4. מגדירים כלל העברה שמפנה לשירות לקצה העורפי החדש.

    אפשר לבחור באחת מהאפשרויות הבאות:

    • מעדכנים את כלל ההעברה הקיים כך שיצביע על שירות ה-Backend (מומלץ).

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

לפני שמתחילים

מתקינים את Google Cloud CLI. סקירה כללית מלאה של הכלי זמינה במדריך לכלי gcloud. אפשר למצוא פקודות שקשורות לאיזון עומסים בקבוצת הפקודות gcloud compute.

אם לא הפעלתם את Google Cloud CLI בעבר, קודם מריצים את gcloud init כדי לבצע אימות.

במדריך הזה אנחנו מניחים שאתם מכירים את bash.

זיהוי קצה העורף וכלל ההעברה שרוצים להעביר

  1. כדי להציג את כל מאגרי היעדים, מריצים את הפקודה הבאה ב-Cloud Shell:

    gcloud compute target-pools list
    

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

  2. כדי לראות רשימה של כל מכונות ה-VM במאגר היעד TARGET_POOL_NAME, מריצים את הפקודה ב-Cloud Shell:

    gcloud compute target-pools describe TARGET_POOL_NAME \
      --region=us-central1
    

    רושמים את השמות של מכונות ה-VM. בהמשך המאמר נתייחס לשמות האלה כאל BACKEND_INSTANCE1, BACKEND_INSTANCE2, BACKEND_INSTANCE3 ו-BACKEND_INSTANCE4.

  3. כדי להציג רשימה של כללי ההעברה במאזן עומסי רשת אזורי חיצוני להעברת סיגנל ללא שינוי, מריצים את הפקודה ב-Cloud Shell:

    gcloud compute forwarding-rules list
      --filter="target: ( TARGET_POOL_NAME )"
    

    רושמים את השם של כלל ההעברה. השם הזה יופיע בהמשך בתור FORWARDING_RULE.

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

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

בדוגמה הזו, אנחנו יוצרים שתי קבוצות של מכונות: אחת באזור uc-central1-a ואחת באזור us-central1-c.

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

המסוף

  1. נכנסים לדף Instance groups במסוף Cloud de Confiance .

    כניסה לדף Instance groups

  2. לוחצים על יצירת קבוצת מופעים.
  3. בחלונית הימנית, בוחרים באפשרות קבוצת מופעים חדשה לא מנוהלת.
  4. בשדה Name (שם), מזינים ig-us-1.
  5. בשדה אזור, בוחרים באפשרות us-central1.
  6. בשדה Zone, בוחרים באפשרות us-central1-a.
  7. בוחרים באפשרות Network או באפשרות Subnetwork בהתאם למיקום של המופעים. בדוגמה הזו, המופעים הקיימים במאגר היעדים נמצאים ברשת default וברשת המשנה.
  8. כדי להוסיף מכונות לקבוצת המכונות, בקטע VM instances (מכונות וירטואליות), בוחרים את שתי המכונות BACKEND_INSTANCE1 ו-BACKEND_INSTANCE2.
  9. לוחצים על יצירה.
  10. חוזרים על השלבים האלה כדי ליצור קבוצת מופעים שנייה עם המפרט הבא:

    • Name (שם): ig-us-2
    • אזור: us-central1
    • Zone (תחום): us-central1-c

    מוסיפים את שני המקרים BACKEND_INSTANCE3 ו-BACKEND_INSTANCE4 באזור us-central1-c לקבוצת המקרים הזו.

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

gcloud

  1. יוצרים קבוצה של מופעי מכונה לא מנוהלים באזור us-central1-a באמצעות הפקודה gcloud compute instance-groups unmanaged create.

    gcloud compute instance-groups unmanaged create ig-us-1 \
        --zone us-central1-a
    
  2. יוצרים קבוצה שנייה של מופעי מכונה לא מנוהלים באזור us-central1-c.

    gcloud compute instance-groups unmanaged create ig-us-2 \
        --zone us-central1-c
    
  3. מוסיפים מופעים לig-us-1 קבוצת המכונות.

    gcloud compute instance-groups unmanaged add-instances ig-us-1 \
        --instances BACKEND_INSTANCE_1,BACKEND_INSTANCE_2 \
        --zone us-central1-a
    
  4. מוסיפים מופעים לig-us-2 instance group.

    gcloud compute instance-groups unmanaged add-instances ig-us-2 \
        --instances BACKEND_INSTANCE_3,BACKEND_INSTANCE_4 \
        --zone us-central1-c
    
  5. אם לפריסת מאזן העומסים הקיימת יש גם מאגר יעד לגיבוי, צריך לחזור על השלבים האלה כדי ליצור קבוצת מכונות נפרדת למעבר לגיבוי (failover) עבור המכונות האלה.

יצירת בדיקת תקינות

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

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

המסוף

  1. נכנסים לדף Health checks במסוף Cloud de Confiance .

    מעבר אל Health checks

  2. לוחצים על יצירת בדיקת תקינות.
  3. בשדה שם מזינים network-lb-health-check.
  4. מגדירים את היקף לערך אזורי.
  5. בשדה אזור, בוחרים באפשרות us-central1.
  6. בשדה Protocol, בוחרים באפשרות HTTP.
  7. בשדה Port (יציאה), מזינים 80.
  8. לוחצים על יצירה.

gcloud

  1. בדוגמה הזו, אנחנו יוצרים בדיקת תקינות HTTP שלא מבוססת על גרסה קודמת, כדי להשתמש בה עם שירות ה-backend.

    gcloud compute health-checks create http network-lb-health-check \
    --region us-central1 \
    --port 80
    

הגדרת שירות הקצה העורפי

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

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

פריסות ללא מאגר יעד לגיבוי

gcloud

  1. יוצרים שירות לקצה עורפי אזורי באזור us-central1.

    gcloud compute backend-services create network-lb-backend-service \
       --region us-central1 \
       --health-checks network-lb-health-check \
       --health-checks-region us-central1 \
       --protocol TCP
    
  2. מוסיפים את שתי קבוצות המכונות (ig-us-1 ו-ig-us-2) כקצה עורפי לשירות הקצה העורפי.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-2 \
       --instance-group-zone us-central1-c \
       --region us-central1
    

פריסות עם מאגר יעד לגיבוי

gcloud

  1. יוצרים שירות לקצה עורפי אזורי באזור us-central1. מגדירים את יחס המעבר האוטומטי של שירות הקצה העורפי כך שיתאים ליחס המעבר האוטומטי שהוגדר קודם למאגר היעדים.

    gcloud compute backend-services create network-lb-backend-service \
       --region us-central1 \
       --health-check network-lb-health-check \
       --failover-ratio 0.5
    
  2. מוסיפים את שתי קבוצות המכונות (ig-us-1 ו-ig-us-2) כקצה עורפי לשירות הקצה העורפי.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-2 \
       --instance-group-zone us-central1-c \
       --region us-central1
    
  3. אם יצרתם קבוצת מכונות ליתירות כשל, מוסיפים אותה לשירות לקצה העורפי. כשמוסיפים את ה-backend לשירות ה-backend, מסמנים אותו בדגל --failover.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group FAILOVER_INSTANCE_GROUP \
       --instance-group-zone ZONE \
       --region us-central1 \
       --failover
    

הגדרת כלל ההעברה

יש שתי אפשרויות להגדרת כלל ההעברה כדי להפנות את התנועה לשירות העורפי החדש. אפשר לעדכן את כלל ההעברה הקיים או ליצור כלל העברה חדש עם כתובת IP חדשה.

משתמשים בדגל set-target כדי לעדכן את כלל ההעברה הקיים כך שיצביע על שירות לקצה העורפי החדש.

gcloud compute forwarding-rules set-target FORWARDING_RULE  \
    --backend-service network-lb-backend-service \
    --region us-central1

מחליפים את FORWARDING_RULE בשם של כלל ההעברה הקיים.

יצירת כלל העברה חדש

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

כדי ליצור כלל העברה חדש עם כתובת IP חדשה, משתמשים בפקודה הבאה. אפשר להשתמש בדגל --address כדי לציין כתובת IP שכבר הוזמנה באזור us-central1.

gcloud compute forwarding-rules create network-lb-forwarding-rule \
    --load-balancing-scheme external \
    --region us-central1 \
    --ports 80 \
    --backend-service network-lb-backend-service

בדיקת מאזן העומסים

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

חיפוש כתובת ה-IP החיצונית של מאזן העומסים

gcloud

מזינים את הפקודה הבאה כדי לראות את כתובת ה-IP החיצונית של כלל ההעברה network-lb-forwarding-rule שמשמש את מאזן העומסים.

gcloud compute forwarding-rules describe network-lb-forwarding-rule
    --region us-central1

משתמשים בפקודה nc כדי לגשת לכתובת ה-IP החיצונית

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

  1. כדי לבדוק את הקישוריות, קודם מתקינים את Netcat ב-Linux על ידי הרצת הפקודה הבאה:

    $ sudo apt install netcat
    
  2. חוזרים על הפקודה הבאה כמה פעמים עד שרואים שכל מכונות ה-VM של ה-Backend מגיבות:

    $ nc IP_ADDRESS 80
    

הסרת משאבים שמשויכים למאזן העומסים הישן

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

  1. נכנסים לדף Load balancing במסוף Cloud de Confiance .

    כניסה לדף Load balancing

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

המאמרים הבאים