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

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

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

סקירה כללית של ההגדרה

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

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

צריך להגדיר קישוריות היברידית לפני שמגדירים פריסה של איזון עומסים היברידי. בהתאם למוצר הקישוריות ההיברידית שבחרתם, משתמשים ב-Cloud VPN או ב-Cloud Interconnect (מוקדש או שותף).

הרשאות

כדי להגדיר איזון עומסים היברידי, צריכות להיות לכם ההרשאות הבאות:

  • מופעל Google Cloud

  • בסביבה המקומית או בסביבה אחרת שאינה בענן שלGoogle Cloud

    • הרשאות להגדרת נקודות קצה ברשת שמאפשרות לשירותים בסביבה המקומית או בסביבות ענן אחרות להיות נגישים מ-Google Cloud באמצעות שילוב של IP:Port. למידע נוסף, אפשר לפנות לאדמין של הרשת בסביבה שלכם.
    • הרשאות ליצור כללי חומת אש בסביבה המקומית או בסביבות ענן אחרות כדי לאפשר לניסויי בדיקת תקינות של Google להגיע לנקודות הקצה.

בנוסף, כדי לבצע את ההוראות בדף הזה, צריך ליצור NEG עם קישוריות היברידית, מאזן עומסים (LB) ו-NEGs אזוריים (ונקודות הקצה שלהם) שישמשו כבק-אנדים מבוססי Google Cloudלמאזן העומסים.

צריך להיות לכם תפקיד בעלים או עורך בפרויקט, או תפקידי IAM של Compute Engine הבאים.

משימה התפקיד הנדרש
יצירת רשתות, רשתות משנה ורכיבים של מאזן עומסים אדמין ברשת Compute (roles/compute.networkAdmin)
הוספה והסרה של כללים לחומת האש אדמין לענייני אבטחה ב-Compute (roles/compute.securityAdmin)
יצירת מופעים אדמין מכונות של Compute (roles/compute.instanceAdmin)

אופציונלי: שימוש בכתובות BYOIP

באמצעות העברת כתובות IP משלכם (BYOIP), אתם יכולים לייבא כתובות ציבוריות משלכם אלGoogle Cloud כדי להשתמש בכתובות עם משאבי Google Cloud . לדוגמה, אם מייבאים כתובות IPv4 משלכם, אפשר להקצות אחת מהן לכלל ההעברה כשמגדירים את מאזן העומסים. כשפועלים לפי ההוראות במסמך הזה כדי , צריך לספק את כתובת ה-BYOIP ככתובת ה-IP.

מידע נוסף על השימוש ב-BYOIP זמין במאמר בנושא העברת כתובות IP משלכם.

הגדרת קישוריות היברידית

הסביבה שלכם Google Cloud והסביבה המקומית או סביבות ענן אחרות צריכות להיות מחוברות באמצעות קישוריות היברידית, על ידי שימוש בצירופים ל-VLAN של Cloud Interconnect או במנהרות Cloud VPN עם Cloud Router או נתבים וירטואליים. מומלץ להשתמש בחיבור עם זמינות גבוהה.

‫Cloud Router שמופעל בו ניתוב דינמי גלובלי לומד על נקודת הקצה הספציפית באמצעות פרוטוקול Border Gateway Protocol ‏ (BGP) ומתכנת אותה ברשת ה-VPC שלכם Google Cloud . אין תמיכה בניתוב דינמי אזורי. אין תמיכה גם בנתיבים סטטיים.

אתם יכולים להשתמש באותה רשת או ברשת VPC אחרת באותו פרויקט כדי להגדיר גם רשת היברידית (Cloud Interconnect או Cloud VPN או מכונה וירטואלית של נתב) וגם מאזן עומסים. חשוב לזכור:

  • אם משתמשים ברשתות VPC שונות, צריך לקשר בין שתי הרשתות באמצעות VPC Network Peering או להגדיר אותן כרשתות מסוג spoke ב-VPC באותו מרכז NCC.

  • אם אתם משתמשים באותה רשת VPC, ודאו שטווח ה-CIDR של רשת המשנה של רשת ה-VPC לא מתנגש עם טווחי ה-CIDR המרוחקים. כשכתובות IP חופפות, נתיבי רשת משנה מקבלים עדיפות על פני קישוריות מרחוק.

הוראות מפורטות זמינות במאמרים הבאים:

הגדרת הסביבה מחוץ ל- Google Cloud

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

  • מגדירים נקודות קצה ברשת כדי לחשוף שירותים מקומיים ל-Google Cloud (IP:Port).
  • מגדירים כללים לחומת האש בסביבה המקומית או בסביבת ענן אחרת.
  • מגדירים את Cloud Router כך שיפרסם מסלולים מסוימים שנדרשים בסביבה הפרטית.

