Cloud de Confiance by S3NS מאזן עומסי רשת פנימי לשרת proxy הוא מאזן עומסים שמבוסס על שרת proxy, ומופעל באמצעות תוכנת שרת proxy של Envoy בקוד פתוח ומחסנית הווירטואליזציה של רשת Andromeda.
מאזן עומסי רשת פנימי של שרתי proxy הוא מאזן עומסים בשכבה 4, שמאפשר להריץ את תעבורת הנתונים של שירות ה-TCP ולהתאים אותה לעומס מאחורי כתובת IP פנימית אזורית. הכתובת הזו נגישה רק ללקוחות באותה רשת VPC או ללקוחות שמחוברים לרשת ה-VPC. מאזן העומסים מסיים קודם את חיבור ה-TCP בין הלקוח לבין מאזן העומסים בשרת proxy של Envoy. שרת ה-proxy פותח חיבור TCP שני לקצוות עורפיים שמתארחים ב- Cloud de Confiance by S3NS, בסביבות מקומיות או בסביבות ענן אחרות. לתרחישים נוספים לדוגמה, קראו את הסקירה הכללית על מאזן עומסי רשת לשרת proxy.
מצבי פעולה
מאזן העומסים הזה זמין במצב אזורי, ובהמשך המאמר הוא נקרא "מאזן עומסי רשת אזורי פנימי בשרת proxy". מאזן העומסים מיושם כשירות מנוהל שמבוסס על שרת ה-proxy של Envoy בקוד פתוח. במצב אזורי, כל הלקוחות וה-backend נמצאים באזור מסוים. כדאי להשתמש במאזן העומסים הזה אם רוצים להציג תוכן ממיקום גיאוגרפי אחד בלבד (לדוגמה, כדי לעמוד בתקנות התאימות).
ארכיטקטורה
בתרשים הבא מוצגים המשאבים של Cloud de Confiance שנדרשים למאזני עומסי רשת פנימיים של שרתי proxy.
אזורי
דיאגרמה זו מציגה את הרכיבים של פריסת מאזן עומסי רשת פנימי אזורי בשרת proxy במסלול פרימיום.
רשת משנה לשרתי proxy בלבד
בתרשים הקודם, רשת המשנה של שרתי proxy בלבד מספקת קבוצה של כתובות IP ש-Google משתמשת בהן כדי להריץ שרתי proxy של Envoy בשבילכם. בכל אזור של רשת VPC שבו אתם משתמשים במאזן עומסי רשת פנימי עם שרת proxy מבוסס-Envoy, אתם צריכים ליצור רשת משנה לשרת proxy בלבד.
בטבלה הבאה מתוארות הדרישות של רשתות משנה proxy-only למאזני עומסי רשת פנימיים לשרת proxy:
| מצב מאזן עומסים | הערך של הדגל --purpose |
הערך של הדגל --stack-type |
|---|---|---|
| מאזן עומסי רשת אזורי פנימי בשרת proxy |
מאזני עומסים אזוריים ומאזני עומסים חוצי-אזורים לא יכולים לחלוק את אותן רשתות משנה כל מאזני העומסים האזוריים שמבוססים על Envoy באזור וברשת VPC מסוימים חולקים את אותה רשת משנה של שרתי proxy בלבד. |
|
בנוסף:
- רשתות משנה של שרתי proxy בלבד משמשות רק לשרתי proxy של Envoy, ולא לקצוות העורפיים.
- מכונות וירטואליות (VM) או נקודות קצה עורפיות של כל מאזני עומסי הרשת הפנימיים לשרת proxy באזור וברשת VPC מקבלות חיבורים מתת-הרשת של שרת proxy בלבד.
- כתובת ה-IP של מאזן עומסי רשת פנימי לשרת proxy לא נמצאת בתת-הרשת לשרתי proxy בלבד. כתובת ה-IP של מאזן העומסים מוגדרת על ידי כלל ההעברה הפנימי המנוהל שלו.
כללי העברה וכתובות IP
כללי העברה מנתבים תנועה לפי כתובת IP, יציאה ופרוטוקול להגדרה של איזון עומסים שמורכבת משרת proxy לחלוקת העומס ומשירות לקצה העורפי.
מפרט של כתובת IP. כל כלל העברה מפנה לכתובת IP אזורית אחת שאפשר להשתמש בה ברשומות DNS של האפליקציה. אתם יכולים להקצות כתובת IP סטטית לשימושכם או לאפשר ל-Cloud Load Balancing להקצות לכם כתובת. מומלץ לשמור כתובת IP סטטית. אחרת, בכל פעם שמוחקים כלל העברה ויוצרים כלל חדש, צריך לעדכן את רשומת ה-DNS עם כתובת ה-IP הזמנית החדשה שהוקצתה.
הלקוחות משתמשים בכתובת ה-IP וביציאה כדי להתחבר לשרתי ה-proxy של Envoy במאזן העומסים – כתובת ה-IP של כלל ההעברה היא כתובת ה-IP של מאזן העומסים (לפעמים היא נקראת כתובת IP וירטואלית או VIP). לקוחות שמתחברים למאזן עומסים צריכים להשתמש ב-TCP. לרשימה המלאה של הפרוטוקולים הנתמכים, ראו השוואה בין התכונות של מאזני העומסים.
כתובת ה-IP הפנימית שמשויכת לכלל ההעברה יכולה להגיע מתת-רשת באותה רשת ובאותו אזור של שרתי ה-backend.
מפרט היציאה. כל כלל העברה שבו משתמשים במאזן עומסי רשת פנימי עם שרת proxy יכול להפנות ליציאה אחת מ-1 עד 65535. כדי לתמוך בכמה יציאות, צריך להגדיר כמה כללי העברה.
בטבלה הבאה מפורטות הדרישות של כללי ההעברה למאזני עומסי רשת פנימיים בשרת proxy:
| מצב מאזן עומסים | כלל העברה, כתובת IP ורשת משנה לשרתי proxy בלבד --purpose |
ניתוב מהלקוח לקצה הקדמי של מאזן העומסים |
|---|---|---|
| מאזן עומסי רשת אזורי פנימי בשרת proxy |
סכימת איזון עומסים:
רשת משנה לשרתי proxy בלבד
כתובת IP
|
גם הקצוות העורפיים צריכים להיות באותו אזור שבו נמצא מאזן העומסים. |
כללי העברה ורשתות VPC
בקטע הזה מוסבר איך כללי העברה שמשמשים מאזני עומסים חיצוניים של אפליקציות משויכים לרשתות VPC.
| מצב מאזן עומסים | שיוך רשת VPC |
|---|---|
|
בהתאם לשימוש בכתובת IPv4 או בטווח כתובות IPv6, תמיד יש רשת VPC מפורשת או משתמעת שמשויכת לכלל ההעברה.
|
שרתי proxy לחלוקת העומס
מאזן עומסי הרשת הפנימי לשרת proxy סוגר את חיבורי ה-TCP מהלקוח ויוצר חיבורים חדשים לקצוות העורפיים. כברירת מחדל, כתובת ה-IP של הלקוח ופרטי היציאה לא נשמרים. אפשר לשמור את המידע הזה באמצעות פרוטוקול PROXY. שרת ה-Proxy לחלוקת העומס מנתב בקשות נכנסות ישירות לשירות לקצה העורפי של מאזן העומסים.
בטבלה הבאה מפורטים ממשקי ה-API של שרתי ה-Proxy לטירגוט שנדרשים למאזני עומסי רשת פנימיים לשרתי Proxy:
| מצב מאזן עומסים | שרת proxy לחלוקת העומס | חומרי עזר |
|---|---|---|
| מאזן עומסי רשת אזורי פנימי בשרת proxy | אזורי regionTargetTcpProxies |
שרת ה-proxy לחלוקת העומס מפנה לשירות אחד לקצה העורפי או למסלול TLS אחד או יותר. |
נתיבי TLS
משאב מסלול TLS מאפשר להגדיר איך תעבורת הנתונים מנותבת לשירותים לקצה העורפי על סמך שמות מארחים של SNI.
אם אין הפניה לשרת ה-proxy ל-TCP של מאזן העומסים באמצעות נתיב TLS, המערכת משתמשת רק בשירות ברירת המחדל היחיד לקצה העורפי, והערך של שם המארח של SNI שנשלח על ידי הלקוח או היעדרו לא רלוונטי.
כדי לצרף הגדרת ניתוב TLS לשרת proxy לחלוקת העומס, משתמשים בפקודות gcloud network-services tls-routes.
בטבלה הבאה מפורטים ממשקי ה-API של נתיבי TLS שנדרשים למאזני עומסי רשת פנימיים לשרת proxy:
| מצב מאזן עומסים | מסלול TLS | חומרי עזר |
|---|---|---|
| מאזן עומסי רשת אזורי פנימי בשרת proxy | אזורי tlsRoutes |
כל מסלול TLS יכול להפנות לשירות אחד או יותר לקצה העורפי. |
שירות לקצה העורפי
שירות לקצה העורפי מפנה את התנועה הנכנסת לקצה עורפי אחד או יותר שמחוברים אליו. בק-אנד הוא קבוצה של מכונות או קבוצה של נקודות קצה ברשת. הקצה העורפי מכיל מידע על מצב האיזון כדי להגדיר את העומס על סמך החיבורים (או על סמך הניצול, רק בקצוות עורפיים של קבוצות של מכונות).
לכל מאזן עומסים יש לפחות משאב אחד של שירות לקצה העורפי. אם אתם משתמשים בנתיבי TLS כדי להגדיר ניתוב, אתם יכולים להגדיר כמה שירותים לקצה העורפי בשביל מאזן העומסים. בלי נתיבי TLS, אתם מוגבלים לשירות אחד בלבד לקצה העורפי לכל מאזן עומסים.
בטבלה הבאה מפורטים ממשקי ה-API של שירות לקצה העורפי למאזני עומסי רשת פנימיים של שרתי proxy:
| מצב מאזן עומסים | סוג השירות לקצה העורפי |
|---|---|
| מאזן עומסי רשת אזורי פנימי בשרת proxy | אזורי regionBackendServices |
קצוות עורפיים נתמכים
מאזן עומסי רשת פנימי לשרת proxy תומך בסוגים הבאים של קצוות עורפיים:
| מצב מאזן עומסים | רכיבי קצה עורפי שנתמכים בשירות לקצה העורפי | ||||||
|---|---|---|---|---|---|---|---|
| קבוצות של מכונות | קבוצות NEG אזוריות | קבוצות NEG באינטרנט | קבוצות NEG ללא שרת (serverless) | קבוצות NEG היברידיות | GKE | ||
| מאזן עומסי רשת אזורי פנימי בשרת proxy |
נקודות קצה מסוג GCE_VM_IP_PORT |
קבוצות NEG אזוריות בלבד | |||||
כל הקצוות העורפיים חייבים להיות מאותו סוג (קבוצות של מכונות או קבוצות של נקודות קצה ברשת). אפשר להשתמש בו-זמנית בסוגים שונים של קבוצות מכונות לקצה העורפי, או בסוגים שונים של קבוצות של נקודות קצה לרשת (NEG) לקצה העורפי, אבל אי אפשר להשתמש בקבוצות מכונות ובקבוצות של נקודות קצה לרשת (NEG) לקצה העורפי ביחד באותו שירות לקצה העורפי.
אפשר לשלב קבוצות NEG אזוריות וקבוצות NEG היברידיות באותו שירות לקצה העורפי.
כדי למזער את השיבושים בשירות למשתמשים, צריך להפעיל את זמן ההשלמה של התהליך (connection draining) בשירותים לקצה העורפי. הפרעות כאלה יכולות לקרות כשקצה עורפי מסתיים, מוסר באופן ידני או מוסר על ידי התאמה לעומס (autoscaler). למידע נוסף על השימוש בזמן להשלמת תהליך כדי לצמצם את ההפרעות לשירות, ראו הפעלת זמן להשלמת תהליך.
רשתות VPC ורכיבי Back-end
בקבוצות של מכונות, בקבוצות של נקודות קצה ברמת האזור ובקבוצות של נקודות קצה לקישוריות היברידית, כל הקצוות העורפיים צריכים להיות באותו פרויקט ובאותו אזור כמו השירות לקצה העורפי. עם זאת, מאזן עומסים יכול להפנות לקצה עורפי שמשתמש ברשת VPC אחרת באותו פרויקט כמו השירות לקצה העורפי. אפשר להגדיר את הקישוריות בין רשת ה-VPC של מאזן העומסים לבין רשת ה-VPC של הקצה העורפי באמצעות קישור בין רשתות VPC שכנות (peering), מנהרות Cloud VPN או צירופים ל-VLAN של Cloud Interconnect.
הגדרת רשת לקצה העורפי
- בקבוצות NEG אזוריות ובקבוצות NEG היברידיות, אתם מציינים במפורש את רשת ה-VPC כשאתם יוצרים את קבוצת ה-NEG.
- בקבוצות מופעי מכונה מנוהלים, רשת ה-VPC מוגדרת בתבנית של הגדרות המכונה.
- בקבוצות של מכונות לא מנוהלות, רשת ה-VPC של קבוצת המכונות מוגדרת כך שתתאים לרשת ה-VPC של הממשק
nic0של המכונה הווירטואלית הראשונה שנוספה לקבוצת המכונות.
דרישות לגבי רשת לקצה העורפי
הרשת של ה-backend צריכה לעמוד באחת מדרישות הרשת הבאות:
רשת ה-VPC של הקצה העורפי חייבת להתאים בדיוק לרשת ה-VPC של כלל ההעברה.
רשת ה-VPC של הקצה העורפי צריכה להיות מחוברת לרשת ה-VPC של כלל ההעברה באמצעות קישור בין רשתות שכנות (peering) ב-VPC. כדי לאפשר תקשורת בין רשת המשנה שמשמשת רק לשרתי proxy ברשת ה-VPC של כלל ההעברה לבין רשתות המשנה שמשמשות את המכונות או נקודות הקצה לקצה העורפי, צריך להגדיר החלפות של נתיבים ברשת המשנה.
דרישות לגבי רשתות משנה של IPv6 בקצה העורפי
גרסת ה-IP שמשמשת לחיבור הקצה הקדמי לא תלויה בחיבור הקצה העורפי. מכיוון שרשת המשנה proxy-only היא במצב דואלי (IPV4_IPV6), היא יכולה לתקשר עם קצוות עורפיים באמצעות IPv4 או IPv6.
אם מכונות הקצה העורפי מטפלות בתעבורת נתונים ב-IPv6, אפשר להגדיר את סוג המחסנית של רשת המשנה של הקצה העורפי כ-
IPV4_ONLYאו כ-IPV4_IPV6(מחסנית כפולה). אם סוג המחסנית של רשת המשנה של הקצה העורפי כולל IPv6, צריך להגדיר באופן מפורש את ipv6-access-type של רשת המשנה לערךINTERNAL.
בכל שאר סוגי הקצוות העורפיים, כל הקצוות העורפיים צריכים להיות באותו אזור ורשת VPC.
ממשקי רשת וקצוות עורפיים
אם משתמשים בקצוות עורפיים של קבוצות מכונות, החבילות תמיד נשלחות אל nic0. אם רוצים לשלוח חבילות לממשקים שהם לא nic0 (ממשקי רשת וירטואליים או ממשקי רשת דינמיים), צריך להשתמש בקצוות עורפיים של קבוצות של נקודות קצה ברשת (NEG).
אם אתם משתמשים בקצוות עורפיים של NEG אזוריים, החבילות נשלחות לכל ממשק רשת שמיוצג על ידי נקודת הקצה ב-NEG. נקודות הקצה של ה-NEG צריכות להיות באותה רשת VPC כמו רשת ה-VPC שמוגדרת במפורש ב-NEG.
פרוטוקול לתקשורת עם הקצוות העורפיים
כשמגדירים שירות לקצה העורפי בשביל מאזן עומסי רשת פנימי בשרת proxy, מגדירים את הפרוטוקול שבו שירות הקצה העורפי משתמש כדי לתקשר עם הקצוות העורפיים. מאזן העומסים משתמש רק בפרוטוקול שציינתם, ולא מנסה לנהל משא ומתן על חיבור עם הפרוטוקול השני. מאזני עומסי רשת פנימיים לשרת proxy תומכים רק ב-TCP לתקשורת עם הקצוות העורפיים.
בדיקת תקינות
בכל שירות לקצה העורפי מוגדרת בדיקת תקינות, שבודקת מדי פעם אם הקצוות העורפיים מוכנים לקבל חיבור ממאזן העומסים. כך מצמצמים את הסיכון שיישלחו בקשות לקצוות עורפיים שלא יכולים לטפל בהן. בדיקות תקינות לא בודקות אם האפליקציה עצמה פועלת.
פרוטוקול בדיקת תקינות
למרות שזה לא חובה ולא תמיד אפשרי, מומלץ להשתמש בבדיקת תקינות שהפרוטוקול שלה תואם לפרוטוקול של שירות הקצה העורפי. לדוגמה, בדיקת תקינות של TCP בודקת בצורה הכי מדויקת את הקישוריות של TCP לקצוות העורפיים. רשימה של פרוטוקולים נתמכים לבדיקות תקינות מופיעה בקטע בדיקות תקינות בדף ההשוואה בין התכונות של מאזני העומסים.
בטבלה הבאה מפורט היקף בדיקות התקינות שנתמכות על ידי מאזני עומסי רשת פנימיים של שרתי proxy בכל מצב:
| מצב מאזן עומסים | סוג בדיקת התקינות |
|---|---|
| מאזן עומסי רשת אזורי פנימי בשרת proxy | אזורי regionHealthChecks |
למידע נוסף על בדיקות תקינות, ראו את המאמרים הבאים:
כללי חומת אש
במאזני עומסי רשת פנימיים לשרת proxy צריך להגדיר את כללי חומת האש הבאים:
- כלל הרשאה לתעבורת נתונים נכנסת שמאפשר תעבורת נתונים מחיישני בדיקת התקינות של Google. למידע נוסף על טווחי כתובות ה-IP הספציפיים של בדיקת החיבור ועל הסיבה שבגללה צריך לאפשר תנועה מהם, קראו את המאמר טווחי כתובות ה-IP של בדיקת החיבור וכללי חומת האש.
- כלל שמאפשר תעבורת נתונים נכנסת (ingress) מתת-רשת של שרת proxy בלבד.
צריך להגדיר את היציאות של כללי חומת האש האלה באופן הבא:
מאפשרים תנועה ליציאת היעד של בדיקת התקינות של כל שירות לקצה העורפי.
בקצוות עורפיים של קבוצות מכונות: קובעים את היציאות שצריך להגדיר לפי המיפוי בין היציאה בעלת השם של השירות לקצה העורפי לבין מספרי היציאות שמשויכים ליציאה בעלת השם הזו בכל קבוצת מכונות. מספרי היציאות יכולים להשתנות בין קבוצות של מכונות שמוקצות לאותו שירות לקצה העורפי.
ב-
GCE_VM_IP_PORTקבוצות NEG לקצה העורפי, מאפשרים תנועה למספרי היציאות של נקודות הקצה.
יש כמה חריגים לדרישות של כללי חומת האש למאזני העומסים האלה:
- בקבוצות NEG היברידיות לא צריך לאפשר תנועה מטווחים של בדיקות תקינות של Google. עם זאת, אם אתם משתמשים בשילוב של קבוצות NEG היברידיות וקבוצות NEG אזוריות בשירות קצה עורפי יחיד, אתם צריכים לאפשר תעבורת נתונים מטווחי בדיקות התקינות של Google לקבוצות ה-NEG האזוריות.
- ב-NEG אזוריים לאינטרנט, בדיקות תקינות הן אופציונליות. תעבורת הנתונים ממאזני עומסים שמשתמשים בקבוצות NEG אזוריות של נקודות קצה באינטרנט מגיעה מרשת המשנה לשרתי proxy בלבד, ואז מתורגמת באמצעות Cloud NAT לכתובות IP של NAT שהוקצו באופן ידני או בהקצאה אוטומטית. התנועה הזו כוללת גם בדיקות תקינות וגם בקשות של משתמשים ממאזן העומסים לקצוות העורפיים. לפרטים, ראו קבוצות NEG אזוריות: שימוש בשער Cloud NAT.
אתם יכולים להשתמש בכללי מדיניות חומת האש של Cloud NGFW כדי לקבוע את הגישה של הלקוחות לכללי ההעברה של מאזני עומסים שמבוססים על שרת proxy של Envoy, כמו מאזני עומסי רשת אזוריים פנימיים לשרת proxy ומאזני עומסי רשת פנימיים לשרת proxy בכמה אזורים. שתי הגרסאות, Cloud NGFW Essentials ו-Cloud NGFW Standard, תומכות בתכונות האלה.
מידע נוסף זמין במאמר שימוש בכללי מדיניות אזוריים של חומת אש לרשת כדי להגן על מאזני עומסים פנימיים של אפליקציות ועל מאזני עומסי רשת פנימיים של שרתי proxy.
גישת לקוח
הלקוחות יכולים להיות באותה רשת או ברשת VPC שמחוברת באמצעות קישור בין רשתות VPC שכנות (peering).
במאזני עומסי רשת אזוריים פנימיים לשרת proxy, כברירת מחדל הלקוחות צריכים להיות באותו אזור של מאזן העומסים. הם גם צריכים להיות באותה רשת VPC כמו מאזן העומסים, או ברשת VPC שמחוברת לרשת ה-VPC של מאזן העומסים באמצעות קישור בין רשתות VPC שכנות.
לקוחות מקומיים יכולים לגשת למאזן העומסים דרך מנהרות Cloud VPN או צירופים ל-VLAN. המנהרות או החיבורים האלה צריכים להיות באותו אזור שבו נמצא מאזן העומסים.
ארכיטקטורת VPC משותף
מאזן עומסי הרשת הפנימי לשרת proxy תומך ברשתות שמשתמשות ב-VPC משותף. בעזרת VPC משותף אתם יכולים לשמור על הפרדה ברורה בין תחומי האחריות של מנהלי הרשתות לבין אלה של מפתחי השירותים. צוותי הפיתוח יכולים להתמקד בבניית שירותים בפרויקטים של שירות, וצוותי התשתית של הרשת יכולים להקצות ולנהל את איזון העומסים. אם אתם לא מכירים את VPC משותף, כדאי לקרוא את הסקירה הכללית על VPC משותף.
| כתובת IP | כלל העברה | שרת proxy לחלוקת העומס | רכיבי קצה עורפי |
|---|---|---|---|
כתובת ה-IP הפנימית צריכה להיות מוגדרת באותו פרויקט שבו נמצאים שירותי ה-backend. כדי שמאזן העומסים יהיה זמין ברשת VPC משותפת, צריך להגדיר את כתובת ה-IP הפנימית באותו פרויקט שירות שבו נמצאות המכונות הווירטואליות של ה-backend, והיא צריכה להפנות לרשת משנה ברשת ה-VPC המשותפת הרצויה בפרויקט המארח. הכתובת עצמה מגיעה מטווח ה-IP הראשי של תת-הרשת שאליה מפנים. |
כלל העברה פנימי צריך להיות מוגדר באותו פרויקט שבו נמצאים שירותי הקצה העורפי. כדי שמאזן העומסים יהיה זמין ברשת VPC משותפת, צריך להגדיר את כלל ההעברה הפנימי באותו פרויקט שירות שבו נמצאות המכונות הווירטואליות של ה-backend, וגם להפנות לאותה רשת משנה (ברשת ה-VPC המשותפת) שאליה מפנה כתובת ה-IP הפנימית המשויכת. |
צריך להגדיר את שרת ה-Proxy לחלוקת העומס באותו פרויקט שבו נמצאים ה-backends. | בתרחיש של VPC משותף, המכונות הווירטואליות של ה-backend נמצאות בדרך כלל בפרויקט שירות. בפרויקט השירות הזה צריך להגדיר שירות לקצה עורפי פנימי אזורי ובדיקת תקינות. |
ביזור תעבורת נתונים
מאזן עומסי רשת פנימי לשרת proxy מפזר את התנועה לקצוות העורפיים שלו באופן הבא:
- חיבורים שמקורם בלקוח יחיד נשלחים לאותו אזור, כל עוד יש באזור הזה שרתים עורפיים תקינים (קבוצות של מכונות או קבוצות של נקודות קצה ברשת) זמינים ועם קיבולת, כפי שנקבע על ידי מצב האיזון.
במאזני עומסי רשת פנימיים אזוריים לשרת proxy, מצב האיזון יכול להיות
CONNECTION(קבוצת מכונות או קצוות עורפיים של NEG) אוUTILIZATION(קצוות עורפיים של קבוצת מכונות בלבד). - אם הגדרתם זיקה לסשן (session affinity), החיבורים מהלקוח נשלחים לאותו קצה עורפי.
- אחרי שבוחרים בקצה עורפי, התנועה מופצת בין מכונות (בקבוצת מכונות) או נקודות קצה (ב-NEG) בהתאם למדיניות של איזון עומסים. במאמרי העזרה של ה-API של שירות אזורי לקצה העורפי, בקטע של ההגדרה
localityLbPolicy, מפורטים האלגוריתמים שנתמכים במדיניות איזון העומסים.
ניתוב מבוסס-SNI עם מסלולי TLS
ניתוב מבוסס-SNI מאפשר למאזני עומסי רשת עם שרת proxy ל-TCP לנתב את התנועה לשירותים ספציפיים לקצה העורפי, על סמך שם המארח של חיווי שם השרת (SNI) שסופק במהלך לחיצת היד בפרוטוקול TLS. SNI הוא תוסף TLS שמאפשר ללקוח לציין את שם הדומיין שאליו הוא רוצה להגיע לפני שנוצרת המנהרה המוצפנת.
שם המארח של ה-SNI מועבר בפורמט לא מוצפן בהודעת ClientHello, כדי שמאזן העומסים יוכל לבדוק את הערך הזה ולנתב את תעבורת הנתונים לשירות לקצה העורפי המתאים.
אתם יכולים להשתמש במשאב של הגדרת מסלול TLS כדי למפות שמות מארחים ספציפיים של SNI לשירותים לקצה העורפי. כשמגדירים ניתוב מבוסס-SNI, מאזן העומסים מפעיל מעבר TLS, שבו זרם הבייטים המוצפן מועבר ישירות לקצה העורפי בלי שמאזן העומסים מפענח אותו.
התכונה הזו מאפשרת כמה תרחישים לדוגמה, כמו:
- אפשר להשתמש בכתובת IP גלובלית אחת מסוג anycast וביציאה אחת כדי להציג כמה אפליקציות, וכך לצמצם את השימוש בכתובות IPv4.
- תמיכה בפריסות מוצפנות מקצה לקצה שבהן האישורים יכולים להישאר בקצה העורפי, כדי לוודא שהתנועה אף פעם לא תהיה לא מוצפנת בזמן ההעברה.
- מאפשר לאדמינים של הפלטפורמה לנהל את התשתית המרכזית, בזמן שבעלי השירותים מנהלים באופן עצמאי את המסלולים וה-backend הספציפיים שלהם.
- מאפשר ניתוב למקטעים ספציפיים של אפליקציות stateful שאינן HTTP (כמו MongoDB) על סמך ה-SNI שסופק על ידי הלקוח.
איך התנועה מתחלקת כשמשתמשים בנתיבי TLS
כשמגדירים ניתוב מבוסס-SNI, תעבורת הנתונים מנותבת לשירותים לקצה העורפי באופן הבא:
- מאזן העומסים מאזין לכתובת ה-IP וליציאה שמוגדרות בכלל ההעברה.
- כשלקוח יוזם חיבור TLS, מאזן העומסים מיירט את ההודעה
ClientHelloומחלץ את שם המארח של ה-SNI. ה-SNI שחולץ מושווה לשמות המארחים שמוגדרים בנתיבי ה-TLS שהוגדרו. מאזן העומסים משתמש בלוגיקה הבאה כדי לקבוע איזה שירות לקצה העורפי צריך לקבל את התנועה:
- אם הלקוח לא משתמש בפרוטוקול TLS, מאזן העומסים סוגר את החיבור.
- אם הלקוח לא שולח שם מארח של SNI בהודעת
ClientHello, מאזן העומסים סוגר את החיבור. - אם הלקוח שולח שם מארח SNI שהוא לא שם DNS תקין, מאזן העומסים סוגר את החיבור.
- אם הלקוח שולח שם מארח SNI שלא תואם לאף אחד משמות המארחים של SNI שמשויכים לנתיב TLS, מאזן העומסים סוגר את החיבור.
בכל המצבים האחרים: מאזן העומסים בוחר שירות לקצה העורפי באמצעות תהליך ההתאמה הבא:
ההתאמה מתבצעת לפי הסיומת הארוכה ביותר (הארוכה ביותר מבחינת מספר תת-הדומיינים). כדי להמחיש את שיטת ההתאמה, נניח שיש מסלול TLS עם SNI
*.foo.com, מסלול TLS נוסף עם SNI *.bar.foo.comומסלול TLS שלישי עם SNI baz.bar.foo.com.- אם שם המארח של ה-SNI של הלקוח הוא
baz.bar.foo.com, מאזן העומסים בוחר שירות לקצה העורפי שאליו מפנה נתיב ה-TLS שה-SNI שלו הואbaz.bar.foo.com. - אם שם המארח של ה-SNI של הלקוח הוא
qux.bar.foo.com, מאזן העומסים בוחר שירות לקצה העורפי שאליו מפנה נתיב ה-TLS שה-SNI שלו הוא*.bar.foo.com. - אם שם המארח של ה-SNI של הלקוח הוא
qux.qux.foo.com, מאזן העומסים בוחר שירות לקצה העורפי שאליו מפנה נתיב ה-TLS שה-SNI שלו הוא*.foo.com.
- אם שם המארח של ה-SNI של הלקוח הוא
אחרי שנמצאת התאמה, זרם הבייטים המוצפן מועבר ישירות באמצעות שרת proxy לשירות הקצה העורפי שהוקצה, בלי לסיים את חיבור ה-TLS (ל-TLS passthrough).
מגבלות
המגבלות הבאות חלות כשמשתמשים בנתיבי TLS כדי להגדיר ניתוב מבוסס-SNI:
- שרת proxy ל-TCP יכול להפנות לשירות אחד לקצה העורפי או לנתיב TLS אחד או יותר. אי אפשר להגדיר את שניהם.
מאזני עומסי רשת מסוג Proxy לא יכולים לזהות איחוד של חיבורי HTTP, מה שעלול להוביל לניתוב שגוי של בקשות HTTP.
כברירת מחדל, דפדפנים כבר מאחדים חיבורי HTTP. לדוגמה, כשדפדפן פותח חיבור ל-
www.example.comוהשרת מציג אישור ל-*.example.comבמהלך לחיצת היד בפרוטוקול TLS, הדפדפן משתמש שוב בחיבור הזה לכל הבקשות ל-*.example.com, כל עוד שם המארח מפנה לאותה כתובת IP. ההתנהגות הזו תואמת ל-RFC 7540.בניתוב מבוסס-SNI, אחרי שנוצר חיבור הוא מקושר באופן קבוע לקצה העורפי של היעד. נניח שיש פריסה שבה
*.example.comמוגש על ידי קצה עורפי אחד של HTTPS עם אישור TLS של*.example.com, ו-my.example.comמוגש על ידי קצה עורפי אחר של HTTPS. אם נוצר קודם חיבור ל-*.example.com, בקשות ה-HTTP הבאות ל-my.example.comימוזגו לאותו חיבור, באמצעות הקצה העורפי של HTTPS ב-*.example.com.
זיקה לסשן (session affinity)
ההגדרה "זיקה לסשן" מאפשרת לכם להגדיר את שירות הקצה העורפי של מאזן העומסים כך שישלח את כל הבקשות מאותו לקוח לאותו קצה עורפי, כל עוד הקצה העורפי תקין ויש לו קיבולת.
במאזני עומסי רשת פנימיים לשרת proxy אפשר להשתמש בסוגים הבאים של זיקה לסשן:ללא
הגדרה של זיקה לסשן (session affinity) כ-
NONEלא אומרת שאין זיקה לסשן. זה אומר שלא הוגדרה במפורש אפשרות של זיקה לסשן.תמיד מתבצע גיבוב (hashing) כדי לבחור קצה עורפי. הגדרת הזיקה לסשן (session affinity) של
NONEפירושה שמאזן העומסים משתמש בגיבוב של 5 ערכים כדי לבחור בק-אנד. הגיבוב של 5-tuple מורכב מכתובת ה-IP של המקור, מיציאת המקור, מהפרוטוקול, מכתובת ה-IP של היעד ומיציאת היעד.ערך ברירת המחדל של הזיקה לסשן הוא
NONE.זיקה לכתובת IP של לקוח
זיקה לסשן (session affinity) של כתובת ה-IP של הלקוח (
CLIENT_IP) היא גיבוב (hash) של 2 ערכים שנוצר מכתובות ה-IP של המקור והיעד של חבילת הנתונים. הזיקה לכתובת ה-IP של הלקוח מעבירה את כל הבקשות מאותה כתובת IP של לקוח לאותו קצה עורפי, כל עוד יש לקצה העורפי הזה קיבולת והוא תקין.כשמשתמשים בזיקה לכתובת IP של לקוח, חשוב לזכור את הנקודות הבאות:
- כתובת ה-IP של היעד של החבילה זהה לכתובת ה-IP של כלל ההעברה של מאזן העומסים רק אם החבילה נשלחת ישירות למאזן העומסים.
- יכול להיות שכתובת ה-IP של מקור חבילת הנתונים לא תתאים לכתובת IP שמשויכת ללקוח המקורי, אם חבילת הנתונים מעובדת על ידי מערכת NAT או שרת proxy לפני שהיא נשלחת למאזן עומסים של Cloud de Confiance . במצבים שבהם להרבה לקוחות יש את אותה כתובת IP אפקטיבית של מקור, יכול להיות שחלק מהמכונות הווירטואליות בקצה העורפי יקבלו יותר חיבורים או בקשות מאחרות.
כשמגדירים זיקה לסשן, חשוב לזכור את הדברים הבאים:
אל תסתמכו על זיקה לסשן למטרות אימות או אבטחה. הזיקה לסשן יכולה להשתבש בכל פעם שמספר הקצוות העורפיים התקינים שמציגים מודעות משתנה. פרטים נוספים זמינים במאמר אובדן הזיקה לסשן.
ערכי ברירת המחדל של הדגלים
--session-affinityו---subsetting-policyהםNONE, ורק אחד מהם יכול להיות מוגדר לערך אחר בכל פעם.
אובדן הזיקה לסשן (session affinity)
כל האפשרויות של זיקה לסשן דורשות את הדברים הבאים:
- המופע או נקודת הקצה (endpoint) של הקצה העורפי שנבחרו חייבים להישאר מוגדרים כקצה עורפי. הזיקה לסשן יכולה להישבר כשאחד מהאירועים הבאים מתרחש:
- המכונה שנבחרה תוסר מקבוצת המכונות שלה.
- התאמה אוטומטית לעומס או תיקון תוכנה אוטומטי (autohealing) של קבוצת מופעי מכונה מנוהלים מסירים את המכונה שנבחרה מקבוצת מופעי המכונה המנוהלים שלה.
- אתם מסירים את נקודת הקצה שנבחרה מה-NEG שלה.
- מסירים משירות הקצה העורפי את קבוצת המכונות או את ה-NEG שמכילים את המכונה או את נקודת הקצה שנבחרו.
- נקודת הקצה או השרת העורפי שנבחרו צריכים להישאר תקינים. הזיקה לסשן עלולה להישבר אם המכונה או נקודת הקצה שנבחרו נכשלות בבדיקות התקינות.
קבוצת המכונות או ה-NEG שמכילים את המכונה או נקודת הקצה שנבחרו לא יכולים להיות מלאים, כפי שמוגדר בקיבולת היעד שלהם. (בקבוצות אזוריות של מופעים מנוהלים, הרכיב האזורי של קבוצת המופעים שמכילה את המופע שנבחר לא יכול להיות מלא). הזיקה לסשן יכולה להשתבש כשקבוצת המכונות או ה-NEG מלאים, וקבוצות מכונות או קבוצות NEG אחרות לא מלאות. מכיוון שרמת העומס יכולה להשתנות באופן בלתי צפוי כשמשתמשים במצב האיזון
UTILIZATION, כדאי להשתמש במצב האיזוןRATEאוCONNECTIONכדי לצמצם מצבים שבהם הזיקה לסשן עלולה להשתבש.המספר הכולל של שרתי עורף (backend instance) או נקודות קצה שהוגדרו חייב להישאר קבוע. כשמתרחש לפחות אחד מהאירועים הבאים, מספר נקודות הקצה או המופעים של הקצה העורפי שהוגדרו משתנה, והזיקה לסשן עלולה להישבר:
הוספת מכונות או נקודות קצה חדשות:
- מוסיפים מכונות לקבוצת מכונות קיימת בשירות לקצה העורפי.
- התאמה אוטומטית לעומס של קבוצת מופעי מכונה מנוהלים מוסיפה מופעים לקבוצת מופעי מכונה מנוהלים בשירות לקצה העורפי.
- מוסיפים נקודות קצה ל-NEG קיים בשירות לקצה העורפי.
- מוסיפים לשירות לקצה העורפי קבוצות של מכונות או קבוצות של נקודות קצה ברשת (NEG) שאינן ריקות.
הסרה של כל מכונה או נקודת קצה, לא רק המכונה או נקודת הקצה שנבחרו:
- אתם מסירים מכונה כלשהי מקצה עורפי של קבוצת מכונות.
- התאמה אוטומטית לעומס (autoscaling) או תיקון תוכנה אוטומטי (autohealing) של קבוצת מופעי מכונה מנוהלים מסירים כל מכונה מה-backend של קבוצת מופעי מכונה מנוהלים.
- אתם מסירים נקודת קצה (endpoint) כלשהי מקצה עורפי של NEG.
- מסירים מהשירות לקצה העורפי את כל קבוצות המכונות או ה-NEG הקיימות בקצה העורפי שאינן ריקות.
המספר הכולל של נקודות קצה או מכונות תקינות של שרתים עורפיים חייב להישאר קבוע. כשמתרחש לפחות אחד מהאירועים הבאים, מספר נקודות הקצה או השרתים העורפיים התקינים משתנה, והזיקה לסשן עלולה להשתבש:
- כל מכונה או נקודת קצה (endpoint) שעוברת את בדיקת התקינות, ועוברת ממצב לא תקין למצב תקין.
- בדיקת התקינות של מכונה או נקודת קצה נכשלת, והמצב משתנה מתקין ללא תקין או לזמן קצוב לתפוגה.
יתירות כשל
אם אחד מה-backends לא תקין, התנועה מופנית אוטומטית ל-backends תקינים.
בטבלה הבאה מתוארת ההתנהגות של יתירות כשל במאזני עומסי רשת פנימיים לשרת proxy:
| מצב מאזן עומסים | התנהגות במקרה של יתירות כשל | ההתנהגות כשכל ה-backends לא תקינים |
|---|---|---|
| מאזן עומסי רשת אזורי פנימי בשרת proxy | מאזן העומסים מיישם אלגוריתם עדין של יתירות כשל לכל אזור. במקום להמתין עד שכל ה-backends באזור מסוים יהיו לא תקינים, מאזן העומסים מתחיל להפנות את התנועה לאזור אחר כשהיחס בין ה-backends התקינים ללא תקינים באזור מסוים נמוך מסף אחוזים מסוים (70%, אי אפשר להגדיר את הסף הזה). אם כל ה-backends בכל האזורים לא תקינים, מאזן העומסים מנתק מיד את החיבור של הלקוח. שרת ה-proxy של Envoy שולח תנועה לקצוות עורפיים תקינים באזור, על סמך חלוקת התנועה שהוגדרה. |
מנתק את החיבור |
איזון עומסים לאפליקציות GKE
אם אתם מפתחים אפליקציות ב-Google Kubernetes Engine (GKE), אתם יכולים להשתמש בקבוצות NEG אזוריות עצמאיות כדי לאזן את העומסים של תעבורת הנתונים ישירות לקונטיינרים. כשמשתמשים בקבוצות NEG עצמאיות, אתם צריכים ליצור את האובייקט Service שיוצר את קבוצת ה-NEG האזורית, ואז לשייך את קבוצת ה-NEG לשירות לקצה העורפי כדי שמאזן העומסים יוכל להתחבר לפודים.
מסמכי תיעוד קשורים של GKE:
מכסות ומגבלות
מכסות ומגבלות: מידע על מכסות ומגבלות.
מגבלות
- מאזן עומסי הרשת הפנימי לשרת proxy לא תומך בפריסות של VPC משותף שבהן ממשק ה-frontend של מאזן העומסים נמצא בפרויקט מארח או בפרויקט שירות אחד, ושירות הקצה העורפי והקצוות העורפיים נמצאים בפרויקט שירות אחר (נקרא גם הפניה לשירות בפרויקט אחר).
- Cloud de Confiance לא מבטיחה את משך החיים של חיבורי TCP כשמשתמשים במאזני עומסי רשת פנימיים לשרת proxy. הלקוחות צריכים להיות עמידים בפני ניתוקים, גם בגלל בעיות רחבות יותר באינטרנט וגם בגלל הפעלות מחדש מתוזמנות באופן קבוע של שרתי ה-proxy של Envoy שמנהלים את החיבורים.