כשמשתמשים ב-Cloud CDN, נהוג להעביר תוכן HTTP ו-HTTPS דרך אותו שם מארח. הרבה דפדפנים אוכפים את השימוש ב-Transport Layer Security (TLS) ולא מאפשרים העברת תוכן לא מאובטח, אבל עדיין יש מקרים שבהם צריך לאפשר העברה מאובטחת ולא מאובטחת באותו שם מארח. במאמר הזה נסביר איך להשיג את הפונקציונליות הזו באמצעות Cloud CDN.
אתגר
כשלקוח יוצר חיבור עם שרת קצה של CDN, מתנהל משא ומתן על פרוטוקול ההעברה למשתמש הקצה. רוב פלטפורמות ה-CDN הרגילות מפנות את התנועה לטביעת הרגל של האספקה שלהן באמצעות:
- הפניה לשם דומיין ששייך ל-CDN, באמצעות רשומת CNAME ב-DNS.
- ניתוב תנועה לקבוצת משנה של שרתים שתומכים במשא ומתן בפרוטוקול TLS לשם הדומיין הזה.
מכיוון ש-Cloud CDN משתלב עם Cloud Load Balancing, הגישה של Cloud CDN שונה מהגישה של רשתות CDN רגילות. Cloud CDN משתמש בכתובת ה-IP מסוג Anycast של מאזן העומסים החיצוני של אפליקציות (ALB). כשמגדירים את Cloud CDN, יש כתובת IP ספציפית שאליה מפנים את התנועה. לשם כך, צריך להגדיר רשומת A (ל-IPv4) או רשומת AAAA (ל-IPv6) ברשומת ה-DNS, במקום רשומת CNAME עם ערך של שם מארח.
כברירת מחדל, כשמגדירים את הקצה הקדמי של מאזן העומסים, מערכתGoogle Cloud מקצה באופן דינמי כתובת IP זמנית. מכיוון שצריך להגדיר את הגדרות ה-HTTP וה-HTTPS בנפרד, יכול להיות שיהיו לכם שתי כתובות IP למכונה של Cloud CDN. מכיוון שכתובת ה-IP של רשומת A או רשומת AAAA זהה גם ל-HTTP וגם ל-HTTPS, אי אפשר לטפל במקרה הזה כמו שצריך ב-DNS.
פתרון
כשמעבירים תוכן מאובטח ותוכן לא מאובטח דרך אותו שם מארח, הלקוח מופנה לשרת קצה שיכול לנהל משא ומתן על HTTP או HTTPS. כדי שזה יעבוד עם Cloud CDN, אתם יכולים לשמור כתובת IP ולקשר אותה להגדרות של ממשקי ה-HTTP וה-HTTPS בקצה הקדמי במאזן העומסים החיצוני של אפליקציות (ALB).
בתרשים:
- בקשות נכנסות ל-www.example.com מגיעות מלקוחות שמשתמשים ב-HTTP/2, ב-HTTPS וב-HTTP.
שתי כתובות IP שמורות, אחת ל-IPv4 ואחת ל-IPv6:
- 34.95.111.204
- [2600:1901:0:b13e::]
שתי כתובות ה-IP האלה מקושרות ל-www.example.com ב-Cloud DNS.
כשמגדירים את מאזן העומסים של אפליקציות (ALB) החיצוני, הגדרת הקצה הקדמי כוללת ארבעה כללי העברה שמשתמשים בכתובות ה-IP השמורות:
שם פרוטוקול IP:Port ipv4-http HTTP 34.95.111.204:80 ipv4-https HTTPS 34.95.111.204:443 ipv6-http HTTP [2600:1901:0:b13e::]:80 ipv6-https HTTPS [2600:1901:0:b13e::]:443 במקרים של אי מציאה במטמון של Cloud CDN, מאזן העומסים מפיץ את הבקשות למקורות בקצה העורפי, על סמך ההגדרות שנקבעו במפת URL של מאזן העומסים.
שלב 1: שמירת כתובת IP חיצונית גלובלית
יוצרים כתובת IPv4 או IPv6 (או את שתיהן). כדי לתמוך בכתובות IPv4 ו-IPv6, צריך ליצור כתובת IPv4 אחת וכתובת IPv6 אחת.
ברשומת ה-DNS,יוצרים רשומת A (או AAAA) כדי להפנות את התנועה לכתובת ה-IP השמורה הזו.
המסוף
- במסוף Google Cloud , נכנסים לדף כתובות IP חיצוניות.
- לוחצים על Reserve static address כדי לשמור כתובת IPv4.
- מגדירים את Name לערך
ipv4-address. - מגדירים את מסלול הרשת ל-Premium.
- מגדירים את IP version ל-IPv4.
- מגדירים את Type בתור Global.
- לוחצים על Reserve.
מאזן העומסים משתמש ברשת במסלול פרימיום, כפי שנדרש כשמפעילים את Cloud CDN.
gcloud
gcloud compute addresses create ipv4-address \
--network-tier=PREMIUM \
--ip-version=IPV4 \
--global
שימו לב לכתובת ה-IPv4 שנשמרה:
gcloud compute addresses describe lb-ipv4-1 \
--format="get(address)" \
--global
חוזרים על השלב הזה עבור IPv6.
מידע נוסף זמין במאמר שמירת כתובת IP חיצונית סטטית חדשה.
שלב 2: מקשרים את כתובת ה-IP השמורה למאזן העומסים
בקטע הזה מוסבר איך להקצות את כתובות ה-IP למאזן העומסים. הוראות מפורטות להגדרת מאזן העומסים לא נכללות במאמר הזה. דוגמה להגדרה מופיעה במאמר יצירת מאזן עומסים ב-HTTPS.
בקטע של הגדרת הקצה הקדמי אפשר לבחור את הפרוטוקול שבו משתמשים בין הלקוח לבין מאזן העומסים.
בדוגמה הזו, אתם משתמשים גם ב-HTTP וגם ב-HTTPS בין הלקוח לבין מאזן העומסים, ולכן אתם צריכים משאב אחד או יותר של אישורי SSL כדי להגדיר את שרת ה-proxy.
המסוף
הגדרת כלל ההעברה של HTTP
- במסוף Google Cloud , עוברים לדף איזון עומסים.
- בוחרים את מאזן העומסים ולוחצים על Edit.
- בחלונית הימנית, לוחצים על Frontend configuration.
- בשדה Name, מזינים
ipv4-http. - בשדה Protocol, בוחרים באפשרות
HTTP. - מגדירים את IP version ל-
IPv4. - בקטע כתובת IP, בוחרים את הכתובת
ipv4-addressשיצרתם קודם. - מוודאים שהערך של Port הוא
80, כדי לאפשר תנועת HTTP. - לוחצים על סיום.
הגדרת כלל ההעברה של HTTPS
- במסוף Google Cloud , עוברים לדף איזון עומסים.
- בוחרים את מאזן העומסים ולוחצים על Edit.
- בחלונית הימנית, לוחצים על Frontend configuration.
- בשדה Name, מזינים
ipv4-https. - בשדה Protocol, בוחרים באפשרות
HTTPS. - מגדירים את IP version ל-
IPv4. - בקטע כתובת IP, בוחרים את הכתובת
ipv4-addressשיצרתם קודם. - מוודאים שהערך של Port הוא
443, כדי לאפשר תנועת HTTP. - בקטע Choose certificate repository, בוחרים באפשרות Use certificate map או באפשרות Use classic certificates.
- בהתאם לבחירה, בוחרים מפת אישורים או אישור קלאסי.
- לוחצים על סיום.
חוזרים על השלבים האלה עבור IPv6.
בדיקה וסיום
- בחלונית הימנית, לוחצים על בדיקה וסיום.
- משווים בין ההגדרות לבין מה שהתכוונתם ליצור.
- אם הכול נראה תקין, לוחצים על עדכון.
gcloud
יוצרים שרת proxy ל-HTTP לניתוב בקשות למפת URL.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map
יוצרים שרת proxy ל-HTTPS כדי לנתב בקשות למפת URL. שרת ה-proxy הוא החלק במאזן העומסים שמכיל את אישור ה-SSL לאיזון עומסי ה-HTTPS, לכן בשלב הזה צריך גם לטעון את האישור.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-map --ssl-certificates=www-ssl-cert
יוצרים שני כללי העברה גלובליים כדי לנתב בקשות נכנסות לשרת ה-proxy, אחד לכל אחת מכתובות ה-IP שיצרתם.
-
למאזן עומסים גלובלי חיצוני של אפליקציות (ALB), משתמשים בפקודת ה-CLI של gcloud עם
load-balancing-scheme=EXTERNAL_MANAGED. ההגדרה הזו מספקת יכולת מתקדמת לניהול תנועה. - במאזן עומסים קלאסי של אפליקציות (ALB), משתמשים ב-
load-balancing-scheme=EXTERNAL.
gcloud compute forwarding-rules create ipv4-http \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=ipv4-address \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
gcloud compute forwarding-rules create ipv4-https \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=ipv4-address \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
-
למאזן עומסים גלובלי חיצוני של אפליקציות (ALB), משתמשים בפקודת ה-CLI של gcloud עם
אחרי שיוצרים את כללי ההעברה הגלובליים, יכול להיות שיעברו כמה דקות עד שההגדרה תופץ ברחבי העולם.
שלב 3: יוצרים רשומת A או רשומת AAAA בקובץ לתיאור תחום ה-DNS
השלב האחרון בתהליך הוא ליצור רשומת A או רשומת AAAA בקובץ לתיאור תחום ה-DNS, כדי להפנות ל-Cloud CDN שבו הערך של שם המארח יגיב עם כתובות ה-IP השמורות שהקציתם במאזן העומסים.
עכשיו אפשר להציג גם HTTP וגם HTTPS באותו שם מארח דרך Cloud CDN.
אופציונלי: הפניה אוטומטית מ-HTTP ל-HTTPS
כדי להפנות אוטומטית בקשות HTTP למאזן העומסים ב-HTTPS, צריך להוסיף מאזן עומסים חלקי ב-HTTP שיש לו ממשק קצה אבל אין לו קצוות עורפיים. החזית מקבלת בקשות ומפנה אותן למאזן העומסים ב-HTTPS. כדי לעשות את זה, הוא משתמש ב:
- כלל העברה עם אותה כתובת IP חיצונית שמורה שבה משתמש מאזן העומסים של HTTPS, כמו שמוצג בדף הזה.
- Proxy ל-HTTP ביעד, כמו שמוצג בדף הזה.
- מפת URL שמפנה את תעבורת הנתונים למאזן העומסים ב-HTTPS.
קבלת תמיכה
אם יש לכם שאלות לגבי Google Cloud ו-Cloud CDN, אתם יכולים לפנות לצוות המכירות של Google Cloud או לפרסם הודעה בערוץ #cloud-cdn ב-ערוץ Slack של קהילתGoogle Cloud.
מה השלב הבא?
- לפרטים על התוכן שנשמר במטמון, ראו פרטי השמירה במטמון.
- כדי לפתור בעיות שקשורות למאזן העומסים, אפשר להיעזר בדף פתרון הבעיות של מאזן העומסים.
- כדי לפתור בעיות ב-Cloud CDN, קראו את דף פתרון הבעיות של Cloud CDN.
- למידע על השימוש ב-Cloud CDN ב-GKE, קראו את המאמר Cloud CDN בדף התכונות של Ingress.
- כדי לבדוק אם Cloud CDN מציג תשובות מהמטמון, צפו ביומנים.
- ניקוי ההגדרה של מאזן העומסים.