הגדרת נקודות קצה ברשת

אחרי שמגדירים קישוריות היברידית, מגדירים נקודות קצה אחת או יותר ברשת בסביבה המקומית או בסביבות ענן אחרות שאפשר להגיע אליהן דרך Cloud Interconnect או Cloud VPN או נתב וירטואלי באמצעות שילוב של IP:port. השילוב IP:port מוגדר כנקודת קצה אחת או יותר עבור ה-NEG של הקישוריות ההיברידית שנוצר בהמשך התהליך ב- Google Cloud .

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

הגדרת כללים לחומת האש

צריך ליצור את כללי חומת האש הבאים בסביבה המקומית או בסביבת ענן אחרת:

  • יוצרים כלל חומת אש שמאפשר תעבורת נתונים נכנסת (ingress) בסביבות מקומיות או בסביבות ענן אחרות, כדי לאפשר לתעבורת נתונים מתת-הרשת של שרת proxy בלבד באזור להגיע לנקודות הקצה.
  • אין צורך לאפשר תעבורה מטווחים של בדיקות תקינות של Google עבור קבוצות משולבות של נקודות קצה ברשת (NEGs). עם זאת, אם אתם משתמשים בשילוב של NEGs היברידיים ואזוריים בשירות לקצה העורפי יחיד, אתם צריכים לאפשר תנועה מטווחים של בדיקות תקינות של Google עבור ה-NEGs האזוריים.

מגדירים את Cloud Router כך שיפרסם את טווחי כתובות ה-IP המותאמים אישית הבאים בסביבה המקומית או בסביבת ענן אחרת:

  • הטווח של רשת המשנה של האזור שמוגדרת רק לשרתי proxy.

הגדרת הסביבה Google Cloud

בשלבים הבאים, חשוב להשתמש באותה רשת VPC (שנקראת NETWORK בהליך הזה) ששימשה להגדרת קישוריות היברידית בין הסביבות.

בנוסף, מוודאים שהאזורים שבהם נעשה שימוש (שנקראים REGION_A ו-REGION_B בהליך הזה) זהים לאלה שבהם נעשה שימוש ליצירת מנהרת Cloud VPN או קובצי ה-VLAN המצורפים של Cloud Interconnect.

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

משתמשים ברשת המשנה הזו כדי ליצור את קצה העורף של מאזן העומסים של אזור ה-NEG:

המסוף

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. עוברים לרשת ששימשה להגדרת קישוריות היברידית בין הסביבות.

  3. בקטע Subnets (רשתות משנה):

    • מגדירים את מצב יצירת רשתות משנה לבהתאמה אישית.
    • בקטע New subnet (רשת משנה חדשה), מזינים את הפרטים הבאים:
      • מזינים שם לרשת המשנה.
      • בוחרים אזור: REGION_A
      • מזינים טווח כתובות IP.
    • לוחצים על סיום.
  4. לוחצים על יצירה.

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

gcloud

  1. יצירת רשתות משנה ברשת ששימשה להגדרת קישוריות היברידית בין הסביבות.

    gcloud compute networks subnets create SUBNET_A \
        --network=NETWORK \
        --range=LB_SUBNET_RANGE1 \
        --region=REGION_A
    
    gcloud compute networks subnets create SUBNET_B \
        --network=NETWORK \
        --range=LB_SUBNET_RANGE2 \
        --region=REGION_B
    

API

שולחים בקשת POST אל ה-method‏ subnetworks.insert. מחליפים את PROJECT_ID במזהה הפרויקט.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks

{
 "name": "SUBNET_A",
 "network": "projects/PROJECT_ID/global/networks/NETWORK",
 "ipCidrRange": "LB_SUBNET_RANGE1",
 "region": "projects/PROJECT_ID/regions/REGION_A",
}

שולחים בקשת POST אל ה-method‏ subnetworks.insert. מחליפים את PROJECT_ID במזהה הפרויקט.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks

{
 "name": "SUBNET_B",
 "network": "projects/PROJECT_ID/global/networks/NETWORK",
 "ipCidrRange": "LB_SUBNET_RANGE2",
 "region": "projects/PROJECT_ID/regions/REGION_B",
}

מחליפים את מה שכתוב בשדות הבאים:

  • SUBNET_A ו-SUBNET_B: השם של תת-הרשתות
  • LB_SUBNET_RANGE1 ו-LB_SUBNET_RANGE2: טווח כתובות ה-IP של רשתות המשנה
  • REGION_A ו-REGION_B: האזורים שבהם הגדרתם את מאזן העומסים

