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

במאמר הזה מוסבר איך להגדיר מאזן עומסים של אפליקציות (ALB) חיצוני אזורי לשירותים שפועלים במכונות וירטואליות ב-Compute Engine.

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

לפני שממשיכים במדריך הזה, כדאי להכיר את המושגים הבאים:

הרשאות

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

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

מידע נוסף זמין במדריכים הבאים:

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

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

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

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

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

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

כפי שמוצג בתרשים, בדוגמה הזו נוצר מאזן עומסים חיצוני של אפליקציות (ALB) ברמה אזורית ברשת VPC באזור us-west1, עם שירות לקצה העורפי אחד ושתי קבוצות של שרתים עורפיים (backend instance).

בתרשים מוצגים הפריטים הבאים:

  1. רשת VPC עם שתי רשתות משנה:

    1. תת-רשת אחת משמשת לשרתי קצה עורפיים (קבוצות של מופעי מכונה). טווח כתובות ה-IP הראשי שלה הוא 10.1.2.0/24.

    2. תת-רשת אחת היא תת-רשת של שרת proxy בלבד באזור us-west1. צריך ליצור תת-רשת לשרת proxy בלבד בכל אזור ברשת VPC שבה משתמשים במאזני עומסים חיצוניים אזוריים של אפליקציות. תת-הרשת של הפרוקסי בלבד באזור משותפת לכל מאזני העומסים האזוריים באזור. כתובות המקור של מנות נתונים שנשלחות ממאזני העומסים לקצה העורפי של השירות מוקצות מרשת המשנה של פרוקסי בלבד. בדוגמה הזו, לרשת המשנה של האזור שמוגדרת רק לשימוש פרוקסי יש טווח כתובות IP ראשי של 10.129.0.0/23, שהוא הגודל המומלץ של רשת משנה. מידע נוסף זמין במאמר בנושא רשתות משנה לשרתי proxy בלבד.

  2. כלל חומת אש שמאפשר זרימת תעבורת נתונים מתת-רשת של שרת proxy בלבד ברשת. כלומר, צריך להוסיף כלל אחד שמאפשר תעבורה ביציאות TCP‏ 80, 443 ו-8080 מ-10.129.0.0/23 (הטווח של תת-הרשת של שרת proxy בלבד בדוגמה הזו). כלל חומת אש נוסף עבור בדיקות התקינות.

  3. מופעים של קצה עורפי.

  4. קבוצות של מכונות:

    1. קבוצות של מופעי מכונה מנוהלים או לא מנוהלים לפריסות של מכונות וירטואליות ב-Compute Engine
    2. קבוצות של נקודות קצה ברשת (NEGs) לפריסות ב-GKE

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

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

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

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

  8. שרת proxy אזורי של HTTP או HTTPS, שמקבל בקשה מהמשתמש ומעביר אותה למפת URL. ל-HTTPS, מגדירים משאב אזורי של אישור SSL. אם מגדירים איזון עומסים של HTTPS, שרת ה-proxy של היעד יכול להשתמש באישור SSL או באישור של Certificate Manager כדי לפענח תנועת SSL. שרת ה-Proxy של היעד יכול להעביר תנועה למופעים שלכם באמצעות HTTP או HTTPS.

  9. כלל העברה, שכולל את כתובת ה-IP החיצונית של מאזן העומסים, כדי להעביר כל בקשה נכנסת לשרת ה-proxy של היעד.

    כתובת ה-IP החיצונית שמשויכת לכלל ההעברה שמורה באמצעות הפקודה gcloud compute addresses create, כפי שמתואר במאמר שמירת כתובת ה-IP של מאזן העומסים.

הגדרת הרשת ורשתות המשנה

צריך רשת VPC עם שתי רשתות משנה: אחת לקצה העורפי של מאזן העומסים והשנייה לשרתי ה-proxy של מאזן העומסים. מאזן עומסים חיצוני אזורי של אפליקציות (ALB) הוא אזורי. התעבורה ברשת ה-VPC מנותבת למאזן העומסים אם מקור התעבורה הוא ברשת משנה באותו אזור שבו נמצא מאזן העומסים.

בדוגמה הזו נעשה שימוש ברשת ה-VPC, באזור ובתת-רשתות הבאים:

  • רשת הרשת היא רשת VPC במצב מותאם אישית בשם lb-network.

  • תת-רשת לשרתי קצה עורפיים. רשת משנה בשם backend-subnet באזור us-west1 משתמשת ב-10.1.2.0/24 כטווח ה-IP הראשי שלה.

  • תת-רשת לשרתי proxy. רשת משנה בשם proxy-only-subnet באזור us-west1 משתמשת ב-10.129.0.0/23 כטווח ה-IP הראשי שלה.

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

המסוף

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

    מעבר לרשתות VPC

  2. לוחצים על יצירת רשת VPC.

  3. בשדה Name (שם), מזינים lb-network.

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

    • מגדירים את מצב יצירת רשת משנה לבהתאמה אישית.
    • בקטע New subnet (רשת משנה חדשה), מזינים את הפרטים הבאים:
      • Name (שם): backend-subnet
      • אזור: us-west1
      • טווח כתובות IP: 10.1.2.0/24
    • לוחצים על סיום.
  5. לוחצים על יצירה.

gcloud

  1. יוצרים את רשת ה-VPC המותאמת אישית באמצעות הפקודה gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. יוצרים תת-רשת ברשת lb-network באזור us-west1 באמצעות הפקודה gcloud compute networks subnets create:

    gcloud compute networks subnets create backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

Terraform

כדי ליצור את רשת ה-VPC, משתמשים במשאב google_compute_network.

resource "google_compute_network" "default" {
  name                    = "lb-network"
  auto_create_subnetworks = false
  routing_mode            = "REGIONAL"
}

כדי ליצור את תת-הרשת של ה-VPC ברשת lb-network, משתמשים במשאב google_compute_subnetwork.

resource "google_compute_subnetwork" "default" {
  name                       = "backend-subnet"
  ip_cidr_range              = "10.1.2.0/24"
  network                    = google_compute_network.default.id
  private_ipv6_google_access = "DISABLE_GOOGLE_ACCESS"
  purpose                    = "PRIVATE"
  region                     = "us-west1"
  stack_type                 = "IPV4_ONLY"
}

