במדריך הזה מוסבר איך ליצור פריסה של מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי עם שקלול לכל מכונה וירטואלית (VM), באמצעות שירות לקצה העורפי אזורי.
במדריך הזה תיצרו קבוצת מכונות עם שלוש מכונות וירטואליות ותקצו משקלים לכל מכונה. אתם יוצרים בדיקת תקינות של HTTP כדי לדווח על משקלים של מופעי קצה עורפי. איזון עומסים משוקלל מופעל בשירות לקצה העורפי עם מדיניות מאזן עומסים מקומית כ-WEIGHTED_MAGLEV.
לפני שמתחילים
- מומלץ לקרוא את סקירת מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי שמבוסס על שירות לקצה העורפי.
מתקינים את Google Cloud CLI. סקירה כללית מלאה של הכלי זמינה במאמר סקירה כללית על ה-CLI של gcloud. אפשר למצוא פקודות שקשורות לאיזון עומסים במדריך העזר ל-API ול-CLI של gcloud.
אם לא הפעלתם את Google Cloud CLI בעבר, קודם מריצים את
gcloud initכדי לבצע אימות.מפעילים את ה-API של Compute.
gcloud services enable compute.googleapis.com
יצירת רשת VPC, רשתות משנה וכללי חומת אש
יוצרים רשת VPC, תת-רשת וכללי חומת אש שמאפשרים תעבורת נתונים נכנסת (ingress) כדי לאפשר חיבורים למכונות הווירטואליות של ה-Backend של מאזן העומסים.
יוצרים רשת VPC ורשת משנה.
א. כדי ליצור את רשת ה-VPC, מריצים את הפקודה
gcloud compute networks create:gcloud compute networks create NETWORK_NAME --subnet-mode custom
ב. בדוגמה הזו, טווח כתובות ה-IPv4 הראשי של רשת המשנה הוא
10.10.0.0/24. כדי ליצור את רשת המשנה, מריצים את הפקודהgcloud compute networks subnets create:gcloud compute networks subnets create SUBNET_NAME \ --network=NETWORK_NAME \ --range=10.10.0.0/24 \ --region=us-central1
מחליפים את מה שכתוב בשדות הבאים:
-
NETWORK_NAME: השם של רשת ה-VPC שרוצים ליצור. -
SUBNET_NAME: השם של רשת המשנה שרוצים ליצור.
-
יוצרים כלל חומת אש שמאפשר תעבורת נתונים נכנסת (ingress) כדי לאפשר מסירת מנות שנשלחות ליעדים של יציאות TCP 80 ו-443 אל מכונות וירטואליות של קצה העורפי. בדוגמה הזו, כלל חומת האש מאפשר חיבורים מכל כתובת IP של מקור. כלל חומת האש חל על מכונות וירטואליות עם תג הרשת
network-lb-tag.כדי ליצור את הכלל בחומת האש, מריצים את הפקודה
gcloud compute firewall-rules create:gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --direction=INGRESS \ --priority=1000 \ --network=NETWORK_NAME \ --action=ALLOW \ --rules=tcp:80,tcp:443 \ --source-ranges=0.0.0.0/0 \ --target-tags=network-lb-tag
מחליפים את
FIREWALL_RULE_NAMEבשם של כלל חומת האש שרוצים ליצור.
יצירת מכונות וירטואליות והקצאת משקלים
יוצרים שלוש מכונות וירטואליות ומקצים להן משקלים:
מגדירים שלוש מכונות וירטואליות (VM) בקצה העורפי כדי להחזיר את המשקלים בכותרת
X-Load-Balancing-Endpoint-Weightעם תגובות HTTP. במדריך הזה, מגדירים שרת עורפי (backend instance) אחד לדיווח על משקל של אפס, שרת עורפי (backend instance) שני לדיווח על משקל של 100 ושרת עורפי (backend instance) שלישי לדיווח על משקל של 900.כדי ליצור את המכונות, מריצים את הפקודה
gcloud compute instances create:gcloud compute instances create instance-0 \ --zone=us-central1-a \ --tags=network-lb-tag \ --image-family=debian-12 \ --image-project=debian-cloud \ --subnet=SUBNET_NAME \ --metadata=load-balancing-weight=0,startup-script='#! /bin/bash apt-get update apt-get install apache2 -y ln -sr /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html lb_weight="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/attributes/load-balancing-weight)" echo "Header set X-Load-Balancing-Endpoint-Weight \"$lb_weight\"" | \ tee /etc/apache2/conf-enabled/headers.conf systemctl restart apache2'
gcloud compute instances create instance-100 \ --zone=us-central1-a \ --tags=network-lb-tag \ --image-family=debian-12 \ --image-project=debian-cloud \ --subnet=SUBNET_NAME \ --metadata=load-balancing-weight=100,startup-script='#! /bin/bash apt-get update apt-get install apache2 -y ln -sr /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html lb_weight="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/attributes/load-balancing-weight)" echo "Header set X-Load-Balancing-Endpoint-Weight \"$lb_weight\"" | \ tee /etc/apache2/conf-enabled/headers.conf systemctl restart apache2'
gcloud compute instances create instance-900 \ --zone=us-central1-a \ --tags=network-lb-tag \ --image-family=debian-12 \ --image-project=debian-cloud \ --subnet=SUBNET_NAME \ --metadata=load-balancing-weight=900,startup-script='#! /bin/bash apt-get update apt-get install apache2 -y ln -sr /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html lb_weight="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/attributes/load-balancing-weight)" echo "Header set X-Load-Balancing-Endpoint-Weight \"$lb_weight\"" | \ tee /etc/apache2/conf-enabled/headers.conf systemctl restart apache2'
יצירת קבוצה של מופעי מכונה
במדריך הזה מוסבר איך ליצור קבוצת מופעים לא מנוהלת שמכילה את כל שלושת המופעים של מכונות וירטואליות(instance-0, instance-100 ו-instance-900).
כדי ליצור את קבוצת המכונות, מריצים את הפקודה
gcloud compute instance-groups unmanaged create:gcloud compute instance-groups unmanaged create INSTANCE_GROUP \ --zone=us-central1-a
gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP \ --zone=us-central1-a \ --instances=instance-0,instance-100,instance-900
מחליפים את
INSTANCE_GROUPבשם של קבוצת המכונות שרוצים ליצור.
יצירת בדיקת תקינות של HTTP
במדריך הזה, אתם מספקים הוראות ליצירת בדיקת תקינות של HTTP כדי לקרוא את תגובת ה-HTTP שמכילה את המשקל של מכונת ה-VM של ה-Backend".
כדי ליצור בדיקת תקינות של HTTP, מריצים את הפקודה
gcloud compute health-checks create:gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \ --region=us-central1
מחליפים את
HTTP_HEALTH_CHECK_NAMEבשם של בדיקת תקינות HTTP שרוצים ליצור.
יצירת שירות לקצה העורפי
בדוגמה הבאה מוסבר איך ליצור שירות אזורי חיצוני לעורף המערכת שמוגדר לשימוש באיזון עומסים משוקלל.
יוצרים שירות לקצה העורפי עם בדיקת תקינות של HTTP ומגדירים את מדיניות איזון העומסים של המקומיות ל-
WEIGHTED_MAGLEV.כדי ליצור את שירות לקצה העורפי, מריצים את הפקודה
gcloud compute backend-services create:gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=external \ --protocol=tcp \ --region=us-central1 \ --health-checks=HTTP_HEALTH_CHECK_NAME \ --health-checks-region=us-central1 \ --locality-lb-policy=WEIGHTED_MAGLEV
מחליפים את
BACKEND_SERVICE_NAMEבשם של שירות לקצה העורפי שרוצים ליצור.
מוסיפים את קבוצת המכונות לשירות הקצה העורפי.
כדי להוסיף את קבוצת המכונות, מריצים את הפקודה
gcloud compute backend-services add-backend:gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=INSTANCE_GROUP \ --instance-group-zone=us-central1-a \ --region=us-central1
שומרים כתובת IP חיצונית אזורית למאזן העומסים.
כדי לשמור כתובת IP אחת או יותר, מריצים את הפקודה
gcloud compute addresses create:gcloud compute addresses create ADDRESS_NAME \ --region us-central1
מחליפים את
ADDRESS_NAMEבשם של כתובת ה-IP שרוצים ליצור.משתמשים בפקודה
compute addresses describeכדי לראות את התוצאה. שימו לב לכתובת ה-IP החיצונית הסטטית השמורה (IP_ADDRESS).gcloud compute addresses describe ADDRESS_NAME
יוצרים כלל העברה באמצעות כתובת ה-IP החיצונית האזורית השמורה
IP_ADDRESS. מקשרים את כלל ההעברה לשירות העורפי.כדי ליצור את כלל ההעברה, מריצים את הפקודה
gcloud compute forwarding-rules create:gcloud compute forwarding-rules create FORWARDING_RULE \ --region=us-central1 \ --ports=80 \ --address=IP_ADDRESS \ --backend-service=BACKEND_SERVICE_NAME
מחליפים את מה שכתוב בשדות הבאים:
FORWARDING_RULE: השם של כלל ההעברה שרוצים ליצור.
IP_ADDRESS: כתובת ה-IP להקצאה למופע. משתמשים בכתובת ה-IP החיצונית הסטטית השמורה, ולא בשם הכתובת.
אימות משקלים של קצה עורפי באמצעות API של שירות קצה עורפי
מוודאים שהמשקלים של ה-backend מדווחים בצורה תקינה לבדיקת תקינות ה-HTTP.
כדי לקבל משקלים של שרתים עורפיים (יחד עם סטטוסים של תקינות) משירות לקצה העורפי, מריצים את הפקודה
gcloud compute backend-services get-health:gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region=us-central1
הפלט שיתקבל:
backend: https://www.googleapis.com/compute/projects/project-name/{project}/zones/us-central1-a/instanceGroups/{instance-group-name}
status:
healthStatus:
- forwardingRule: https://www.googleapis.com/compute/projects/{project}/regions/us-central1/forwardingRules/{firewall-rule-name}
forwardingRuleIp: 34.135.46.66
healthState: HEALTHY
instance: https://www.googleapis.com/compute/projects/{project}/zones/us-central1-a/instances/instance-0
ipAddress: 10.10.0.5
port: 80
weight: '0'
- forwardingRule: https://www.googleapis.com/compute/projects/{project}/regions/us-central1/forwardingRules/{firewall-rule-name}
forwardingRuleIp: 34.135.46.66
healthState: HEALTHY
instance: https://www.googleapis.com/compute/projects/{project}/zones/us-central1-a/instances/instance-100
ipAddress: 10.10.0.6
port: 80
weight: '100'
- forwardingRule: https://www.googleapis.com/compute/projects/{project}/regions/us-central1/forwardingRules/{firewall-rule-name}
forwardingRuleIp: 34.135.46.66
healthState: HEALTHY
instance: https://www.googleapis.com/compute/projects/{project}/zones/us-central1-a/instances/instance-900
ipAddress: 10.10.0.7
port: 80
weight: '900'
kind: compute#backendServiceGroupHealth