הגדרת רשת המשנה ל-proxy בלבד

תת-רשת של proxy בלבד מספקת קבוצה של כתובות IP ש-Google משתמשת בהן כדי להפעיל שרתי proxy של Envoy בשמכם. הפרוקסיים מסיימים חיבורים מהלקוח ויוצרים חיבורים חדשים לשרתי הקצה.

כל מאזני העומסים האזוריים שמבוססים על Envoy באותו אזור של רשת ה-VPC משתמשים בתת-הרשת הזו שמשמשת רק כפרוקסי. יכולה להיות רק תת-רשת אחת פעילה מסוג proxy-only לכל מטרה נתונה, לכל אזור ולכל רשת.

המסוף

אם אתם משתמשים במסוף Google Cloud , אתם יכולים לחכות וליצור את רשת המשנה של ה-proxy בלבד בהמשך בדף איזון עומסים.

כדי ליצור עכשיו את רשת המשנה של ה-proxy בלבד, פועלים לפי השלבים הבאים:

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. לוחצים על השם של רשת ה-VPC.
  3. בכרטיסייה Subnets (רשתות משנה), לוחצים על Add subnet (הוספת רשת משנה).
  4. מזינים שם לרשת המשנה של ה-proxy בלבד.
  5. ברשימה Region בוחרים באזור REGION_A.
  6. ברשימה Purpose בוחרים באפשרות Cross-region Managed Proxy.
  7. בשדה טווח כתובות IP, מזינים 10.129.0.0/23.
  8. לוחצים על הוספה.

יצירת תת-רשת לשרת proxy בלבד ב-REGION_B

  1. לוחצים על הוספת רשת משנה.
  2. מזינים שם לרשת המשנה של ה-proxy בלבד.
  3. ברשימה Region בוחרים באזור REGION_B.
  4. ברשימה Purpose בוחרים באפשרות Cross-region Managed Proxy.
  5. בשדה טווח כתובות IP, מזינים 10.130.0.0/23.
  6. לוחצים על הוספה.

gcloud

יוצרים את רשתות המשנה של ה-proxy בלבד באמצעות הפקודה gcloud compute networks subnets create.

    gcloud compute networks subnets create PROXY_SN_A \
        --purpose=GLOBAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=REGION_A \
        --network=NETWORK \
        --range=PROXY_ONLY_SUBNET_RANGE1
    
    gcloud compute networks subnets create PROXY_SN_B \
        --purpose=GLOBAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=REGION_B \
        --network=NETWORK \
        --range=PROXY_ONLY_SUBNET_RANGE2
    

מחליפים את מה שכתוב בשדות הבאים:

  • PROXY_SN_A ו-PROXY_SN_B: השם של תת-הרשתות מסוג proxy בלבד
  • PROXY_ONLY_SUBNET_RANGE1 ו-PROXY_ONLY_SUBNET_RANGE2: טווח כתובות ה-IP של רשתות המשנה של ה-proxy בלבד
  • REGION_A ו- REGION_B: האזורים שבהם הגדרתם את מאזן העומסים

API

יוצרים את רשתות המשנה של ה-proxy בלבד באמצעות השיטה subnetworks.insert, ומחליפים את PROJECT_ID במזהה הפרויקט.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks

    {
      "name": "PROXY_SN_A",
      "ipCidrRange": "PROXY_ONLY_SUBNET_RANGE1",
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "region": "projects/PROJECT_ID/regions/REGION_A",
      "purpose": "GLOBAL_MANAGED_PROXY",
      "role": "ACTIVE"
    }
  
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks

    {
      "name": " PROXY_SN_B",
      "ipCidrRange": "PROXY_ONLY_SUBNET_RANGE2",
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "region": "projects/PROJECT_ID/regions/REGION_B",
      "purpose": "GLOBAL_MANAGED_PROXY",
      "role": "ACTIVE"
    }
  

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