API

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
    {
     "routingConfig": {
       "routingMode": "REGIONAL"
     },
     "name": "lb-network",
     "autoCreateSubnetworks": false
    }
    
  2. שולחים בקשת POST ל-method‏ subnetworks.insert ומחליפים את PROJECT_ID במזהה הפרויקט.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks
    {
     "name": "backend-subnet",
     "network": "projects/PROJECT_ID/global/networks/lb-network",
     "ipCidrRange": "10.1.2.0/24",
     "region": "projects/PROJECT_ID/regions/us-west1",
    }
    

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

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

כל מאזני העומסים האזוריים שמבוססים על Envoy באותו אזור של רשת ה-VPC‏ lb-network משתמשים בתת-הרשת הזו שמשמשת רק כפרוקסי. יכולה להיות רק רשת משנה אחת פעילה של פרוקסי בלבד לכל אזור, לכל רשת.

המסוף

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

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

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

    מעבר לרשתות VPC

  2. לוחצים על השם של רשת ה-VPC: ‏ lb-network.

  3. לוחצים על הוספת רשת משנה.

  4. בשדה Name (שם), מזינים proxy-only-subnet.

  5. בשדה אזור, בוחרים באפשרות us-west1.

  6. מגדירים את Purpose (מטרה) לערך Regional Managed Proxy (שרת proxy מנוהל אזורי).

  7. בשדה טווח כתובות IP, מזינים 10.129.0.0/23.

  8. לוחצים על הוספה.

gcloud

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

gcloud compute networks subnets create proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=us-west1 \
  --network=lb-network \
  --range=10.129.0.0/23

Terraform

כדי ליצור את תת-הרשת של ה-VPC לשימוש פרוקסי ברשת lb-network, משתמשים במשאב google_compute_subnetwork.

resource "google_compute_subnetwork" "proxy_only" {
  name          = "proxy-only-subnet"
  ip_cidr_range = "10.129.0.0/23"
  network       = google_compute_network.default.id
  purpose       = "REGIONAL_MANAGED_PROXY"
  region        = "us-west1"
  role          = "ACTIVE"
}

API

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks
{
  "name": "proxy-only-subnet",
  "ipCidrRange": "10.129.0.0/23",
  "network": "projects/PROJECT_ID/global/networks/lb-network",
  "region": "projects/PROJECT_ID/regions/us-west1",
  "purpose": "REGIONAL_MANAGED_PROXY",
  "role": "ACTIVE"
}

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

בדוגמה הזו נעשה שימוש בכללים הבאים של חומת האש:

  • fw-allow-health-check. כלל תעבורה נכנסת (ingress) שחל על המופעים (instances) שמתבצע איזון עומסים ביניהם, ומאפשר את כל תעבורת ה-TCP מטווחים של בדיקות תקינותGoogle Cloud. בדוגמה הזו, תג היעד load-balanced-backend משמש לזיהוי המכונות הווירטואליות שכלל חומת האש חל עליהן.

  • fw-allow-proxies. כלל תעבורת נתונים נכנסת (ingress) שחל על המופעים שמתבצע איזון העומסים שלהם, שמאפשר תעבורת TCP ביציאות 80, 443 ו-8080 משרתי ה-proxy המנוהלים של מאזן העומסים החיצוני האזורי של האפליקציות. בדוגמה הזו נעשה שימוש בתג היעד load-balanced-backend כדי לזהות את המכונות הווירטואליות שכלל חומת האש חל עליהן.

בלי כללי חומת האש האלה, הכלל default deny ingress חוסם תנועה נכנסת למופעי ה-Backend.

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

המסוף

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

    מעבר לכללי חומת אש

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

    • Name (שם): fw-allow-health-check
    • רשת: lb-network
    • כיוון התנועה: כניסה
    • פעולה במקרה של התאמה: אישור
    • יעדים: תגי יעד שצוינו
    • תגי טירגוט: load-balanced-backend
    • מסנן מקור: טווחים של כתובות IPv4
    • טווחים של כתובות IPv4 של המקור: 35.191.0.0/16,130.211.0.0/22
    • פרוטוקולים ויציאות:
      • בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
      • מסמנים את תיבת הסימון TCP ומזינים 80 כמספר היציאה.
        מומלץ להגביל את הכלל הזה רק לפרוטוקולים ולפורטים שתואמים לאלה שמשמשים בבדיקת תקינות. אם משתמשים ב-tcp:80 לפרוטוקול וליציאה, Google Cloud יכול להשתמש ב-HTTP ביציאה 80 כדי ליצור קשר עם המכונות הווירטואליות, אבל הוא לא יכול להשתמש ב-HTTPS ביציאה 443 כדי ליצור איתן קשר.
  3. לוחצים על יצירה.

  4. לוחצים על Create firewall rule (יצירת כלל חומת אש) כדי ליצור את הכלל שיאפשר לשרתי ה-Proxy של מאזן העומסים להתחבר לשרתים העורפיים:

    • Name (שם): fw-allow-proxies
    • רשת: lb-network
    • כיוון התנועה: כניסה
    • פעולה במקרה של התאמה: אישור
    • יעדים: תגי יעד שצוינו
    • תגי טירגוט: load-balanced-backend
    • מסנן מקור: טווחים של כתובות IPv4
    • טווחי IPv4 של המקור: 10.129.0.0/23
    • פרוטוקולים ויציאות:
      • בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
      • מסמנים את תיבת הסימון TCP ומזינים את הערך 80, 443, 8080 עבור מספרי היציאות.
  5. לוחצים על יצירה.

gcloud

  1. יוצרים את הכלל fw-allow-health-check כדי לאפשר Google Cloudבדיקות תקינות. בדוגמה הזו, כל תנועת ה-TCP מבודקי בדיקת תקינות מורשית, אבל אתם יכולים להגדיר קבוצה מצומצמת יותר של יציאות בהתאם לצרכים שלכם.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=35.191.0.0/16,130.211.0.0/22 \
        --target-tags=load-balanced-backend \
        --rules=tcp
    
  2. יוצרים את כלל fw-allow-proxies כדי לאפשר לשרתי ה-proxy של מאזן העומסים החיצוני האזורי של האפליקציות להתחבר לקצה העורפי. מגדירים את source-ranges לטווחים שהוקצו לתת-הרשת של שרת ה-proxy בלבד, לדוגמה, 10.129.0.0/23.

    gcloud compute firewall-rules create fw-allow-proxies \
      --network=lb-network \
      --action=allow \
      --direction=ingress \
      --source-ranges=source-range \
      --target-tags=load-balanced-backend \
      --rules=tcp:80,tcp:443,tcp:8080
    

