במדריך הזה נסביר איך להשתמש במאזן עומסים חיצוני לאפליקציות (ALB) כדי לחלק את תעבורת הנתונים בין שרתי אינטרנט של מיקרוסופט Internet Information Services (IIS) שפועלים במכונות וירטואליות של Compute Engine שהוקצו ב אזורים שונים.
מטרה
במדריך הזה מוסבר איך לאזן את עומס התנועה באתר www.example.com ולוודא ש:
- בקשות נכנסות מנותבות לאזור הקרוב ביותר.
- אם מופע נכשל או מגיע לקיבולת שלו, מאזן העומסים מעביר את הבקשות למופעים אחרים שמגיבים באותו אזור או באזור אחר.
ההגדרה לתרחיש הזה משתמשת במאזן עומסים חיצוני של אפליקציות (ALB) שמקבל בקשות דרך כתובת IP גלובלית אחת. כתובת ה-IP הזו יכולה להפנות כל בקשה נכנסת לפי סוג החיבור – כלומר, HTTP או HTTPS. בבקשות HTTPS, מאזן העומסים מטמיע הצפנת SSL/TLS בין הלקוח ששולח את הבקשה לבין מאזן העומסים.
התרשים הבא מציג את ארכיטקטורת מאזן העומסים:
שימו לב: מאזן העומסים כולל כמה רכיבים כדי לאפשר גמישות מקסימלית בהגדרות. תיאור של הפעולה שכל רכיב מבצע מופיע בסקירה הכללית על מאזן עומסים חיצוני של אפליקציות (ALB).
במדריך הזה מוסבר איך לבצע את הפעולות הבאות כדי להשיג את היעד שלכם:
- מגדירים את מופעי הקצה העורפי.
- יוצרים ומגדירים את שירות איזון העומסים.
- הפניית תנועה לשרתי הקצה העורפיים.
- להגביל את הגישה לשרתי הקצה העורפי.
- סימולציה של הפסקת חשמל.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Cloud de Confiance by S3NS, והשימוש בהם כרוך בתשלום:
- Compute Engine virtual machine (VM) instances
- Compute Engine persistent disks
- Optional: Google-managed SSL certificate
- Windows Server 2016 machine images
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Compute Engine, BigQuery, and Cloud Firestore APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init
לחלופין, אפשר להשתמש ב-Cloud Shell ב- Cloud de Confiance consoleכדי ליצור אינטראקציה עם Cloud de Confiance. במקרה כזה, לא צריך להתקין את Google Cloud CLI.
- מתקינים לקוח של Remote Desktop Protocol (RDP). מידע נוסף זמין במאמר בנושא לקוחות Microsoft Remote Desktop. אם כבר התקנתם לקוח RDP, אתם יכולים לדלג על המשימה הזו.
- מחליטים באילו אזורים ובתחומים רוצים להקצות את המשאבים. דיאגרמת הארכיטקטורה מציגה משאבים שנפרסו באזורים שונים בארה"ב ובאירופה. המידע הזה הוא לעיון בלבד. אתם יכולים לפרוס את המשאבים שלכם בכל אזור או תחום שתבחרו.
- אופציונלי: קוראים את הסקירה הכללית על מאזן עומסים חיצוני של אפליקציות ומבינים אותה.
הגדרת מופעים של קצה עורפי
בקטע הזה יוצרים שני שירותי קצה עורפיים באזורים שונים. כל שירות לקצה העורפי כולל שני מופעי backend, שכל אחד מהם מריץ שרת אינטרנט של Microsoft IIS ב-Windows Server 2016. כדי להימנע מהגדרה ידנית ומייגעת של כל שרת, יוצרים תמונת דיסק ממופע שרת אחד, ואז משתמשים בתמונה הזו כדי ליצור את שאר מופעי השרת.
יצירה והגדרה של מכונה של Compute Engine
כדי ליצור את המופע שישמש כתמונת מקור:
מ-Google Cloud Marketplace, מפעילים מכונה של Windows Server 2016 שפועל בה Microsoft IIS ב-Compute Engine באזור שבחרתם, ומגדירים כללי חומת אש כדי לאפשר תעבורת נתונים חיצונית מסוג HTTP, HTTPS ו-RDP למכונת תמונת המקור:
נכנסים לדף ASP.NET Framework ב-Cloud Marketplace במסוף Cloud de Confiance .
לוחצים על הפעלה.
בשדה Deployment name (שם הפריסה), מזינים src-img.
בשדה Zone (אזור), בוחרים את האזור שבו רוצים לפרוס את התמונה.
בשדה Windows Server OS Version (גרסת מערכת ההפעלה של Windows Server), בוחרים באפשרות 2016.
בקטע Networking - Firewall בוחרים רק באפשרויות הבאות:
- Allow HTTP traffic
- Allow HTTPS traffic
- Allow RDP traffic
מאשרים את התנאים וההגבלות ולוחצים על פריסה.
מחכים ליצירת המכונה של Compute Engine.
הגדרת מופע של קובץ אימג' של מקור
כדי להגדיר את מופע תמונת המקור החדש, יוצרים משתמש Windows חדש במופע תמונת המקור ומקימים חיבור RDP:
נכנסים לדף VM instances במסוף Cloud de Confiance .
לוחצים על השם של מופע תמונת המקור (
src-img).לוחצים על הגדרת סיסמה ל-Windows.
בתיבת הדו-שיח Set new Windows password (הגדרת סיסמה חדשה ל-Windows), מוסיפים את שם המשתמש ולוחצים על Set (הגדרה) כדי ליצור את חשבון המשתמש במופע.
מעתיקים את הסיסמה שמופיעה וסוגרים את תיבת הדו-שיח.
לוחצים על התפריט הנפתח RDP ובוחרים באפשרות הורדת קובץ ה-RDP כדי להוריד את קובץ ה-RDP של המופע. אפשר להשתמש בקובץ הזה כדי להתחבר למופע באמצעות לקוח RDP. מידע נוסף זמין במאמר בנושא לקוחות של Microsoft Remote Desktop.
אחרי שיוצרים חיבור RDP עם מופע תמונת המקור, מוסיפים דף בית שמוגדר כברירת מחדל בספריית האינטרנט שמוגדרת כברירת מחדל ב-IIS:
במופע של תמונת המקור, פותחים את PowerShell כאדמין.
יוצרים דף בית חדש בספריית האינטרנט של IIS שמוגדרת כברירת מחדל
C:\inetpub\wwwroot:Echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' > C:\inetpub\wwwroot\index.html
אימות האפשרות להצגת תוכן במופע של תמונת המקור
נכנסים לדף VM instances במסוף Cloud de Confiance .
לוחצים על כתובת ה-IP החיצונית של המכונה כדי לוודא שהיא מציגה את דף הבית שיצרתם קודם.
יצירת קובץ אימג' של Windows Server 2016 לשימוש חוזר ממופע של קובץ אימג' מקור
אחרי שמוודאים שהמופע של תמונת המקור מוגדר בצורה תקינה ויכול להציג תוכן, יוצרים תמונת דיסק לשימוש חוזר מהדיסק הבסיסי המתמיד של המופע:
- במופע של תמונת המקור, פותחים את PowerShell כאדמין.
מריצים את הפקודה הבאה כדי להכין את המערכת לשיבוט:
GCESysprep
כשהפעולה
GCESysprepמסתיימת, החיבור לסשן RDP מתנתק באופן אוטומטי.במחשב המקומי, מריצים את הפקודה הבאה כדי למחוק את מופע המקור תוך שמירה על הדיסק הקשיח הבסיסי שלו:
gcloud compute instances delete src-img \ --keep-disks=boot \ --zone=INSTANCE_ZONE
מחליפים את
INSTANCE_ZONEבאזור של מופע המקור.אחרי שמוחקים את המכונה, יוצרים תמונה חדשה מהדיסק המתמיד של שורש המכונה ששמרתם:
gcloud compute images create win-be-img \ --source-disk=src-img \ --source-disk-zone=IMAGE_ZONE
מחליפים את
IMAGE_ZONEבתחום שבו רוצים ליצור את תמונת המקור.
יצירת תבנית של הגדרות מכונה באמצעות תמונת המקור
משתמשים באימג' של הדיסק משרת Windows שהגדרתם כאימג' המקורית עבור תבנית של הגדרות מכונה. בהמשך, תגדירו שתי קבוצות מופעי מכונה מנוהלים שישתמשו בתבנית הזו למופעים חדשים.
במחשב המקומי, מריצים את הפקודה הבאה כדי ליצור תבנית של הגדרות מכונה שמשתמשת ב-win-be-img כקובץ האימג' של המקור וב-rdp-tag ו-www-tag כתגים של המכונה הווירטואלית:
gcloud compute instance-templates create win-be-tmpl \
--tags=rdp-tag,www-tag \
--image=win-be-img
יצירת קבוצת מופעי מכונה מנוהלים לכל אזור
בכל אזור, יוצרים קבוצות של מופעי מכונה מנוהלים. אחרי שיוצרים כל קבוצת מכונות, המערכת מאכלסת את הקבוצה באופן אוטומטי בשתי מכונות זהות על סמך תבנית של הגדרות מכונה שהגדרתם קודם. בהמשך, תגדירו את מאזן העומסים כך שיטפל בקבוצות המופעים האלה כיעדי קצה עורפיים.
כדי ליצור את הקבוצות של מופעי מכונה מנוהלים:
במחשב המקומי, מריצים את הפקודה הבאה כדי ליצור קבוצת מופעי מכונה מנוהלים חדשה באזור שבו יצרתם את התמונה, ולאכלס אותה באופן אוטומטי עם שתי מכונות זהות:
gcloud compute instance-groups managed create MANAGED_INSTANCE_GROUP_NAME_1 \ --base-instance-name=BASE_INSTANCE_NAME_1 \ --size=2 \ --zone=ZONE_1 \ --template=win-be-tmpl
מחליפים את מה שכתוב בשדות הבאים:
-
MANAGED_INSTANCE_GROUP_NAME_1: השם של המופע המנוהל -
BASE_INSTANCE_NAME_1: השם של מופע הבסיס -
ZONE_1: האזור שבו רוצים לפרוס את המכונה המנוהלת
-
יוצרים קבוצת מופעי מכונה מנוהלים באזור השני:
gcloud compute instance-groups managed create MANAGED_INSTANCE_GROUP_NAME_2 \ --base-instance-name=BASE_INSTANCE_NAME_2 \ --size=2 \ --zone=ZONE_2 \ --template=win-be-tmpl
מחליפים את מה שכתוב בשדות הבאים:
-
MANAGED_INSTANCE_GROUP_NAME_2: השם של המופע המנוהל -
BASE_INSTANCE_NAME_2: השם של מופע הבסיס -
ZONE_2: האזור שבו רוצים לפרוס את המכונה המנוהלת
-
אימות של הפעלת המופעים של ה-Backend
נכנסים לדף VM instances במסוף Cloud de Confiance .
לוחצים על כתובת ה-IP החיצונית של כל קצה עורפי כדי לוודא שהקצה העורפי מציג את דף הבית שיצרתם קודם.
יצירה והגדרה של שירות איזון עומסים
שירות איזון העומסים של Compute Engine כולל כמה רכיבים. בקטע הזה תיצרו את הרכיבים האלה ותקשרו ביניהם.
במחשב המקומי, מריצים את הפקודה הבאה כדי ליצור בדיקת תקינות חדשה. מאזן העומסים משתמש בבדיקה הזו כדי לבדוק את זמן התגובה של מופעי ה-Backend:
gcloud compute http-health-checks create basic-check
יוצרים שירות לקצה העורפי:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --protocol=HTTP \ --http-health-checks=basic-check \ --global
מחליפים את
BACKEND_SERVICE_NAMEבשם של שירות לקצה העורפי.מוסיפים את קבוצות המכונות בתור יעדים לקצה העורפי של השירות לקצה העורפי:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=MANAGED_INSTANCE_GROUP_NAME_1 \ --instance-group-zone=ZONE_1 gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=MANAGED_INSTANCE_GROUP_NAME_2 \ --instance-group-zone=ZONE_2
יוצרים מפת URL שמוגדרת כברירת מחדל שמפנה את כל הבקשות הנכנסות לכל המכונות:
gcloud compute url-maps create lb-map \ --default-service=BACKEND_SERVICE_NAME
יוצרים משאב של אישור SSL. מאזן העומסים משתמש במשאב הזה כדי להצפין ולפענח את התנועה.
אם כבר יש לכם מפתח פרטי ואישור SSL מרשות אישורים, אתם יכולים להשתמש בהם כדי ליצור משאב
SSLCertificateחדש על ידי הרצת הפקודה הבאה. אפשר גם ליצור ולהשתמש באישור SSL בניהול Google או באישור בחתימה עצמית לצורך בדיקה. מידע נוסף זמין במאמר בנושא אישורי SSL.מריצים את הפקודה הבאה כדי ליצור את משאב אישור ה-SSL:
gcloud compute ssl-certificates create www-cert \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
מחליפים את מה שכתוב בשדות הבאים:
CRT_FILE_PATH: נתיב הקובץ המקומי של האישור-
KEY_FILE_PATH: הנתיב לקובץ של המפתח הפרטי
יוצרים שרתי proxy של HTTP ו-HTTPS לטירגוט כדי להפנות בקשות למפת URL. ה-proxy הוא החלק במאזן העומסים שמכיל את אישור ה-SSL לאיזון עומסים של HTTPS, ולכן צריך גם לטעון את האישור בשלב הזה:
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=lb-map gcloud compute target-https-proxies create https-lb-proxy \ --url-map lb-map \ --ssl-certificate SSL_CERT
מחליפים את SSL_CERT לפי ההנחיות הבאות:
- אם יצרתם משאב SSLCertificate עם אישור ה-SSL והמפתח הפרטי, צריך להחליף את
SSL_CERTב-www-cert. - אם אתם משתמשים באישור SSL בניהול Google או באישור SSL בחתימה עצמית, צריך להחליף את
SSL_CERTבשם האישור.
- אם יצרתם משאב SSLCertificate עם אישור ה-SSL והמפתח הפרטי, צריך להחליף את
כדי שמאזן העומסים יקבל תנועה באופן מהימן, צריך להקצות כתובת IP סטטית גלובלית לכלל כללי ההעברה הגלובליים של מאזן העומסים.
כדי ליצור משאב של כתובת IP סטטית גלובלית, מריצים את הפקודה הבאה:
gcloud compute addresses create lb-ip \ --global \ --network-tier=PREMIUM
חשוב לרשום את כתובת ה-IP.
יוצרים שני כללי העברה גלובליים לטיפול בבקשות HTTP ו-HTTPS נכנסות. כל כלל העברה שולח תנועה לאחד משרתי ה-proxy של היעד שיצרתם, בהתאם לכתובת ה-IP, לפרוטוקול ה-IP ולפורט שצוינו.
-
במאזן עומסים גלובלי חיצוני של אפליקציות, משתמשים בפקודת gcloud CLI עם
load-balancing-scheme=EXTERNAL_MANAGED. ההגדרה הזו מציעה יכולת מתקדמת לניהול תנועה. - במאזן עומסים קלאסי של אפליקציות (ALB), משתמשים ב-
load-balancing-scheme=EXTERNAL.
gcloud compute forwarding-rules create http-fwd-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80 gcloud compute forwarding-rules create https-fwd-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ip \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
-
במאזן עומסים גלובלי חיצוני של אפליקציות, משתמשים בפקודת gcloud CLI עם
אחרי שיוצרים את כללי ההעברה הגלובליים, יכול להיות שיחלפו כמה דקות עד שההגדרות יופצו. כדי לבדוק את התקדמות ההפצה, אפשר לעקוב אחרי ההגדרה ב-Cloud de Confiance console או להריץ את הפקודה הבאה במחשב המקומי:
gcloud compute backend-services get-health BACKEND_SERVICE_NAME
שליחת תנועה לשרתי הקצה העורפיים
עכשיו, אחרי שהגדרתם את שירות איזון העומסים, אתם יכולים להתחיל לשלוח תעבורת נתונים לכלל ההעברה ולראות איך התעבורה מתפזרת למופעים שונים.
הפניית התנועה אל השרתים העורפיים מתבצעת באופן הבא:
נכנסים לדף Load balancing במסוף Cloud de Confiance .
לוחצים על הכרטיסייה חזיתות.
כדי לראות את דף הבית שמוגדר כברירת מחדל, לוחצים על כתובות ה-IP בעמודה כתובת.
הגבלת הגישה לשרתי הקצה העורפיים
אחרי שמוודאים שהכול פועל כמו שצריך, משנים את כללי חומת האש כך שתעבורת HTTP או HTTPS תגיע רק משירות איזון העומסים:
נכנסים לדף Firewall במסוף Cloud de Confiance .
לוחצים על השם של כלל חומת האש שמאפשר גישה חיצונית ליציאה
tcp:80.לוחצים על עריכה כדי לערוך את הכלל בחומת האש.
בשדה Source IPv4 ranges (טווחים של כתובות IPv4 של המקור), מסירים את הערך
0.0.0.0/0ומזינים 130.211.0.0/22. ההגדרה הזו מגבילה את כתובות ה-IP של המקור שמותרות בכלל חומת האש לטווח130.211.0.0/22, שהוא טווח כתובות ה-IP של בדיקת תקינות לאיזון עומסים של HTTPS.לוחצים על Save.
נכנסים לדף VM instances במסוף Cloud de Confiance .
לוחצים על כתובת ה-IP החיצונית של כל מופע כדי לוודא שאי אפשר לגשת למופע.
סימולציה של הפסקת שירות
כדי לראות איך העומס מתחלק בין המכונות הווירטואליות שמגיבות, אפשר לדמות הפסקת חשמל במכונה וירטואלית אחת או יותר באזור.
כדי למנוע ממופע לקבל בקשות נוספות:
- יוצרים חיבור RDP למכונה.
- במופע, פותחים את PowerShell כאדמין.
מריצים את הפקודה הבאה כדי ליצור כלל חומת אש חדש במופע. הפקודה הזו חוסמת את התנועה של בדיקת תקינות מהכלי לבדיקת תקינות, ומונעת את כל החיבורים החדשים של HTTP ממאזן העומסים למופע:
netsh advfirewall firewall add rule name="Outage Test" protocol=tcp dir=in localport=80 action=block remoteip=130.211.0.0/22
במחשב המקומי, מריצים את הפקודה הבאה כדי לוודא שהמופע מדווח עכשיו על סטטוס
UNHEALTHY:gcloud compute backend-services get-health BACKEND_SERVICE_NAME
אחרי שהמופע מתחיל לדווח על סטטוס
UNHEALTHY, שולחים בקשה למאזן העומסים. רק המופעים הרספונסיביים צריכים להגיב.אחרי שמסיימים את הסימולציה של הפסקת חשמל, אפשר לשחזר את הקישוריות של המופע על ידי מחיקת כלל חומת האש. אחרי שפותחים את PowerShell כאדמין במופע שלא מגיב, מריצים את הפקודה הבאה כדי למחוק את הכלל:
netsh advfirewall firewall delete rule name="Outage Test"
הסרת המשאבים
אחרי שמסיימים את המדריך, אפשר למחוק את המשאבים שנוצרו, כדי שהם יפסיקו להשתמש במכסה ולצבור חיובים. בסעיפים הבאים מוסבר איך למחוק או להשבית את המשאבים האלו.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.
כדי למחוק Cloud de Confiance פרויקט:
gcloud projects delete PROJECT_ID
מחיקת משאבים בודדים
תצטרכו למחוק בנפרד את כל המשאבים שנוצרו עבור הפרויקט (תמונות, תבניות של הגדרות מכונה, קבוצות של מכונות וירטואליות, בדיקות תקינות, שירות לקצה העורפי, מפת URL, Proxy ל-HTTP, כתובות וכללי העברה). אי אפשר למחוק את מכונות ה-VM עד שמריצים את הפקודות הבאות.
מריצים את הפקודות הבאות במחשב המקומי כדי למחוק את המשאבים שנוצרו עבור המדריך:
- מוחקים את כללי ההעברה של HTTP/S:
gcloud compute forwarding-rules delete https-fwd-rule --global
gcloud compute forwarding-rules delete http-fwd-rule --global
- מחיקת כתובת ה-IP הסטטית הגלובלית:
gcloud compute addresses delete lb-ip --global
- מוחקים את שרתי ה-proxy של HTTP/S:
gcloud compute target-https-proxies delete https-lb-proxy
gcloud compute target-http-proxies delete http-lb-proxy
- מחיקת אישור ה-SSL:
gcloud compute ssl-certificates delete SSL_CERT
- מחיקת מפת URL:
gcloud compute url-maps delete lb-map
- מוחקים את שירות ה-Backend:
gcloud compute backend-services delete BACKEND_SERVICE_NAME --global
- מוחקים את בדיקת תקינות ה-HTTP:
gcloud compute http-health-checks delete basic-check
- מוחקים את קבוצות המכונות המנוהלות:
gcloud compute instance-groups managed delete MANAGED_INSTANCE_GROUP_NAME_1 --zone=ZONE_1
gcloud compute instance-groups managed delete MANAGED_INSTANCE_GROUP_NAME_2 --zone=ZONE_2
- מוחקים את תבנית של הגדרות מכונה:
gcloud compute instance-templates delete win-be-tmpl
-
מחיקת התמונה:
gcloud compute images delete IMAGE_NAME
-
מוחקים את הדיסק:
gcloud compute disks delete DISK_NAME
המאמרים הבאים
- פועלים לפי המדריך לפריסת שרתי אינטרנט של IIS עם איזון עומסים.
- כדאי לעיין בשיטות המומלצות בCloud de Confiance by S3NS Well-Architected Framework.
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.