בדוגמה הזו, יוצרים את הכללים הבאים של חומת האש עבור קצוות העורף של ה-NEG האזורי ב- Google Cloud:

  • fw-allow-health-check: כלל תעבורת נתונים נכנסת (ingress) שחל על המופעים שמתבצע איזון עומסים ביניהם, ומאפשר תנועה ממערכות לבדיקת תקינות (130.211.0.0/22 ו-35.191.0.0/16). בדוגמה הזו נעשה שימוש בתג היעד allow-health-check כדי לזהות את קבוצות ה-NEG האזוריות שאליהן הכלל צריך לחול.Google Cloud
  • fw-allow-ssh: כלל תעבורת נתונים נכנסת (ingress) שמאפשר קישוריות SSH נכנסת ביציאה 22 ב-TCP מכל כתובת. אפשר לבחור טווח כתובות IP של מקור שהוא יותר מוגבל עבור הכלל הזה. לדוגמה, אפשר לציין רק את טווחי כתובות ה-IP של המערכות שמהן תפעילו סשנים של SSH. בדוגמה הזו נעשה שימוש בתג היעד allow-ssh כדי לזהות את המכונות הווירטואליות שצריך להחיל עליהן את המדיניות.
  • fw-allow-proxy-only-subnet: כלל תעבורת נתונים נכנסת (ingress) שמאפשר חיבורים מתת-רשת של שרת proxy בלבד לשרתים העורפיים (backend) של קבוצת נקודות קצה ברשת (NEG) אזורית.

המסוף

  1. נכנסים לדף Firewall policies במסוף Google Cloud .

    לדף Firewall policies

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

    1. מזינים שם של fw-allow-health-check.
    2. בקטע רשת, בוחרים באפשרות NETWORK.
    3. בקטע יעדים, בוחרים באפשרות תגי יעד שצוינו.
    4. בשדה Target tags [תגי יעד] כותבים allow-health-check.
    5. מגדירים את Source filter בתור IPv4 ranges.
    6. מגדירים את Source IPv4 ranges (טווחים של כתובות IPv4 של המקור) ל-130.211.0.0/22 ול-35.191.0.0/16.
    7. בקטע פרוטוקולים ויציאות, בוחרים באפשרות פרוטוקולים ויציאות ספציפיים.
    8. בוחרים באפשרות TCP ומזינים את מספר היציאה 80.
    9. לוחצים על יצירה.
  3. לוחצים שוב על Create firewall rule (יצירת כלל לחומת האש) כדי ליצור את הכלל שיאפשר חיבורי SSH נכנסים:

    1. Name (שם): fw-allow-ssh
    2. רשת: NETWORK
    3. עדיפות: 1000
    4. כיוון התנועה: כניסה
    5. פעולה בהתאמה: לאפשר
    6. יעדים: תגי יעד שצוינו
    7. תגי טירגוט: allow-ssh
    8. מסנן מקור: טווחים של IPv4
    9. טווחים של כתובות IPv4 של המקור: 0.0.0.0/0
    10. פרוטוקולים ויציאות: בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
    11. בוחרים באפשרות TCP ומזינים את מספר היציאה 22.
    12. לוחצים על יצירה.
  4. לוחצים שוב על Create firewall rule (יצירת כלל חומת אש) כדי ליצור את הכלל שיאפשר חיבורים נכנסים מתת-רשת של שרת proxy בלבד:

    1. Name (שם): fw-allow-proxy-only-subnet
    2. רשת: NETWORK
    3. עדיפות: 1000
    4. כיוון התנועה: כניסה
    5. פעולה בהתאמה: לאפשר
    6. יעדים: תגי יעד שצוינו
    7. תגי טירגוט: allow-proxy-only-subnet
    8. מסנן מקור: טווחים של IPv4
    9. טווחי IPv4 של המקור: PROXY_ONLY_SUBNET_RANGE1 ו-PROXY_ONLY_SUBNET_RANGE2
    10. פרוטוקולים ויציאות: בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
    11. בוחרים באפשרות TCP ומזינים את מספר היציאה 80.
    12. לוחצים על יצירה.

gcloud

  1. יוצרים את הכלל fw-allow-health-check-and-proxy כדי לאפשר לבדיקות התקינות להגיע לשרתים העורפיים ביציאת TCP‏ 80: Google Cloud

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80
    
  2. יוצרים את כלל חומת האש fw-allow-ssh כדי לאפשר קישוריות SSH למכונות וירטואליות עם תג הרשת allow-ssh. אם לא מציינים את source-ranges,‏Google Cloud מפרש את הכלל כאילו הוא מתייחס לכל מקור.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  3. יוצרים כלל חומת אש שמאפשר תעבורת נתונים נכנסת (ingress) לתת-רשת של שרת proxy בלבד, כדי לאפשר למאזן העומסים לתקשר עם שרתים עורפיים (backend instance) ביציאת TCP‏ 80:

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-proxy-only-subnet \
        --source-ranges=PROXY_ONLY_SUBNET_RANGE1,PROXY_ONLY_SUBNET_RANGE2 \
        --rules=tcp:80
    

הגדרת קבוצת ה-NEG האזורית

לשרתי קצה עורפיים שמבוססים על Google Cloud, מומלץ להגדיר כמה קבוצות אזוריות של נקודות קצה ברשת (NEG) באותו אזור שבו הגדרתם קישוריות היברידית.