Terraform

כדי ליצור את הכללים בחומת האש, משתמשים במשאב google_compute_firewall.

resource "google_compute_firewall" "default" {
  name = "fw-allow-health-check"
  allow {
    protocol = "tcp"
  }
  direction     = "INGRESS"
  network       = google_compute_network.default.id
  priority      = 1000
  source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
  target_tags   = ["load-balanced-backend"]
}
resource "google_compute_firewall" "allow_proxy" {
  name = "fw-allow-proxies"
  allow {
    ports    = ["443"]
    protocol = "tcp"
  }
  allow {
    ports    = ["80"]
    protocol = "tcp"
  }
  allow {
    ports    = ["8080"]
    protocol = "tcp"
  }
  direction     = "INGRESS"
  network       = google_compute_network.default.id
  priority      = 1000
  source_ranges = ["10.129.0.0/23"]
  target_tags   = ["load-balanced-backend"]
}

API

יוצרים את כלל חומת האש fw-allow-health-check על ידי שליחת בקשת POST ל-method‏ firewalls.insert, ומחליפים את PROJECT_ID במזהה הפרויקט.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
  "name": "fw-allow-health-check",
  "network": "projects/PROJECT-ID/global/networks/lb-network",
  "sourceRanges": [HEALTH_CHECK_RANGES],
  "targetTags": [
    "load-balanced-backend"
  ],
  "allowed": [
    {
      "IPProtocol": "tcp"
    }
  ],
  "direction": "INGRESS"
}

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

יוצרים את כלל חומת האש fw-allow-proxies כדי לאפשר תעבורת TCP בתת-הרשת של ה-proxy עבור השיטה firewalls.insert. מחליפים את PROJECT_ID במזהה הפרויקט.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
  "name": "fw-allow-proxies",
  "network": "projects/PROJECT_ID/global/networks/lb-network",
  "sourceRanges": [
    "10.129.0.0/23"
  ],
  "targetTags": [
    "load-balanced-backend"
  ],
  "allowed": [
    {
      "IPProtocol": "tcp",
      "ports": [
        "80"
      ]
    },
    {
      "IPProtocol": "tcp",
      "ports": [
        "443"
      ]
    },
    {
      "IPProtocol": "tcp",
      "ports": [
        "8080"
      ]
    }
  ],
  "direction": "INGRESS"
}

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

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

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

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

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

המסוף

  1. יוצרים תבנית של הגדרות מכונה. נכנסים לדף Instance templates במסוף Google Cloud .

    כניסה לדף Instance templates

    1. לוחצים על Create instance template.
    2. בשדה Name (שם), מזינים l7-xlb-backend-template.
    3. מוודאים שהערך של דיסק אתחול מוגדר לקובץ אימג' של Debian, כמו Debian GNU/Linux 12 (bookworm). בהוראות האלה נעשה שימוש בפקודות שזמינות רק ב-Debian, כמו apt-get.
    4. לוחצים על אפשרויות מתקדמות.
    5. לוחצים על Networking ומגדירים את השדות הבאים:
      1. בשדה Network tags (תגי רשת), מזינים load-balanced-backend.
      2. בקטע Network interfaces (ממשקי רשת), בוחרים באפשרויות הבאות:
        • רשת: lb-network
        • Subnet (רשת משנה): backend-subnet
    6. לוחצים על ניהול. מזינים את הסקריפט הבא בשדה סקריפט לטעינה בזמן ההפעלה.

      #! /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
      
    7. לוחצים על יצירה.

  2. יוצרים קבוצה של מופעי מכונה מנוהלים. נכנסים לדף Instance groups במסוף Google Cloud .

    כניסה לדף Instance groups

    1. לוחצים על יצירת קבוצת מופעים.
    2. בוחרים באפשרות New managed instance group (stateless) (קבוצת מופעי מכונה מנוהלים חדשה (בלי שמירת מצב)). מידע נוסף מופיע במאמר קבוצות של מכונות וירטואליות בלי שמירת מצב או עם שמירת מצב.
    3. בשדה Name (שם), מזינים l7-xlb-backend-example.
    4. בקטע מיקום, בוחרים באפשרות אזור יחיד.
    5. בשדה אזור, בוחרים באפשרות us-west1.
    6. בשדה Zone, בוחרים באפשרות us-west1-a.
    7. בשדה תבנית של הגדרות מכונה, בוחרים באפשרות l7-xlb-backend-template.
    8. בקטע מצב התאמה אוטומטית לעומס, בוחרים באפשרות מופעל: הוספה והסרה של מכונות לקבוצה.

      מגדירים את המספר המינימלי של מופעים ל-2, ואת המספר המקסימלי של מופעים ל-2 או יותר.

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

gcloud

ההוראות במדריך הזה מבוססות על ההנחה שאתם משתמשים ב-Cloud Shell או בסביבה אחרת שבה מותקן bash.gcloud

  1. יוצרים תבנית של הגדרות מכונה עם שרת HTTP באמצעות הפקודה gcloud compute instance-templates create.

    gcloud compute instance-templates create l7-xlb-backend-template \
    --region=us-west1 \
    --network=lb-network \
    --subnet=backend-subnet \
    --tags=load-balanced-backend \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --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'
    
  2. יוצרים קבוצת מופעי מכונה מנוהלים באזור באמצעות הפקודה gcloud compute instance-groups managed create.

    gcloud compute instance-groups managed create l7-xlb-backend-example \
        --zone=us-west1-a \
        --size=2 \
        --template=l7-xlb-backend-template
    

Terraform

כדי ליצור את תבנית של הגדרות מכונה, משתמשים במשאב google_compute_instance_template.

