במאמר הזה מוסבר איך ליצורregional internal Application Load Balancer כדי להפנות בקשות לתוכן סטטי אל קטגוריות של Cloud Storage.
לפני שמתחילים
חשוב לוודא שההגדרה עומדת בדרישות המוקדמות הבאות.
התקנת Google Cloud CLI
חלק מההוראות במדריך הזה אפשר לבצע רק באמצעות ה-CLI של gcloud. הוראות להתקנה מפורטות במאמר התקנת Google Cloud CLI.
אפשר למצוא פקודות שקשורות לאיזון עומסים במסמך הפניות ל-API ול-CLI של gcloud.
התפקידים הנדרשים
אם אתם יוצרי הפרויקט, מוקצה לכם התפקיד 'בעלים' (roles/owner). כברירת מחדל, התפקיד 'בעלים' (roles/owner) או התפקיד 'עריכה' (roles/editor) כוללים את ההרשאות שנדרשות כדי לבצע את הפעולות שמתוארות במאמר הזה.
אם אתם לא יוצרי הפרויקט, צריך להעניק את ההרשאות הנדרשות בפרויקט לחשבון המשתמש המתאים. לדוגמה, חשבון ראשי יכול להיות חשבון Google (למשתמשי קצה) או חשבון שירות.
כדי לקבל את ההרשאות שדרושות ליצירת קטגוריות של Cloud Storage ומשאבי רשת, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
יצירת רשתות, רשתות משנה ורכיבים של מאזן עומסים:
אדמין של רשת מחשוב (
roles/compute.networkAdmin) -
להוסיף ולמחוק כללי חומת אש:
אדמין לענייני אבטחה ב-Compute (
roles/compute.securityAdmin) -
יצירת קטגוריות של Cloud Storage:
אדמין של אובייקטים באחסון (
roles/storage.objectAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מידע נוסף על תפקידים והרשאות ב-Cloud Load Balancing זמין במאמר תפקידים והרשאות. מידע נוסף על הגדרת מדיניות IAM עם הענקת הרשאות מותנית זמין במאמר תנאי IAM לכללי העברה.
הגדרת משאב של אישור SSL
אם regional internal Application Load Balancer משתמש בפרוטוקול HTTPS כפרוטוקול הבקשות והתשובות, צריך ליצור משאב של אישור SSL באמצעות Certificate Manager, כמו שמתואר באחד מהמסמכים הבאים:
- פריסת אישור אזורי שמנוהל על ידי Google ומונפק על ידי מופע של שירות CA
- פריסת אישור אזורי שמנוהל על ידי Google עם הרשאת DNS
- פריסת אישור אזורי בניהול עצמי
מומלץ להשתמש באישור שמנוהל על ידי Google.
מגבלות
המגבלות הבאות חלות על קטגוריות של Cloud Storage כשמשתמשים בהן כבקאנד ל- regional internal Application Load Balancer:
אין תמיכה בגישה לקטגוריות פרטיות, ולכן צריך שתהיה גישה ציבורית לקטגוריית קצה עורפי דרך האינטרנט.
אי אפשר להשתמש בכתובות URL חתומות.
אי אפשר לשלב את Cloud CDN כשיוצרים קטגוריות קצה עורפיות עבורregional internal Application Load Balancer.
כשמשתמשים ב- regional internal Application Load Balancer כדי לגשת לדליים של קצה עורפי, רק שיטת ה-HTTP
GETנתמכת. אפשר להוריד תוכן מהמאגר, אבל אי אפשר להעלות תוכן למאגר דרךregional internal Application Load Balancer .ב- regional internal Application Load Balancer, קטגוריות של Cloud Storage נתמכות רק באזור שבו מאזן העומסים מוגדר. אין תמיכה בקטגוריות בשני אזורים או במספר אזורים.
סקירה כללית של ההגדרה
אפשר להגדיר את regional internal Application Load Balancer באזור מסוים כמו שמוצג בדיאגרמת הארכיטקטורה הבאה:
כפי שמוצג בדיאגרמת הארכיטקטורה, בדוגמה הזו נוצרregional internal Application Load Balancer ברשת VPC עם שתי קטגוריות קצה עורפי, כאשר כל קטגוריית קצה עורפי מפנה לקטגוריה של Cloud Storage. הקטגוריות של Cloud Storage ממוקמות באזור us-east1, ואפשר לאזן את עומס התנועה בין כל הקטגוריות.
הגדרת הרשת ורשתות המשנה
ברשת ה-VPC, מגדירים רשת משנה באזור us-east1 שבו יוגדר כלל ההעברה של מאזני העומסים.
בנוסף, צריך להגדיר תת-רשת של שרת proxy בלבד באזור us-east1 שבו רוצים להגדיר את מאזן העומסים.
בדוגמה הזו נעשה שימוש ברשת ה-VPC, באזור ובתת-רשתות הבאים:
רשת. הרשת היא רשת VPC במצב מותאם אישית בשם
lb-network.תת-רשת למאזן העומסים. רשת משנה בשם
subnet-usבאזורus-east1משתמשת ב-10.1.2.0/24כטווח ה-IP הראשי שלה.תת-רשת ל-Envoy proxy. רשת משנה בשם
proxy-only-subnet-usבאזורus-east1שמשתמשת ב-10.129.0.0/23כטווח ה-IP הראשי שלה.
הגדרת רשתות המשנה לכלל ההעברה של מאזן העומסים
יוצרים רשת משנה באותו אזור שבו רוצים להגדיר את כלל ההעברה של מאזני העומסים.
המסוף
נכנסים לדף VPC networks במסוף Google Cloud .
לוחצים על יצירת רשת VPC.
בשדה Name (שם), מזינים
lb-network.בקטע רשתות משנה, מגדירים את מצב יצירת רשתות משנה למותאם אישית.
בקטע New subnet, מזינים את הפרטים הבאים:
- Name (שם):
subnet-us - בוחרים אזור:
us-east1 - טווח כתובות IP:
10.1.2.0/24 - לוחצים על סיום.
- Name (שם):
לוחצים על יצירה.
gcloud
יוצרים רשת VPC מותאמת אישית בשם
lb-networkבאמצעות הפקודהgcloud compute networks create.gcloud compute networks create lb-network --subnet-mode=custom
יוצרים תת-רשת ברשת ה-VPC
lb-networkבאזורus-east1באמצעות הפקודהgcloud compute networks subnets create.gcloud compute networks subnets create subnet-us \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-east1
הגדרת רשתות משנה ל-proxy בלבד
תת-רשת של פרוקסי בלבד מספקת קבוצה של כתובות IP ש- Google Cloud משתמש בהן כדי להפעיל פרוקסי של Envoy בשמכם. הפרוקסיים מסיימים את החיבורים מהלקוח ויוצרים חיבורים לשרתי הקצה.
כל מאזני העומסים האזוריים שמבוססים על Envoy באותו אזור כמו רשת ה-VPC משתמשים ברשת המשנה הזו שמשמשת רק כשרת proxy. יכולה להיות רק תת-רשת פעילה אחת של שרת proxy בלבד לכל מטרה נתונה, לכל אזור ולכל רשת.
בדוגמה הזו, אנחנו יוצרים רשת משנה של פרוקסי בלבד באזור us-east1.
המסוף
נכנסים לדף VPC networks במסוף Google Cloud .
לוחצים על השם של רשת ה-VPC שיצרתם.
בכרטיסייה Subnet, לוחצים על Add subnet.
הזן את פריטי המידע הבאים:
- בשדה Name (שם), מזינים
proxy-only-subnet-us. - בשדה Region (אזור), מזינים
us-east1. - בשדה מטרה, בוחרים באפשרות Regional Managed Proxy.
- בשדה טווח כתובות IP, מזינים
10.129.0.0/23.
- בשדה Name (שם), מזינים
לוחצים על הוספה.
gcloud
יוצרים תת-רשת לשרת proxy בלבד באזור
us-east1באמצעות הפקודהgcloud compute networks subnets create.gcloud compute networks subnets create proxy-only-subnet-us \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-east1 \ --network=lb-network \ --range=10.129.0.0/23
הגדרת כלל לחומת האש
בדוגמה הזו נעשה שימוש בכלל חומת אש לתעבורה נכנסת, fw-allow-ssh, שמאפשר גישת SSH ביציאה 22 למכונה הווירטואלית של הלקוח.
המסוף
נכנסים לדף Firewall policies במסוף Google Cloud .
לוחצים על יצירת כלל חומת אש כדי ליצור את הכלל שיאפשר חיבורי SSH נכנסים במכונה הווירטואלית של הלקוח:
בדף Create a firewall rule (יצירת כלל לחומת האש), מזינים את הפרטים הבאים:
- Name (שם):
fw-allow-ssh - רשת:
lb-network - כיוון התנועה: כניסה
- פעולה במקרה של התאמה: אישור
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-ssh - מסנן מקור: טווחים של כתובות IPv4
- טווחי IPv4 של המקור:
0.0.0.0/0 - פרוטוקולים ויציאות:
- בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
- מסמנים את תיבת הסימון TCP ומזינים
22כמספר היציאה.
- Name (שם):
לוחצים על יצירה.
gcloud
יוצרים את כלל חומת האש
fw-allow-sshכדי לאפשר קישוריות SSH למכונות וירטואליות עם תג הרשתallow-ssh. אם לא מציינים את--source-ranges, Google Cloud הכלל יפורש כאילו הוא מתייחס לכל מקור.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
הגדרת קטגוריות של Cloud Storage
תהליך ההגדרה של קטגוריות Cloud Storage הוא כדלקמן:
- יוצרים את הקטגוריות.
- מעתיקים את התוכן לקטגוריות.
- הגדרת הקטגוריות כקריאות באופן ציבורי.
יצירת קטגוריות ב-Cloud Storage
בדוגמה הזו, יוצרים שתי קטגוריות של Cloud Storage באזור us-east1.
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
לוחצים על יצירה.
בקטע Get started (תחילת העבודה), מזינים שם ייחודי גלובלית שעומד בהנחיות למתן שמות.
לוחצים על Choose where to store your data (בחירת המיקום לאחסון הנתונים).
מגדירים את סוג המיקום לאזור.
ברשימת האזורים, בוחרים באפשרות us-east1.
לוחצים על יצירה.
לוחצים על Buckets כדי לחזור לדף Cloud Storage Buckets. פועלים לפי ההוראות הקודמות כדי ליצור קטגוריה שנייה באותו אזור, us-east1.
gcloud
יוצרים את הקטגוריות באזור
us-east1באמצעות הפקודהgcloud storage buckets create.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-accessgcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-accessמחליפים את
BUCKET1_NAMEואתBUCKET2_NAMEבשמות של הקטגוריות שלכם ב-Cloud Storage.
העתקת קובצי גרפיקה לקטגוריות של Cloud Storage
כדי שתוכלו לבדוק את ההגדרה, צריך להעתיק קובץ גרפי מקטגוריה ציבורית של Cloud Storage לקטגוריות שלכם ב-Cloud Storage.
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
הגדרת קטגוריות של Cloud Storage כקריאות באופן ציבורי
כדי שכל האובייקטים בקטגוריה יהיו קריאים לכולם באינטרנט הציבורי, צריך להעניק לחשבון הראשי allUsers את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer).
המסוף
כדי להעניק לכל המשתמשים גישה לצפייה באובייקטים בקטגוריות, חוזרים על התהליך הבא לכל קטגוריה:
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, מסמנים את התיבה לצד כל קטגוריה שרוצים להגדיר כציבורית.
לוחצים על הלחצן Permissions (הרשאות). מופיעה תיבת הדו-שיח Permissions.
בתיבת הדו-שיח Permissions, לוחצים על הלחצן Add principal. מופיעה תיבת הדו-שיח Grant access.
בשדה New principals, מזינים
allUsers.בשדה Select a role, מזינים
Storage Object Viewerבתיבת הסינון ובוחרים Storage Object Viewer מהתוצאות המסוננות.לוחצים על Save.
לוחצים על Allow public access.
gcloud
כדי להעניק לכל המשתמשים גישה לצפייה באובייקטים בקטגוריות, מריצים את הפקודה buckets add-iam-policy-binding.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME \
--member=allUsers \
--role=roles/storage.objectViewergcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
--member=allUsers \
--role=roles/storage.objectViewerשמירת כתובת IP פנימית סטטית
שמירת כתובת IPv4 פנימית סטטית לכלל ההעברה של מאזן העומסים. מידע נוסף זמין במאמר בנושא שמירת כתובת IP פנימית סטטית.
המסוף
נכנסים לדף Reserve internal static IP address במסוף Google Cloud .
בשדה שם, מזינים שם לכתובת החדשה.
ברשימה IP version בוחרים באפשרות IPv4.
ברשימה Network בוחרים באפשרות lb-network.
ברשימה Subnetwork בוחרים באפשרות subnet-us.
בשדה Region, בוחרים us-east1.
ברשימה Static IP address בוחרים באפשרות Assign automatically. אחרי שיוצרים את מאזן העומסים, כתובת ה-IP הזו מצורפת לכלל ההעברה של מאזן העומסים.
לוחצים על שמירה כדי לשמור את כתובת ה-IP.
gcloud
כדי לשמור כתובת IP חיצונית סטטית, משתמשים בפקודה
gcloud compute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=us-east1 \ --subnet=subnet-usמחליפים את
ADDRESS_NAMEבשם של הכתובת החדשה.כדי לראות את המידע על הכתובת, משתמשים בפקודה
gcloud compute addresses describe.gcloud compute addresses describe ADDRESS_NAME
מעתיקים את כתובת ה-IP שמוחזרת כדי להשתמש בה כ-
RESERVED_IP_ADDRESSבקטע הבא.
הגדרת מאזן העומסים עם קטגוריות קצה עורפי
בקטע הזה מוסבר איך ליצור את המשאבים הבאים עבורregional internal Application Load Balancer:
- שתי קטגוריות קצה עורפי. קטגוריות הקצה העורפי משמשות כעטיפה לקטגוריות של Cloud Storage שיצרתם קודם.
- מפת URL
- שרת proxy יעד
- כלל העברה עם כתובות IP אזוריות. לכלל ההעברה מוקצית כתובת IP מרשת המשנה שנוצרה עבור כללי ההעברה של מאזן העומסים. אם מנסים להקצות כתובת IP לכלל ההעברה מתת-הרשת של שרת proxy בלבד, יצירת כלל ההעברה נכשלת.
בדוגמה הזו, אפשר להשתמש ב-HTTP או ב-HTTPS כפרוטוקול של הבקשה והתשובה בין הלקוח לבין מאזן העומסים. כדי ליצור מאזן עומסים ב-HTTPS, צריך להוסיף משאב של אישור SSL לקצה הקדמי של מאזן העומסים.
כדי ליצור את רכיבי איזון העומסים שצוינו קודם באמצעות ה-CLI של gcloud, פועלים לפי השלבים הבאים:
יוצרים שתי קטגוריות עורפיות באזור
us-east1באמצעות הפקודהgcloud compute backend-buckets create. לקטגוריות הקצה העורפי יש סכמת איזון עומסים שלINTERNAL_MANAGED.gcloud compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1gcloud compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1יוצרים מפת URL כדי לנתב בקשות נכנסות לקטגוריית קצה עורפי באמצעות הפקודה
gcloud compute url-maps create.gcloud compute url-maps create lb-map \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1מגדירים את כללי המארח והנתיב של מפת URL באמצעות הפקודה
gcloud compute url-maps add-path-matcher.בדוגמה הזו, קטגוריית הקצה העורפי שמוגדרת כברירת מחדל היא
backend-bucket-cats, שמטפלת בכל הנתיבים שקיימים בה. עם זאת, כל בקשה שמכוונת אלhttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgמשתמשת בבק-אנדbackend-bucket-dogs. לדוגמה, אם התיקייה/love-to-fetch/קיימת גם בקצה העורפי שמוגדר כברירת מחדל (backend-bucket-cats), מאזן העומסים נותן עדיפות לקצה העורפיbackend-bucket-dogsכי יש כלל נתיב ספציפי ל-/love-to-fetch/*.gcloud compute url-maps add-path-matcher lb-map \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1יוצרים שרת proxy ליעד באמצעות הפקודה
gcloud compute target-http-proxies create.לתעבורת נתונים של HTTP, יוצרים Proxy יעד ל-HTTP כדי להפנות בקשות למפת URL:
gcloud compute target-http-proxies create http-proxy \ --url-map=lb-map \ --region=us-east1לתנועה מסוג HTTPS, יוצרים שרת proxy יעד מסוג HTTPS כדי להפנות בקשות למפת URL. ה-proxy הוא החלק במאזן העומסים שמכיל את אישור ה-SSL של מאזן עומסים ב-HTTPS. אחרי יצירת האישור, אפשר לצרף אותו לשרת proxy של יעד HTTPS.
gcloud compute target-https-proxies create https-proxy \ --url-map=lb-map \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1מחליפים את
CERTIFICATE_NAMEבשם של אישור ה-SSL שיצרתם באמצעות Certificate Manager.יוצרים כלל העברה עם כתובת IP באזור
us-east1באמצעות הפקודהgcloud compute forwarding-rules create.הזמנת כתובת IP היא אופציונלית לכלל העברה של HTTP, אבל היא נדרשת לכלל העברה של HTTPS.
בדוגמה הזו, כתובת IP זמנית משויכת לכלל העברת ה-HTTP של מאזן העומסים. כתובת IP זמנית נשארת קבועה כל עוד כלל ההעברה קיים. אם צריך למחוק את כלל ההעברה וליצור אותו מחדש, יכול להיות שכלל ההעברה יקבל כתובת IP חדשה.
לתנועת HTTP, יוצרים את כללי ההעברה כדי לנתב בקשות נכנסות אל שרת ה-Proxy של יעד HTTP:
gcloud compute forwarding-rules create http-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --ports=80 \ --target-http-proxy=http-proxy \ --target-http-proxy-region=us-east1 \ --region=us-east1לתנועת HTTPS, יוצרים את כללי ההעברה הגלובליים כדי לנתב בקשות נכנסות אל ה-Proxy של יעד HTTPS:
gcloud compute forwarding-rules create https-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --target-https-proxy=https-proxy \ --target-http-proxy-region=us-east1 \ --region=us-east1מחליפים את
RESERVED_IP_ADDRESSבשם של הכתובת שהעתקתם בקטע שמירת כתובת IP פנימית סטטית.
שליחת בקשת HTTP למאזן העומסים
שליחת בקשה ממכונה וירטואלית של לקוח פנימי לכלל ההעברה של מאזן העומסים.
איך מוצאים את כתובת ה-IP של כלל ההעברה של מאזן העומסים
כדי לשלוח בקשת HTTP לכתובת ה-IP הווירטואלית (VIP) באזור באמצעות curl, צריך לקבל את כתובת ה-IP של כלל ההעברה של מאזן העומסים (http-fw-rule-1) באזור us-east1.
gcloud compute forwarding-rules describe http-fw-rule-1 \
--region=us-east1
מעתיקים את כתובת ה-IP שמוחזרת כדי להשתמש בה כ-FORWARDING_RULE_IP_ADDRESS בשלב הבא.
יצירת מכונת VM של לקוח לבדיקת הקישוריות
יוצרים מכונה וירטואלית של לקוח ושולחים בקשת HTTP לכתובות ה-IP הווירטואליות ברשת ה-VPC. המכונה הווירטואלית של הלקוח יכולה להיות בכל אזור באותו אזור שבו נמצא מאזן העומסים, והיא יכולה להשתמש בכל רשת משנה באותה רשת VPC. בדוגמה הזו, יוצרים את המכונה הווירטואלית של הלקוח באותה רשת משנה שבה נמצא כלל ההעברה של מאזן העומסים.
יוצרים מכונה וירטואלית (VM) של לקוח באזור
us-east1.gcloud compute instances create client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=lb-network \ --subnet=subnet-us \ --zone=us-east1-c \ --tags=allow-sshיוצרים חיבור SSH למכונה הווירטואלית של הלקוח.
gcloud compute ssh client-a --zone=us-east1-c
בדוגמה הזו, ל- regional internal Application Load Balancer יש כתובת VIP של קצה קדמי באזור
us-east1ברשת ה-VPC. שולחים בקשת HTTP ל-VIP באזור הזה באמצעות curl.curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
מחליפים את
FORWARDING_RULE_IP_ADDRESSבכתובת ה-IP שהעתקתם בקטע איך מקבלים את כתובת ה-IP של כלל ההעברה של איזון העומסים.
המאמרים הבאים
- סקירה כללית על מאזן עומסים פנימי של אפליקציות (ALB)
- תת-רשתות של שרת proxy בלבד למאזני עומסים מבוססי Envoy
- ניהול אישורים
- ניקוי הגדרות של איזון עומסים