בדוגמה הזו, הגדרנו NEG אזורי (עם נקודות קצה מסוג GCE_VM_IP_PORT) באזור REGION1. קודם יוצרים את המכונות הווירטואליות באזור NEG_ZONE1. לאחר מכן, יוצרים NEG אזורי ב-NEG_ZONE2 ומוסיפים ל-NEG את נקודות הקצה ברשת של מכונות ה-VM. כדי לתמוך בזמינות גבוהה, הגדרנו NEG אזורי דומה בREGION2 אזור. אם שרתי קצה עורפיים באזור מסוים מושבתים, התעבורה מועברת לאזור אחר.

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

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. חוזרים על שלבים 3 עד 8 לכל מכונה וירטואלית, ומשתמשים בשילובים הבאים של שם ואזור.

    • שם: של vm-a1
      • אזור: NEG_ZONE1 באזור REGION_A
      • תת-רשת: SUBNET_A
    • שם: של vm-b1
      • אזור: NEG_ZONE2 באזור REGION_B
      • תת-רשת: SUBNET_B
  3. לוחצים על Create instance.

  4. מגדירים את השם כמו שצוין בשלב הקודם.

  5. בקטע Region, בוחרים את האזור שצוין בשלב הקודם.

  6. בקטע Zone, בוחרים את האזור שצוין בשלב הקודם.

  7. בקטע Boot disk מוודאים שהאפשרות Debian GNU/Linux 12 (bookworm)‎ מסומנת באפשרויות של דיסק האתחול. לוחצים על בחירה כדי לשנות את התמונה, אם צריך.

  8. בקטע אפשרויות מתקדמות, מרחיבים את Networking (רשת) ופועלים לפי השלבים הבאים:

    • מוסיפים את תגי הרשת הבאים: allow-ssh,‏ allow-health-check ו-allow-proxy-only-subnet.
    • בקטע Network interfaces (ממשקי רשת), לוחצים על Add a network interface (הוספת ממשק רשת), מבצעים את השינויים הבאים ואז לוחצים על Done (סיום):
      • רשת: NETWORK
      • רשת משנה: כמו שצוין בשלב הקודם.
      • כתובת IP פנימית ראשית: זמנית (אוטומטית)
      • כתובת IP חיצונית: זמנית
    • מרחיבים את האפשרות Management. בשדה Automation, מעתיקים ומדביקים את תוכן הסקריפט הבא. תוכן הסקריפט זהה בכל המכונות הווירטואליות:

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      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
      systemctl restart apache2
      
  9. לוחצים על יצירה.

gcloud

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

  • VM_NAME מתוך vm-a1
    • האזור GCP_NEG_ZONE בתור NEG_ZONE1 באזור REGION_A
    • תת-הרשת LB_SUBNET_NAME בתור SUBNET_A
  • VM_NAME מתוך vm-b1

    • אזורGCP_NEG_ZONE בתור NEG_ZONE2 באזור REGION_B
    • תת-רשת LB_SUBNET_NAME בתור SUBNET_B
    gcloud compute instances create VM_NAME \
        --zone=GCP_NEG_ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
        --subnet=LB_SUBNET_NAME \
        --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          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
          systemctl restart apache2'
    

יצירת ה-NEG האזורי

המסוף

כדי ליצור קבוצת נקודות קצה ברשת אזורית:

  1. נכנסים לדף Network Endpoint Groups במסוף Google Cloud .

    מעבר אל Network Endpoint Groups

  2. חוזרים על שלבים 3 עד 8 לכל קבוצת NEG אזורית, באמצעות השילובים הבאים של שם ואזור:

    • שם: neg-1
      • אזור: NEG_ZONE1 באזור REGION_A
      • תת-רשת: SUBNET_A
    • שם: neg-2
      • אזור: NEG_ZONE2 באזור REGION_B
      • תת-רשת: SUBNET_B
  3. לוחצים על יצירת קבוצת נקודות קצה ברשת.

  4. מגדירים את השם כמו שצוין בשלב הקודם.

  5. בוחרים את סוג קבוצת נקודות הקצה ברשת: קבוצת נקודות קצה ברשת (אזורית).

  6. בוחרים את הרשת: NETWORK

  7. בוחרים באפשרות Subnetwork (רשת משנה) כמו שצוין בשלב הקודם.

  8. בוחרים באפשרות אזור כמו שמוצג בשלב הקודם.

  9. מזינים את יציאת ברירת המחדל: 80.

  10. לוחצים על יצירה.