resource "google_compute_instance_template" "default" {
  name = "l7-xlb-backend-template"
  disk {
    auto_delete  = true
    boot         = true
    device_name  = "persistent-disk-0"
    mode         = "READ_WRITE"
    source_image = "projects/debian-cloud/global/images/family/debian-12"
    type         = "PERSISTENT"
  }
  labels = {
    managed-by-cnrm = "true"
  }
  machine_type = "n1-standard-1"
  metadata = {
    startup-script = <<EOF
    #! /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://169.254.169.254/computeMetadata/v1/instance/name)"
    sudo echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    sudo systemctl restart apache2
    EOF
  }
  network_interface {
    access_config {
      network_tier = "PREMIUM"
    }
    network    = google_compute_network.default.id
    subnetwork = google_compute_subnetwork.default.id
  }
  region = "us-west1"
  scheduling {
    automatic_restart   = true
    on_host_maintenance = "MIGRATE"
    provisioning_model  = "STANDARD"
  }
  service_account {
    email  = "default"
    scopes = ["https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring.write", "https://www.googleapis.com/auth/pubsub", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", "https://www.googleapis.com/auth/trace.append"]
  }
  tags = ["load-balanced-backend"]
}

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

resource "google_compute_instance_group_manager" "default" {
  name = "l7-xlb-backend-example"
  zone = "us-west1-a"
  named_port {
    name = "http"
    port = 80
  }
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  base_instance_name = "vm"
  target_size        = 2
}

API

  1. יוצרים את תבנית של הגדרות מכונה באמצעות השיטה instanceTemplates.insert, ומחליפים את PROJECT_ID במזהה הפרויקט.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    {
     "name":"l7-xlb-backend-template",
     "properties": {
       "machineType":"e2-standard-2",
       "tags": {
         "items":[
           "load-balanced-backend"
         ]
       },
       "metadata": {
         "kind":"compute#metadata",
         "items":[
           {
             "key":"startup-script",
             "value":"#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2"
           }
         ]
       },
       "networkInterfaces":[
         {
           "network":"projects/PROJECT_ID/global/networks/lb-network",
           "subnetwork":"regions/us-west1/subnetworks/backend-subnet",
           "accessConfigs":[
             {
               "type":"ONE_TO_ONE_NAT"
             }
           ]
         }
       ],
       "disks": [
         {
           "index":0,
           "boot":true,
           "initializeParams": {
             "sourceImage":"projects/debian-cloud/global/images/family/debian-12"
           },
           "autoDelete":true
         }
       ]
     }
    }
    
  2. יוצרים קבוצת מופעי מכונה מנוהלים בכל אזור באמצעות השיטה instanceGroupManagers.insert, ומחליפים את PROJECT_ID במזהה הפרויקט.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/{zone}/instanceGroupManagers
    {
     "name": "l7-xlb-backend-example",
     "zone": "projects/PROJECT_ID/zones/us-west1-a",
     "instanceTemplate": "projects/PROJECT_ID/global/instanceTemplates/l7-xlb-backend-template",
     "baseInstanceName": "l7-xlb-backend-example",
     "targetSize": 2
    }
    

הוספת יציאה עם שם לקבוצת המופעים

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

המסוף

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

    כניסה לדף Instance groups

  2. לוחצים על השם של קבוצת המכונות (בדוגמה הזו l7-xlb-backend-example).

  3. בדף סקירה כללית של קבוצת המופעים, לוחצים על עריכה .

  4. לוחצים על ציון מיפוי של שמות יציאות.

  5. לוחצים על Add item.

  6. בשדה 'שם הניוד', מזינים http. בשדה של מספר היציאה, מזינים 80.

  7. לוחצים על Save.

gcloud

משתמשים בפקודה gcloud compute instance-groups set-named-ports.

gcloud compute instance-groups set-named-ports l7-xlb-backend-example \
    --named-ports http:80 \
    --zone us-west1-a

Terraform

המאפיין named_port כלול בדוגמה לקבוצת מופעי מכונה מנוהלים.

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

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

המסוף

  1. נכנסים לדף Reserve a static address במסוף Google Cloud .

    מעבר אל Reserve a static address

  2. בוחרים שם לכתובת החדשה.

  3. בקטע Network Service Tier, בוחרים באפשרות Standard.

  4. בשביל IP version, בוחרים IPv4. כתובות IPv6 יכולות להיות גלובליות בלבד, ואפשר להשתמש בהן רק עם מאזני עומסים גלובליים.

  5. בקטע Type, בוחרים באפשרות Regional.

  6. בשדה Region, בוחרים us-west1.

  7. משאירים את האפשרות מצורף ל במצב ללא. אחרי שיוצרים את מאזן העומסים, כתובת ה-IP הזו מצורפת לכלל ההעברה של מאזן העומסים.

  8. לוחצים על שמירה כדי לשמור את כתובת ה-IP.

gcloud

  1. כדי לשמור כתובת IP חיצונית סטטית באמצעות gcloud compute, משתמשים בפקודה compute addresses create.

    gcloud compute addresses create ADDRESS_NAME  \
       --region=us-west1 \
       --network-tier=STANDARD
    

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

    • ADDRESS_NAME: השם שרוצים לתת לכתובת הזו.
    • REGION: האזור שבו רוצים לשריין את הכתובת הזו. האזור הזה צריך להיות זהה לאזור של מאזן העומסים. כל כתובות ה-IP האזוריות הן IPv4.
  2. משתמשים בפקודה compute addresses describe כדי לראות את התוצאה:

    gcloud compute addresses describe ADDRESS_NAME
    

Terraform

כדי לשמור את כתובת ה-IP, משתמשים במשאב google_compute_address.

resource "google_compute_address" "default" {
  name         = "address-name"
  address_type = "EXTERNAL"
  network_tier = "STANDARD"
  region       = "us-west1"
}

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

API

כדי ליצור כתובת IPv4 אזורית, קוראים לשיטה האזורית addresses.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

גוף הבקשה צריך לכלול את הפרטים הבאים:

{
  "name": "ADDRESS_NAME"
  "networkTier": "STANDARD"
  "region": "us-west1"
}

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

  • ADDRESS_NAME: השם של הכתובת
  • REGION: שם האזור של הבקשה
  • PROJECT_ID: מזהה הפרויקט של הבקשה הזו

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

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

  • בדיקת תקינות של HTTP
  • שירות קצה עורפי עם קבוצת מופעי מכונה מנוהלים כקצה עורפי
  • מפת URL
    • אם הוגדר אזור לשרת ה-proxy של HTTP(S) ביעד, חשוב לעיין במפת URL אזורית. מפת URL אזורית מעבירה בקשות לשירות לקצה העורפי אזורי על סמך כללים שאתם מגדירים למארח ולנתיב של כתובת URL נכנסת. אפשר להפנות למפת URL אזורית רק מכלל אזורי של שרת proxy ליעד באותו אזור.
  • אישור SSL (ל-HTTPS)
  • שרת proxy יעד
  • כלל העברה

זמינות ה-Proxy

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

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

המסוף

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

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

    כניסה לדף Load balancing

  2. לוחצים על Create load balancer (יצירת מאזן עומסים).
  3. בקטע Type of load balancer, בוחרים באפשרות Application Load Balancer (HTTP/HTTPS) ולוחצים על Next.
  4. בקטע Public facing or internal (פנימי או גלוי לכולם), בוחרים באפשרות Public facing (external) (גלוי לכולם – חיצוני) ולוחצים על Next (הבא).
  5. לפריסה גלובלית או פריסה באזור יחיד, בוחרים באפשרות הכי טוב לעומסי עבודה אזוריים ולוחצים על הבא.
  6. לוחצים על Configure (הגדרה).

הגדרה בסיסית

  1. בשדה של שם מאזן העומסים, מזינים regional-l7-xlb.
  2. בשדה אזור, בוחרים באפשרות us-west1.
  3. בשדה רשת, בוחרים באפשרות lb-network.

שמירת תת-רשת של שרת proxy בלבד

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

  1. לוחצים על שמירת רשת משנה.
  2. בשדה Name (שם), מזינים proxy-only-subnet.
  3. בשדה טווח כתובות IP, מזינים 10.129.0.0/23.
  4. לוחצים על הוספה.

הגדרת הקצה הקדמי

ל-HTTP:

  1. לוחצים על Frontend configuration.
  2. מגדירים את Name לערך l7-xlb-forwarding-rule.
  3. מגדירים את Protocol לערך HTTP.
  4. מגדירים את מסלול שירות הרשת בתור Standard.
  5. מגדירים את Port לערך 80.
  6. בוחרים את כתובת ה-IP שיצרתם בקטע שמירת כתובת ה-IP של מאזן העומסים.
  7. לוחצים על סיום.

ל-HTTPS:

  1. לוחצים על Frontend configuration.
  2. בשדה שם מזינים l7-xlb-forwarding-rule.
  3. בשדה Protocol, בוחרים באפשרות HTTPS (includes HTTP/2).
  4. מגדירים את מסלול שירות הרשת בתור Standard.
  5. מוודאים שהיציאה Port מוגדרת ל-443.
  6. בוחרים את כתובת ה-IP שיצרתם בקטע שמירת כתובת ה-IP של מאזן העומסים.
  7. כדי להקצות אישור SSL לשרת ה-proxy של HTTPS של מאזן העומסים, אפשר להשתמש באישור SSL של Compute Engine או באישור של Certificate Manager.

    1. כדי לצרף אישור של Certificate Manager ל-Proxy היעד של HTTPS במאזן העומסים, בקטע Choose certificate repository בוחרים באפשרות Certificates.

      אם כבר יש לכם אישור קיים של Certificate Manager שאתם רוצים לבחור, אתם צריכים לפעול באופן הבא:

      1. לוחצים על הוספת אישור.
      2. לוחצים על Select an existing certificate (בחירת אישור קיים) ובוחרים את האישור מתוך רשימת האישורים.
      3. לוחצים על בחירה.

      אחרי שבוחרים את האישור החדש של Certificate Manager, הוא מופיע ברשימת האישורים.

      כדי ליצור אישור חדש ב-Certificate Manager:

      1. לוחצים על הוספת אישור.
      2. לוחצים על יצירת אישור חדש.
      3. כדי ליצור אישור חדש, פועלים לפי השלבים שמתחילים בשלב 3, כפי שמתואר באחת משיטות ההגדרה הבאות במסמכי התיעוד של Certificate Manager:

      אחרי שיוצרים את האישור החדש ב-Certificate Manager, הוא מופיע ברשימת האישורים.

    2. כדי לצרף אישור SSL של Compute Engine לשרת ה-proxy של HTTPS של מאזן העומסים, בקטע Choose certificate repository בוחרים באפשרות Classic Certificates.

      1. ברשימה Certificate, מבצעים את הפעולות הבאות:
        1. אם כבר יש לכם משאב של אישור SSL בניהול עצמי ב-Compute Engine, בוחרים את אישור ה-SSL הראשי.
        2. לוחצים על יצירת אישור חדש.
          1. בשדה שם מזינים l7-xlb-cert.
          2. בשדות המתאימים, מעלים את הקבצים בפורמט PEM:
            • אישור
            • מפתח פרטי
          3. לוחצים על יצירה.
        3. אופציונלי: כדי להוסיף אישורים בנוסף לאישור ה-SSL הראשי:
          1. לוחצים על הוספת אישור.
          2. אם כבר יש לכם אישור, בוחרים אותו מהרשימה אישורים.
          3. אופציונלי: לוחצים על יצירת אישור חדש ופועלים לפי ההוראות שצוינו בשלב הקודם.
  8. בוחרים מדיניות SSL מהרשימה מדיניות SSL. אופציונלי: כדי ליצור מדיניות SSL, מבצעים את הפעולות הבאות:

    1. ברשימה SSL policy (מדיניות SSL), בוחרים באפשרות Create a policy (יצירת מדיניות).
    2. מזינים שם למדיניות ה-SSL.
    3. בוחרים גרסת TLS מינימלית. ערך ברירת המחדל הוא TLS 1.0.
    4. בוחרים אחד מהפרופילים המנוהלים על ידי Google שהוגדרו מראש, או בוחרים פרופיל בהתאמה אישית שמאפשר לבחור תכונות SSL בנפרד. מוצגות האפשרויות תכונות מופעלות ותכונות מושבתות.
    5. לוחצים על Save.

    אם לא יצרתם מדיניות SSL, תחול מדיניות SSL שמוגדרת כברירת מחדל Google Cloud .

  9. לוחצים על סיום.

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

  1. לוחצים על Backend configuration.
  2. בתפריט Create or select backend services (יצירה או בחירה של שירותי קצה עורפי), בוחרים באפשרות Create a backend service (יצירת שירות קצה עורפי).
  3. מגדירים את השם של שירות הקצה העורפי ל-l7-xlb-backend-service.
  4. בשדה Protocol, בוחרים באפשרות HTTP.
  5. בשדה Named Port (יציאה עם שם), מזינים http.
  6. מגדירים את Backend type בתור Instance group.
  7. ברשימה Health check, לוחצים על Create a health check ומזינים את הפרטים הבאים:
    • בשדה שם מזינים l7-xlb-basic-check.
    • ברשימה Protocol, בוחרים באפשרות HTTP.
    • בשדה יציאה, מזינים 80.
  8. לוחצים על יצירה.
  9. בקטע New backend (מערכת עורפית חדשה):
    1. מגדירים את Instance group ל-l7-xlb-backend-example.
    2. מגדירים את ניוד מספרים לערך 80.
    3. מגדירים את Balancing mode (מצב איזון) לערך Utilization (ניצול).
    4. לוחצים על סיום.
  10. לוחצים על יצירה.

הגדרת כללי הניתוב

  1. לוחצים על כללי ניתוב.
  2. בקטע Mode (מצב), בוחרים באפשרות Simple host and path rule (כלל פשוט של מארח ונתיב).
  3. מוודאים ש-l7-xlb-backend-service הוא שירות הקצה העורפי היחיד לכל מארח שלא תואם ולכל נתיב שלא תואם.

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

  1. לוחצים על Review and finalize.
  2. בודקים את הגדרות התצורה של מאזן העומסים.
  3. אופציונלי: לוחצים על Equivalent code (קוד מקביל) כדי לראות את בקשת API בארכיטקטורת REST שתשמש ליצירת מאזן העומסים.
  4. לוחצים על יצירה.

gcloud

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

    gcloud compute health-checks create http l7-xlb-basic-check \
       --region=us-west1 \
       --request-path='/' \
       --use-serving-port
    
  2. מגדירים את שירות הקצה העורפי באמצעות הפקודה gcloud compute backend-services create.

    gcloud compute backend-services create l7-xlb-backend-service \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTP \
      --port-name=http \
      --health-checks=l7-xlb-basic-check \
      --health-checks-region=us-west1 \
      --region=us-west1
    
  3. מוסיפים קצה עורפי לשירות הקצה העורפי באמצעות הפקודה gcloud compute backend-services add-backend.

    gcloud compute backend-services add-backend l7-xlb-backend-service \
      --balancing-mode=UTILIZATION \
      --instance-group=l7-xlb-backend-example \
      --instance-group-zone=us-west1-a \
      --region=us-west1
    
  4. יוצרים את מפת ה-URL באמצעות הפקודה gcloud compute url-maps create.

    gcloud compute url-maps create regional-l7-xlb-map \
      --default-service=l7-xlb-backend-service \
      --region=us-west1
    
  5. יוצרים את שרת ה-proxy של היעד.

    ל-HTTP:

    כדי ליצור שרת proxy ליעד למאזן עומסים של HTTP, מריצים את הפקודה gcloud compute target-http-proxies create.

    gcloud compute target-http-proxies create l7-xlb-proxy \
      --url-map=regional-l7-xlb-map \
      --url-map-region=us-west1 \
      --region=us-west1
    

    ל-HTTPS:

    אתם יכולים ליצור אישורים של Compute Engine או של Certificate Manager. אפשר להשתמש בכל אחת מהשיטות הבאות כדי ליצור אישורים באמצעות Certificate Manager:

    אחרי שיוצרים אישורים, מצרפים אותם ישירות לשרת ה-proxy של היעד.

    1. מקצים את נתיבי הקבצים לשמות של משתנים.

      export LB_CERT=path to PEM-formatted file
      
      export LB_PRIVATE_KEY=path to PEM-formatted file
      
    2. יוצרים אישור SSL אזורי באמצעות הפקודה gcloud compute ssl-certificates create.

      gcloud compute ssl-certificates create l7-xlb-cert \
       --certificate=$LB_CERT \
       --private-key=$LB_PRIVATE_KEY \
       --region=us-west1
      
    3. משתמשים באישור ה-SSL האזורי כדי ליצור שרת proxy ליעד באמצעות הפקודה gcloud compute target-https-proxies create.

      gcloud compute target-https-proxies create l7-xlb-proxy \
       --url-map=regional-l7-xlb-map \
       --region=us-west1 \
       --ssl-certificates=l7-xlb-cert
      
  6. יוצרים את כלל ההעברה.

    ל-HTTP:

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

    gcloud compute forwarding-rules create l7-xlb-forwarding-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=STANDARD \
      --network=lb-network \
      --address=ADDRESS_NAME \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=l7-xlb-proxy \
      --target-http-proxy-region=us-west1
    

    ל-HTTPS:

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

    gcloud compute forwarding-rules create l7-xlb-forwarding-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=STANDARD \
      --network=lb-network \
      --address=ADDRESS_NAME \
      --ports=443 \
      --region=us-west1 \
      --target-https-proxy=l7-xlb-proxy \
      --target-https-proxy-region=us-west1
    

Terraform

כדי ליצור את בדיקת התקינות, משתמשים במשאב google_compute_region_health_check.

resource "google_compute_region_health_check" "default" {
  name               = "l7-xlb-basic-check"
  check_interval_sec = 5
  healthy_threshold  = 2
  http_health_check {
    port_specification = "USE_SERVING_PORT"
    proxy_header       = "NONE"
    request_path       = "/"
  }
  region              = "us-west1"
  timeout_sec         = 5
  unhealthy_threshold = 2
}

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

resource "google_compute_region_backend_service" "default" {
  name                  = "l7-xlb-backend-service"
  region                = "us-west1"
  load_balancing_scheme = "EXTERNAL_MANAGED"
  health_checks         = [google_compute_region_health_check.default.id]
  protocol              = "HTTP"
  session_affinity      = "NONE"
  timeout_sec           = 30
  backend {
    group           = google_compute_instance_group_manager.default.instance_group
    balancing_mode  = "UTILIZATION"
    capacity_scaler = 1.0
  }
}

כדי ליצור את מפת ה-URL, משתמשים במשאב google_compute_region_url_map.

resource "google_compute_region_url_map" "default" {
  name            = "regional-l7-xlb-map"
  region          = "us-west1"
  default_service = google_compute_region_backend_service.default.id
}

כדי ליצור את ה-proxy של יעד HTTP, משתמשים במשאב google_compute_region_target_http_proxy.

resource "google_compute_region_target_http_proxy" "default" {
  name    = "l7-xlb-proxy"
  region  = "us-west1"
  url_map = google_compute_region_url_map.default.id
}

כדי ליצור את כלל ההעברה, משתמשים במשאב google_compute_forwarding_rule.

resource "google_compute_forwarding_rule" "default" {
  name       = "l7-xlb-forwarding-rule"
  provider   = google-beta
  depends_on = [google_compute_subnetwork.proxy_only]
  region     = "us-west1"

  ip_protocol           = "TCP"
  load_balancing_scheme = "EXTERNAL_MANAGED"
  port_range            = "80"
  target                = google_compute_region_target_http_proxy.default.id
  network               = google_compute_network.default.id
  ip_address            = google_compute_address.default.id
  network_tier          = "STANDARD"
}

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

API

כדי ליצור את בדיקת תקינות, שולחים בקשת POST אל ה-method‏ regionHealthChecks.insert ומחליפים את PROJECT_ID במזהה הפרויקט.

POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/{region}/healthChecks
{
  "name": "l7-xlb-basic-check",
  "type": "HTTP",
  "httpHealthCheck": {
    "portSpecification": "USE_SERVING_PORT"
  }
}

יוצרים את שירות הלקצה העורפי האזורי על ידי שליחת בקשת POST ל-method‏ regionBackendServices.insert, ומחליפים את PROJECT_ID במזהה הפרויקט.

POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/backendServices
{
  "name": "l7-xlb-backend-service",
  "backends": [
    {
      "group": "projects/<var>PROJECT_ID</var>/zones/us-west1-a/instanceGroups/l7-xlb-backend-example",
      "balancingMode": "UTILIZATION"
    }
  ],
  "healthChecks": [
    "projects/<var>PROJECT_ID</var>/regions/us-west1/healthChecks/l7-xlb-basic-check"
  ],
  "loadBalancingScheme": "EXTERNAL_MANAGED"
}

כדי ליצור את מפת ה-URL, שולחים בקשת POST ל-method‏ regionUrlMaps.insert ומחליפים את PROJECT_ID במזהה הפרויקט.

POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/urlMaps
{
  "name": "regional-l7-xlb-map",
  "defaultService": "projects/<var>PROJECT_ID</var>/regions/us-west1/backendServices/l7-xlb-backend-service"
}

יוצרים את ה-Proxy ל-HTTP של היעד על ידי שליחת בקשת POST לשיטה regionTargetHttpProxies.insert, ומחליפים את PROJECT_ID במזהה הפרויקט.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/targetHttpProxy
{
  "name": "l7-xlb-proxy",
  "urlMap": "projects/PROJECT_ID/global/urlMaps/regional-l7-xlb-map",
  "region": "us-west1"
}

יוצרים את כלל ההעברה על ידי שליחת בקשת POST ל-method‏ forwardingRules.insert, ומחליפים את PROJECT_ID במזהה הפרויקט.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules
{
  "name": "l7-xlb-forwarding-rule",
  "IPAddress": "10.1.2.99",
  "IPProtocol": "TCP",
  "portRange": "80-80",
  "target": "projects/PROJECT_ID/regions/us-west1/targetHttpProxies/l7-xlb-proxy",
  "loadBalancingScheme": "EXTERNAL_MANAGED",
  "network": "projects/PROJECT_ID/global/networks/lb-network",
  "networkTier": "STANDARD",
}

חיבור הדומיין למאזן העומסים

אחרי שיוצרים את מאזן העומסים, רושמים את כתובת ה-IP שמשויכת למאזן העומסים – לדוגמה, 30.90.80.100. כדי להפנות את הדומיין למאזן העומסים, צריך ליצור רשומת A באמצעות שירות הרישום של הדומיין. אם הוספתם מספר דומיינים לאישור ה-SSL, צריך להוסיף רשומת A לכל אחד מהם, כשכולם מפנים לכתובת ה-IP של מאזן העומסים. לדוגמה, כדי ליצור רשומות A בשביל www.example.com ובשביל example.com, משתמשים בפקודה הבאה:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

אם אתם משתמשים ב-Cloud DNS כספק ה-DNS, תוכלו לעיין במאמר בנושא הוספה, שינוי ומחיקה של רשומות.

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

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

המסוף

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

    כניסה לדף Load balancing

  2. בוחרים את מאזן העומסים שיצרתם.
  3. בקטע Backend, מוודאים שהמכונות הווירטואליות תקינות. העמודה Healthy אמורה להתמלא, ולציין ששתי המכונות הווירטואליות תקינות (2/2). אם לא, נסו קודם לטעון מחדש את הדף. יכול להיות שיחלפו כמה רגעים עד שמסוף Google Cloud יציין שהמכונות הווירטואליות תקינות. אם ה-backends לא מופיעים כפעילים אחרי כמה דקות, צריך לבדוק את הגדרת חומת האש ואת תג הרשת שהוקצה למכונות הווירטואליות של ה-backend.
  4. אחרי שבמסוף מוצג שהמופעים בעורף בריאים, אפשר לבדוק את מאזן העומסים באמצעות דפדפן אינטרנט. לשם כך, עוברים אל https://IP_ADDRESS (או אל http://IP_ADDRESS) ומחליפים את IP_ADDRESS בכתובת ה-IP של מאזן העומסים. Google Cloud
  5. אם השתמשתם באישור בחתימה עצמית לבדיקת HTTPS, בדפדפן תוצג אזהרה. צריך להגדיר במפורש בדפדפן לאשר אישור בחתימה עצמית.
  6. בדפדפן אמור להיות מוצג דף עם תוכן שכולל את השם של המופע ששירת את הדף, יחד עם האזור שלו (לדוגמה, Page served from: lb-backend-example-xxxx). אם הדפדפן לא מציג את הדף הזה, כדאי לעיין בהגדרות התצורה במדריך הזה.

gcloud

שימו לב לכתובת ה-IPv4 שהוקצתה:

gcloud beta compute addresses describe ADDRESS_NAME \
    --format="get(address)" \
    --region="us-west1"

כדי לבדוק את מאזן העומסים באמצעות דפדפן אינטרנט, עוברים אל https://IP_ADDRESS (או אל http://IP_ADDRESS). מחליפים את IP_ADDRESS בכתובת ה-IP של מאזן העומסים.

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

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

אפשרויות הגדרה נוספות

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

הפעלת זיקה לסשן

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

כשמופעלת זיקה לקובץ Cookie שנוצר, מאזן העומסים מנפיק קובץ Cookie בבקשה הראשונה. לכל בקשה עוקבת עם אותו קובץ Cookie, מאזן העומסים מפנה את הבקשה לאותה מכונה וירטואלית או לאותו קצה עורפי. במאזני עומסים חיצוניים אזוריים של אפליקציות, קובץ ה-Cookie נקרא GCILB.

כשזיקה לשדה כותרת מופעלת, מאזן העומסים מנתב בקשות למכונות וירטואליות או לנקודות קצה בעורף הרשת (NEG) על סמך הערך של כותרת ה-HTTP שצוינה בדגל --custom-request-header. הזיקה לשדה כותרת תקפה רק אם מדיניות המיקום של איזון העומסים היא RING_HASH או MAGLEV, ופונקציית הגיבוב העקבית של שירות ה-Backend מציינת את השם של כותרת ה-HTTP.

כשמפעילים את ההצמדה של קובצי Cookie של HTTP, מאזן העומסים מנתב בקשות למכונות וירטואליות בעורף או לנקודות קצה ב-NEG, על סמך קובץ Cookie של HTTP שנקרא בדגל HTTP_COOKIE עם הדגל האופציונלי --affinity-cookie-ttl. אם הלקוח לא מספק את קובץ ה-Cookie בבקשת ה-HTTP שלו, ה-proxy יוצר את קובץ ה-Cookie ומחזיר אותו ללקוח בכותרת Set-Cookie. הזיקה לקובצי Cookie של HTTP תקפה רק אם מדיניות המיקום של איזון העומסים היא RING_HASH או MAGLEV, והגיבוב העקבי של שירות הקצה העורפי מציין את קובץ ה-Cookie של HTTP.

המסוף

כדי להפעיל או לשנות את הזיקה לסשן (session affinity) בשירות לקצה העורפי:

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

    כניסה לדף Load balancing

  2. בוחרים את מאזן העומסים שיצרתם.

  3. לוחצים על Backends.

  4. לוחצים על l7-xlb-backend-service (השם של שירות הקצה העורפי שיצרתם בדוגמה הזו) ואז על Edit.

  5. בדף Backend service details (פרטי שירות לקצה העורפי), לוחצים על Advanced configuration (הגדרה מתקדמת).

  6. בקטע Session affinity (העדפה לסשן), בוחרים את סוג ההעדפה לסשן הרצוי מהתפריט.

  7. לוחצים על עדכון.

gcloud

כדי לעדכן את שירות לקצה העורפי לסוגים שונים של זיקה לסשן (session affinity), משתמשים בפקודות הבאות:l7-xlb-backend-service

gcloud compute backend-services update l7-xlb-backend-service \
    --session-affinity=GENERATED_COOKIE | HEADER_FIELD | HTTP_COOKIE | CLIENT_IP
    --region=us-west1

API

כדי להגדיר זיקה לסשן (session affinity), שולחים בקשת PATCH אל ה-method‏ regionBackendServices/patch.

PATCH https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/us-west1/regionBackendServices/l7-xlb-backend-service
{
  "sessionAffinity": <var>"GENERATED_COOKIE" | "HEADER_FIELD" | "HTTP_COOKIE" | "CLIENT_IP"</var>
}

עדכון פסק הזמן של שמירת החיבור בחיים ב-HTTP של הלקוח

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

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

המסוף

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

    כניסה לדף Load balancing

  2. לוחצים על השם של מאזן העומסים שרוצים לשנות.
  3. לוחצים על עריכה.
  4. לוחצים על Frontend configuration.
  5. מרחיבים את הקטע תכונות מתקדמות. בשדה HTTP keepalive timeout, מזינים ערך של פסק זמן.
  6. לוחצים על עדכון.
  7. כדי לבדוק את השינויים, לוחצים על בדיקה וסיום ואז על עדכון.

gcloud

למאזן עומסים מסוג HTTP, מעדכנים את ה-proxy של HTTP היעד באמצעות הפקודה gcloud compute target-http-proxies update.

      gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \
          --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
          --region=REGION
      

במאזן עומסים מסוג HTTPS, מעדכנים את שרת ה-proxy של HTTPS באמצעות הפקודה gcloud compute target-https-proxies update.

      gcloud compute target-https-proxies update TARGET_HTTP_PROXY_NAME \
          --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
          --region REGION
      

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

  • TARGET_HTTP_PROXY_NAME: השם של ה-proxy ל-HTTP של היעד.
  • TARGET_HTTPS_PROXY_NAME: השם של שרת ה-proxy ל-HTTPS של היעד.
  • HTTP_KEEP_ALIVE_TIMEOUT_SEC: ערך הזמן הקצוב לתפוגה של HTTP keepalive, מ-5 עד 600 שניות.

הפעלת IAP במאזן עומסים חיצוני של אפליקציות (ALB)

אפשר להגדיר את IAP כך שיהיה מופעל או מושבת (ברירת מחדל). אם האפשרות הזו מופעלת, צריך לספק ערכים למאפיינים oauth2-client-id ו-oauth2-client-secret.

כדי להפעיל את IAP, מעדכנים את שירות לקצה העורפי כך שיכלול את הדגל --iap=enabled עם הערכים oauth2-client-id ו-oauth2-client-secret.

אפשר גם להפעיל את IAP למשאב Compute Engine באמצעות מסוף Google Cloud ,‏ ה-CLI של gcloud או API.

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