מוסיפים נקודות קצה ל-NEG האזורי:

  1. נכנסים לדף Network Endpoint Groups במסוף Google Cloud .

    כניסה לדף Network endpoint groups

  2. לוחצים על Name (שם) של קבוצת נקודות הקצה ברשת שנוצרה בשלב הקודם. יוצג הדף Network endpoint group details.

  3. בקטע Network endpoints in this group (נקודות קצה ברשת בקבוצה הזו), לוחצים על Add network endpoint (הוספת נקודת קצה ברשת). מוצג הדף Add network endpoint.

  4. בוחרים מכונה וירטואלית כדי להוסיף את כתובות ה-IP הפנימיות שלה כנקודות קצה ברשת. בקטע Network interface (ממשק רשת), מוצגים השם, האזור ורשת המשנה של מכונת ה-VM.

  5. מזינים את כתובת ה-IP של נקודת הקצה החדשה ברשת.

  6. בוחרים את סוג הניוד.

    1. אם בוחרים באפשרות ברירת מחדל, נקודת הקצה משתמשת ביציאת ברירת המחדל 80 לכל נקודות הקצה בקבוצת נקודות הקצה ברשת. זה מספיק לדוגמה שלנו כי שרת Apache משרת בקשות ביציאה 80.
    2. אם בוחרים באפשרות בהתאמה אישית, מזינים את מספר היציאה של נקודת הקצה שבה רוצים להשתמש.
  7. כדי להוסיף עוד נקודות קצה, לוחצים על הוספת נקודת קצה ברשת וחוזרים על השלבים הקודמים.

  8. אחרי שמוסיפים את כל נקודות הקצה, לוחצים על יצירה.

gcloud

  1. יוצרים קבוצות אזוריות של נקודות קצה ברשת (עם נקודות קצה של GCE_VM_IP_PORT) באמצעות שילובים של שם, אזור ורשת משנה. משתמשים בפקודה gcloud compute network-endpoint-groups create.

    • שם: neg-1
      • אזור GCP_NEG_ZONE: NEG_ZONE1 באזור REGION_A
      • רשת משנה LB_SUBNET_NAME: SUBNET_A
    • שם: neg-2
      • אזור GCP_NEG_ZONE: NEG_ZONE2 באזור REGION_B
      • רשת משנה LB_SUBNET_NAME: SUBNET_B
    gcloud compute network-endpoint-groups create GCP_NEG_NAME \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=GCP_NEG_ZONE \
        --network=NETWORK \
        --subnet=LB_SUBNET_NAME
    

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

  2. מוסיפים נקודות קצה ל-neg1 ול-neg2.

    gcloud compute network-endpoint-groups update neg1 \
        --zone=NEG_ZONE1 \
        --add-endpoint='instance=vm-a1,port=80'
    
    gcloud compute network-endpoint-groups update neg2 \
        --zone=NEG_ZONE2 \
        --add-endpoint='instance=vm-b1,port=80'
    

הגדרת NEG קישוריות היברידית

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

אם אתם משתמשים ב-Cloud Interconnect, האזור שבו משתמשים כדי ליצור את ה-NEG נמצא באותו אזור שבו הוגדר צירוף ל-Interconnect.

קבוצות משנה היברידיות של נקודות קצה ברשת תומכות רק בבדיקות תקינות מבוזרות של Envoy.

המסוף

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

  1. נכנסים לדף Network Endpoint Groups במסוף Google Cloud .

    כניסה לדף Network endpoint groups

  2. לוחצים על יצירת קבוצת נקודות קצה ברשת.

  3. חוזרים על שלבים 4 עד 9 לכל NEG היברידי, באמצעות השילובים הבאים של שם ואזור.

    • שם ON_PREM_NEG_NAME: hybrid-1
      • אזור: ON_PREM_NEG_ZONE1
      • תת-רשת: SUBNET_A
    • שם ON_PREM_NEG_NAME: hybrid-2
      • אזור: ON_PREM_NEG_ZONE2
      • תת-רשת: SUBNET_B
  4. מגדירים את השם כמו שצוין בשלב הקודם.

  5. בוחרים את סוג קבוצת נקודות הקצה ברשת: קבוצה של נקודות קצה ברשת לקישוריות היברידית (אזורית).

  6. בוחרים את הרשת: NETWORK

  7. בקטע Subnet, בוחרים באפשרות שצוינה בשלב הקודם.

  8. בשדה Zone, בוחרים את האזור כמו שצוין בשלב הקודם.

  9. מזינים את יציאת ברירת המחדל.

  10. לוחצים על יצירה.

מוסיפים נקודות קצה ל-NEG של הקישוריות ההיברידית:

  1. נכנסים לדף Network Endpoint Groups במסוף Google Cloud .

    כניסה לדף Network endpoint groups

  2. לוחצים על Name (שם) של קבוצת נקודות הקצה ברשת שנוצרה בשלב הקודם. יוצג הדף Network endpoint group detail.

  3. בקטע Network endpoints in this group (נקודות קצה ברשת בקבוצה הזו), לוחצים על Add network endpoint (הוספת נקודת קצה ברשת). מוצג הדף Add network endpoint.

  4. מזינים את כתובת ה-IP של נקודת הקצה החדשה ברשת.

  5. בוחרים את סוג הניוד.

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

  7. אחרי שמוסיפים את כל נקודות הקצה שאינןGoogle Cloud , לוחצים על יצירה.

gcloud

  1. יוצרים NEG קישוריות היברידית עם שילובי השמות הבאים. משתמשים בפקודה gcloud compute network-endpoint-groups create.

    • שם ON_PREM_NEG_NAME: hybrid-1
      • אזור ON_PREM_NEG_ZONE: ON_PREM_NEG_ZONE1
    • שם ON_PREM_NEG_NAME: hybrid-2
      • אזור GCP_NEG_ZONE: ON_PREM_NEG_ZONE2
    gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \
        --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
        --zone=ON_PREM_NEG_ZONE \
        --network=NETWORK
    
  2. מוסיפים את נקודת הקצה של המכונה הווירטואלית של ה-Backend המקומי אל ON_PREM_NEG_NAME:

    gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \
        --zone=ON_PREM_NEG_ZONE \
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
    

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

הגדרת מאזן העומסים

המסוף

gcloud

  1. מגדירים את בדיקת התקינות של TCP באמצעות הפקודה gcloud compute health-checks create tcp.

    gcloud compute health-checks create tcp gil4-basic-check \
       --use-serving-port \
       --global
    
  2. יוצרים את שירות לקצה העורפי ומפעילים את הרישום ביומן באמצעות הפקודה gcloud compute backend-services create.

    gcloud compute backend-services create BACKEND_SERVICE \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --protocol=TCP \
      --enable-logging \
      --logging-sample-rate=1.0 \
      --health-checks=gil4-basic-check \
      --global-health-checks \
      --global
    
  3. מוסיפים קצה עורפי לשירות הקצה העורפי באמצעות הפקודה gcloud compute backend-services add-backend.

    gcloud compute backend-services add-backend BACKEND_SERVICE \
      --global \
      --balancing-mode=CONNECTION \
      --max-connections-per-endpoint=MAX_CONNECTIONS \
      --network-endpoint-group=neg1 \
      --network-endpoint-group-zone=NEG_ZONE1 \
      --network-endpoint-group=neg2 \
      --network-endpoint-group-zone=NEG_ZONE2
    

    פרטים על הגדרת מצב האיזון מופיעים במסמכי התיעוד של ה-CLI של gcloud בנושא הדגל --max-connections-per-endpoint. בשדה MAX_CONNECTIONS, מזינים את מספר החיבורים המקסימלי בו-זמנית שהקצה העורפי יכול לטפל בהם.

  4. מוסיפים את קבוצות ה-NEG ההיברידיות כקצה עורפי לשירות הקצה העורפי.

    gcloud compute backend-services add-backend BACKEND_SERVICE \
      --global \
      --balancing-mode=CONNECTION \
      --max-connections-per-endpoint=MAX_CONNECTIONS \
      --network-endpoint-group=hybrid1 \
      --network-endpoint-group-zone=ON_PREM_NEG_ZONE1 \
      --network-endpoint-group=hybrid2 \
      --network-endpoint-group-zone=ON_PREM_NEG_ZONE2 \
    

    פרטים על הגדרת מצב האיזון מופיעים במסמכי התיעוד של ה-CLI של gcloud בנושא הפרמטר --max-connections-per-endpoint. בשדה MAX_CONNECTIONS, מזינים את מספר החיבורים המקסימלי בו-זמנית שהקצה העורפי יכול לטפל בהם.

  5. יוצרים את שרת ה-proxy של היעד.

    יוצרים את שרת ה-proxy של היעד באמצעות הפקודה gcloud compute target-tcp-proxies create.

    gcloud compute target-tcp-proxies create gil4-tcp-proxy \
      --backend-service=BACKEND_SERVICE \
      --global
    
  6. יוצרים שני כללי העברה, אחד עם כתובת VIP‏ IP_ADDRESS1 ב-REGION_A ואחד עם כתובת VIP‏ IP_ADDRESS2 ב-REGION_B. לכתובת ה-IP של כלל ההעברה, משתמשים בטווח כתובות ה-IP LB_SUBNET_RANGE1 או LB_SUBNET_RANGE2. אם מנסים להשתמש ברשת המשנה proxy-only, יצירת כלל ההעברה נכשלת.

    ברשתות מותאמות אישית, צריך להפנות לרשת המשנה בכלל ההעברה. שימו לב: מדובר ברשת המשנה של המכונה הווירטואלית, ולא ברשת המשנה של ה-proxy.

    משתמשים בפקודה gcloud compute forwarding-rules create עם הדגלים המתאימים.

    gcloud compute forwarding-rules create gil4-forwarding-rule-a \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --subnet=SUBNET_A \
      --subnet-region=REGION_A \
      --address=IP_ADDRESS1 \
      --ports=80 \
      --target-tcp-proxy=gil4-tcp-proxy \
      --global
    
    gcloud compute forwarding-rules create gil4-forwarding-rule-b \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --subnet=SUBNET_B \
      --subnet-region=REGION_B \
      --address=IP_ADDRESS2 \
      --ports=80 \
      --target-tcp-proxy=gil4-tcp-proxy \
      --global
    

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

יצירת מכונת VM לבדיקת הקישוריות

  1. יצירת מכונות וירטואליות (VM) של לקוחות ב-REGION_A וב-REGION_B ובאזורים:

    gcloud compute instances create l4-ilb-client-a \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --network=NETWORK \
        --subnet=SUBNET_A \
        --zone=NEG_ZONE1 \
        --tags=allow-ssh
    
    gcloud compute instances create l4-ilb-client-b \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --network=NETWORK \
        --subnet=SUBNET_B \
        --zone=NEG_ZONE2 \
        --tags=allow-ssh
    
  2. משתמשים ב-SSH כדי להתחבר לכל מופע לקוח.

    gcloud compute ssh l4-ilb-client-a \
       --zone=NEG_ZONE1
    
    gcloud compute ssh l4-ilb-client-b \
       --zone=NEG_ZONE2
    
  3. מוודאים שכתובת ה-IP משרתת את שם המארח שלה.

    • מוודאים שהמכונה הווירטואלית של הלקוח יכולה להגיע לשתי כתובות ה-IP. הפקודה אמורה להצליח ולהחזיר את השם של מכונת ה-VM בעורף המערכת שטיפלה בבקשה:

      curl IP_ADDRESS1
      
      curl IP_ADDRESS2
      

הרצת 100 בקשות

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

  • מוודאים שהמכונה הווירטואלית של הלקוח יכולה להגיע לשתי כתובות ה-IP. הפקודה אמורה להצליח ולהחזיר את השם של מכונת ה-VM של ה-Backend שטיפלה בבקשה:

    {
      RESULTS=
      for i in {1..100}
      do
        RESULTS="$RESULTS:$(curl --silent IP_ADDRESS1)"
      done
      echo "***"
      echo "*** Results of load-balancing to IP_ADDRESS1: "
      echo "***"
      echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
      echo
    }
    
    {
      RESULTS=
      for i in {1..100}
      do
        RESULTS="$RESULTS:$(curl --silent IP_ADDRESS2)"
      done
      echo "***"
      echo "*** Results of load-balancing to IP_ADDRESS2: "
      echo "***"
      echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
      echo
    }
    

בדיקת מעבר לגיבוי (failover)

  1. לוודא שמתבצע מעבר לגיבוי (failover) לשרתי קצה עורפיים באזור REGION_A כשהשרתים באזור REGION_B לא תקינים או לא נגישים. אנחנו מדמים את זה על ידי הסרת כל שרתי הקצה העורפיים מ-REGION_B:

    gcloud compute backend-services remove-backend BACKEND_SERVICE \
       --balancing-mode=CONNECTION \
       --network-endpoint-group=neg2 \
       --network-endpoint-group-zone=NEG_ZONE2
    
  2. משתמשים ב-SSH כדי להתחבר למכונה הווירטואלית של הלקוח ב-REGION_B.

    gcloud compute ssh l4-ilb-client-b \
       --zone=NEG_ZONE2
    
  3. שליחת בקשות לכתובת ה-IP של מאזן העומסים באזור REGION_B. פלט הפקודה צריך להציג תגובות ממכונות וירטואליות בבק-אנד ב-REGION_A.

    {
    RESULTS=
    for i in {1..100}
    do
      RESULTS="$RESULTS:$(curl --silent IP_ADDRESS2)"
    done
    echo "***"
    echo "*** Results of load-balancing to IP_ADDRESS2: "
    echo "***"
    echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
    echo
    }
    

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