סקירה כללית על מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי שמבוסס על מאגר יעד

מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי הוא מאזן עומסים אזורי בשכבה 4. מאזני עומסים חיצוניים של רשת להעברת סיגנל ללא שינוי מחלקים תעבורת TCP ו-UDP בין מכונות וירטואליות (VM) בעורף באותו אזור ברשת של ענן וירטואלי פרטי (VPC). מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי יכול לקבל תנועה מאחד מהמקורות הבאים:

  • כל לקוח באינטרנט
  • Google Cloud מכונות וירטואליות עם כתובות IP חיצוניות
  • Google Cloud מכונות וירטואליות שיש להן גישה לאינטרנט דרך Cloud NAT או NAT שמבוסס על מכונה

בהתאם להגדרת כלל ההעברה, כל מאזן עומסים שמבוסס על מאגר יעדים תומך באחד מסוגי תעבורת הפרוטוקולים הבאים:

  • TCP
  • UDP
  • ‫TCP ו-UDP

ההיקף של מאזן העומסים הוא אזורי, לא גלובלי. כלומר, כל מופעי ה-Backend של מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי חייבים להיות באותו אזור. אפשר למקם שרתי בק-אנד בכל אזור של האזור.

מאזני עומסים חיצוניים של רשתות להעברת סיגנל ללא שינוי תומכים בכל היציאות. אפשר להשתמש במאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי כדי לאזן עומסים של תנועת TCP או UDP. מאחר שמאזן העומסים הוא מאזן עומסים להעברת סיגנל ללא שינוי, שרתי הבק-אנד שלכם מסיימים את חיבור ה-TCP המאוזן או את חבילות ה-UDP בעצמם. לדוגמה, אתם יכולים להפעיל שרת אינטרנט HTTPS בבק-אנד ולהשתמש במאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי כדי לנתב אליו בקשות, ולסיים את ה-TLS בבק-אנד עצמו.

אם אתם מפתחים אפליקציות ב-GKE, מומלץ להשתמש בבקר השירות של GKE המובנה, שמבצע פריסה של מאזני עומסים בשם משתמשי GKE. Google Cloud הארכיטקטורה הזו זהה לארכיטקטורה של איזון עומסים עצמאי, אבל מחזור החיים שלה אוטומטי לגמרי ונשלט על ידי GKE. פרטים נוספים זמינים במאמר בנושא חשיפת אפליקציות באמצעות שירותים.

ארכיטקטורה

מאזן העומסים מורכב מכמה רכיבי הגדרה. מאזן עומסים יחיד יכול לכלול את הרכיבים הבאים:

למאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי יש תמיד מאגר יעד אחד. כמה כללי העברה יכולים להפנות למאגר היעד.

מאגר היעד הוא קצה עורפי של מאזן העומסים. הוא מציין את מופעי ה-Backend שביניהם מתבצע איזון עומסים של התנועה. כל כלל העברה הוא חזית למאזן העומסים. חשוב לזכור שיש מגבלות על מספר כללי ההעברה ומאגרי היעדים לכל פרויקט.

מאזני עומסים חיצוניים של רשת להעברת סיגנל ללא שינוי מאזנים את העומס במערכות שלכם על סמך נתוני פרוטוקול IP נכנסים, כמו כתובת, יציאה וסוג הפרוטוקול.

מאזן עומסי הרשת החיצוני להעברת סיגנל ללא שינוי הוא מאזן עומסים להעברת סיגנל ללא שינוי, ולכן שרתי הבק-אנד מקבלים את בקשת הלקוח המקורית. מאזן עומסי הרשת החיצוני להעברת סיגנל ללא שינוי לא מבצע העברה של אבטחת שכבת התעבורה (TLS) או שימוש בשרת proxy. התנועה מנותבת ישירות למכונות הווירטואליות.

כשיוצרים כלל להעברת תנועה למאזן העומסים, מקבלים כתובת IP וירטואלית (VIP) ארעית או שומרים כתובת VIP שמקורה בבלוק אזורי של רשת.

לאחר מכן משייכים את כלל ההעברה למאגרי היעדים. כתובת ה-VIP מועברת בשיטת anycast מנקודות הנוכחות הגלובליות של Google, אבל השרתים העורפיים הם אזוריים. למאזן העומסים לא יכולים להיות שרתי בק-אנד בכמה אזורים.

אפשר להשתמש ב Google Cloud חומות אש כדי לשלוט בגישה למכונות הווירטואליות של ה-Backend או לסנן אותה.

מאזן עומסי הרשת החיצוני להעברת סיגנל ללא שינוי בודק את יציאות המקור והיעד, כתובת ה-IP והפרוטוקול כדי לקבוע איך להעביר חבילות. בתעבורת TCP, אפשר לשנות את התנהגות ההעברה של מאזן העומסים על ידי הגדרת שיוך סשן. מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי מעביר מנות לכרטיס הרשת הראשון (nic0) של המופעים במאגר היעד.

מאזן העומסים שומר על כתובות ה-IP של המקור של החבילות הנכנסות. כתובת ה-IP של היעד של מנות נכנסות היא כתובת ה-IP החיצונית האזורית שמשויכת לכלל ההעברה של מאזן העומסים.

אלגוריתם של חלוקת עומסים

כברירת מחדל, כדי להפיץ את התנועה למופעים, הערך של session affinity מוגדר ל-NONE. Cloud Load Balancing בוחר מופע על סמך גיבוב של כתובת ה-IP והיציאה של המקור, כתובת ה-IP והיציאה של היעד והפרוטוקול. המשמעות היא שחיבורי TCP נכנסים מתפזרים בין המופעים, וכל חיבור חדש עשוי להגיע למופע אחר. כל החבילות של חיבור מסוים מופנות לאותו מופע עד שהחיבור נסגר. החיבורים הקיימים לא נלקחים בחשבון בתהליך איזון העומסים.

ללא קשר להגדרת זיקה לסשן (session affinity), כל החבילות של חיבור מסוים מופנות למופע שנבחר עד שהחיבור נסגר. חיבור קיים לא משפיע על החלטות איזון העומסים לגבי חיבורים נכנסים חדשים. אם נעשה שימוש בחיבורי TCP לטווח ארוך, יכול להיות שייווצר חוסר איזון בין השרתים העורפיים.

אתם יכולים לבחור הגדרת זיקה לסשן (session affinity) אחרת אם אתם צריכים כמה חיבורים מלקוח לאותו מופע.

מאגרי יעד

משאב של מאגר מכונות יעד מגדיר קבוצה של מופעים שאמורים לקבל תנועה נכנסת מכללי העברה. כשכלל העברה מכוון תעבורה למאגר יעדים, Cloud Load Balancing בוחר מופע ממאגרי היעדים האלה על סמך גיבוב של כתובת ה-IP והיציאה של המקור וכתובת ה-IP והיציאה של היעד. כל מאגר של יעדים פועל באזור אחד ומפיץ את התעבורה לממשק הרשת הראשון (nic0) של מופע ה-Backend. מידע נוסף על האופן שבו התנועה מופצת למופעים זמין בקטע אלגוריתם חלוקת העומס.

מאזני עומסי רשת חיצוניים להעברת סיגנל ללא שינוי הם לא שרתי proxy. התשובות ממכונות וירטואליות של ה-Backend מגיעות ישירות ללקוחות, ולא עוברות דרך מאזן העומסים. מאזן העומסים שומר על כתובות ה-IP של המקור של חבילות הנתונים. כתובת ה-IP של היעד של חבילות נכנסות היא כתובת ה-IP החיצונית האזורית שמשויכת לכלל ההעברה של מאזן העומסים. לכן:

  • במקרים שבהם מופעלות מכונות וירטואליות כבק-אנד למאזני עומסי רשת חיצוניים להעברת סיגנל ללא שינוי, צריך להפעיל בהן את סביבת האורח המתאימה של Linux, את סביבת האורח של Windows או תהליכים אחרים שמספקים יכולת שוות ערך.

    סביבת מערכת ההפעלה של האורח (או תהליך מקביל) אחראית להגדרת נתיבים מקומיים בכל מכונת קצה וירטואלית. המסלולים האלה מאפשרים למכונה הווירטואלית לקבל חבילות שהיעד שלהן תואם לכתובת ה-IP של כלל ההעברה של מאזן העומסים.

  • במופעים של קצה עורפי שמקבלים תנועה מאוזנת עומסים, צריך להגדיר את התוכנה כך שתתבצע אליה הקצאה של כתובת ה-IP שמשויכת לכלל ההעברה של מאזן העומסים (או לכל כתובת IP, 0.0.0.0/0).

מאזני עומסי רשת חיצוניים להעברת סיגנל ללא שינוי תומכים במידרוג אוטומטי ב-Compute Engine, שמאפשר למשתמשים לבצע התאמה אוטומטית לעומס בקבוצות המופעים במאגר היעד על סמך ניצול ה-Backend. מידע נוסף זמין במאמר בנושא שינוי גודל על סמך ניצול CPU.

אם אתם רוצים שמאגר היעדים יכיל מופע VM יחיד, כדאי להשתמש במקום זאת בתכונה העברת פרוטוקול.

אפשר להשתמש במאגרי יעד רק עם כללי העברה שמטפלים בתנועת TCP ו-UDP. לגבי כל הפרוטוקולים האחרים, צריך ליצור מופע יעד. צריך ליצור מאגר יעדים לפני שמשתמשים בו עם כלל העברה. כל פרויקט יכול להכיל עד 50 מאגרי קהלים לטירגוט.

כללי העברה

כללי העברה פועלים בשילוב עם מאגרי יעדים כדי לתמוך באיזון עומסים. כדי להשתמש באיזון עומסים, צריך ליצור כלל העברה שמפנה תנועה למאגרי יעד ספציפיים. אי אפשר לבצע איזון עומסים של התנועה בלי כלל העברה.

כל כלל העברה יוצר התאמה בין כתובת IP מסוימת, פרוטוקול, ואופציונלית, טווח יציאות, לבין מאגר יעד יחיד. כשנשלחת תעבורת נתונים לכתובת IP חיצונית שמטופלת על ידי כלל העברה, כלל ההעברה מפנה את התעבורה הזו למאגר היעדים המתאים.

אם אתם מבצעים איזון עומסים של חבילות UDP שסביר להניח שיפוצלו לפני שיגיעו לרשת ה-VPC שלכם, כדאי לעיין במאמר בנושא איזון עומסים וחבילות UDP מפוצלות. Google Cloud

מאזני עומסי רשת חיצוניים להעברת סיגנל ללא שינוי שמבוססים על מאגר כתובות יעד תומכים בפרוטוקולים הבאים לכל כלל העברה: TCP או UDP. אם רוצים שמאזן העומסים יעביר את כל התנועה בפרוטוקול IP, צריך להשתמש במאזן חיצוני של עומסי רשת להעברת סיגנל ללא שינוי שמבוסס על שירות לקצה העורפי.

מספר כללי העברה

אפשר להגדיר כמה כללי העברה אזוריים חיצוניים לאותו מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי. אפשר גם להגדיר לכל כלל העברה כתובת IP חיצונית אזורית שונה, או להגדיר כמה כללי העברה עם אותה כתובת IP חיצונית אזורית.

הגדרת כמה כללי העברה אזוריים חיצוניים יכולה להיות שימושית בתרחישי השימוש הבאים:

  • צריך להגדיר יותר מכתובת IP חיצונית אחת לאותו מאגר של יעדים.
  • צריך להגדיר טווחי יציאות שונים או פרוטוקולים שונים באמצעות אותה כתובת IP חיצונית לאותו מאגר יעד.

כשמשתמשים בכמה כללי העברה, צריך לוודא שמגדירים את התוכנה שפועלת במכונות הווירטואליות של ה-Backend כך שהיא תתחבר לכל כתובות ה-IP הנדרשות. הדבר נדרש כי כתובת ה-IP של היעד עבור מנות שמועברות דרך מאזן העומסים היא כתובת ה-IP החיצונית האזורית שמשויכת לכלל ההעברה החיצוני האזורי המתאים.

בדיקות תקינות

בדיקות תקינות מוודאות ש-Compute Engine מעביר חיבורים חדשים רק למופעים שפועלים ומוכנים לקבל אותם. ‫Compute Engine שולח בקשות לבדיקת תקינות לכל מכונה בתדירות שצוינה. אחרי שמספר הכשלים בבדיקת תקינות של מופע מסוים חורג מהמספר המותר, המופע כבר לא נחשב למופע שעומד בדרישות לקבלת תנועה חדשה.

כדי לאפשר כיבוי חלק וסגירה של חיבורי TCP, חיבורים קיימים לא מסתיימים באופן פעיל. עם זאת, לא מובטח שחיבורים קיימים לשרת קצה עורפי לא תקין יישארו פעילים לאורך זמן. אם אפשר, כדאי להתחיל תהליך של כיבוי מסודר של ה-Backend הלא תקין בהקדם האפשרי.

בודק התקינות ממשיך לשלוח שאילתות למופעים לא תקינים, ומחזיר מופע למאגר כשמתרחש מספר מסוים של בדיקות מוצלחות. אם כל המופעים מסומנים כ-UNHEALTHY, מאזן העומסים מפנה תנועה חדשה לכל המופעים הקיימים.

מאזני עומסים חיצוניים של רשת להעברת סיגנל ללא שינוי מסתמכים על בדיקות תקינות מדור קודם של HTTP כדי לקבוע את תקינות המופע. גם אם השירות שלכם לא משתמש ב-HTTP, אתם צריכים להפעיל שרת אינטרנט בסיסי בכל מופע שהמערכת לבדיקת תקינות יכולה לשלוח אליו שאילתה.

אין תמיכה בבדיקות תקינות מדור קודם מסוג HTTPS במאזני עומסי רשת חיצוניים להעברת סיגנל ללא שינוי, ואי אפשר להשתמש בהן ברוב הסוגים האחרים של מאזני עומסים.

כללי חומת אש

בדיקות תקינות למאזנים חיצוניים של עומסי רשת להעברת סיגנל ללא שינוי נשלחות מטווח כתובות ה-IP האלה. תצטרכו ליצור כללים של חומת אש שמאפשרים תעבורת נתונים נכנסת (ingress) מהטווחים האלה.

מאזני עומסי רשת חיצוניים להעברת סיגנל ללא שינוי הם מאזני עומסים להעברת סיגנל ללא שינוי, כלומר כללי חומת האש צריכים לאפשר תעבורת נתונים מכתובות ה-IP של מקור הלקוח. אם השירות שלכם פתוח לאינטרנט, הכי קל לאפשר תנועה מכל טווחי כתובות ה-IP. אם רוצים להגביל את הגישה כך שרק כתובות IP מסוימות של מקור יקבלו אישור, אפשר להגדיר כללי חומת אש כדי לאכוף את ההגבלה הזו, אבל צריך לאפשר גישה מטווחי כתובות ה-IP של בדיקות תקינות.

דוגמה לכלל חומת אש ודוגמה להגדרה מופיעות במאמר כללי חומת אש למאזנים חיצוניים של עומסי רשת להעברת סיגנל ללא שינוי.

כתובות IP של חבילות בקשה וחבילות החזרה

כשמכונה וירטואלית בקצה העורפי מקבלת חבילה מאוזנת עומסים מלקוח, המקור והיעד של החבילה הם:

  • מקור: כתובת ה-IP החיצונית שמשויכת ל- Google Cloud מכונה וירטואלית או כתובת IP של מערכת שאפשר לנתב דרך האינטרנט, שמתחברת למאזן העומסים.
  • יעד: כתובת ה-IP של כלל ההעברה של מאזן העומסים.

מאחר שמאזן העומסים הוא מאזן עומסים להעברת סיגנל ללא שינוי (ולא שרת proxy), החבילות מגיעות עם כתובת ה-IP של היעד של כלל ההעברה של מאזן העומסים. מגדירים את התוכנה שפועלת במכונות וירטואליות של קצה עורפי כך שתבצע את הפעולות הבאות:

  • האזנה (קישור) לכתובת ה-IP של כלל ההעברה של מאזן העומסים או לכל כתובת IP (0.0.0.0 או ::)
  • אם הפרוטוקול של כלל ההעברה במאזן העומסים תומך ביציאות: האזנה (קישור) ליציאה שכלולה בכלל ההעברה במאזן העומסים

חבילות ההחזרה נשלחות ישירות מהמכונות הווירטואליות של הקצה העורפי של מאזן העומסים אל הלקוח. כתובות ה-IP של המקור והיעד של חבילת הנתונים שמוחזרת תלויות בפרוטוקול:

  • ‫TCP הוא פרוטוקול מבוסס-חיבור, ולכן מכונות וירטואליות בעורף צריכות להשיב עם חבילות שכתובות ה-IP של המקור שלהן תואמות לכתובת ה-IP של כלל ההעברה, כדי שהלקוח יוכל לשייך את חבילות התגובה לחיבור ה-TCP המתאים.
  • פרוטוקול UDP הוא פרוטוקול ללא חיבור, ולכן מכונות וירטואליות בעורף יכולות לשלוח מנות תגובה שכתובות ה-IP של המקור שלהן תואמות לכתובת ה-IP של כלל ההעברה או לכל כתובת IP שהוקצתה למכונה הווירטואלית. מבחינה מעשית, רוב הלקוחות מצפים שהתגובה תגיע מאותה כתובת IP שאליה הם שלחו חבילות.

בטבלה הבאה מפורטים מקורות ויעדים של מנות תגובה:

סוג תעבורה מקור יעד
TCP כתובת ה-IP של כלל ההעברה של מאזן העומסים המקור של חבילת הבקשה
UDP ברוב תרחישי השימוש, כתובת ה-IP של כלל ההעברה של מאזן העומסים 1 המקור של חבילת הבקשה

1 כשמכונה וירטואלית כוללת כתובת IP חיצונית או כשמשתמשים ב-Cloud NAT, אפשר גם להגדיר את כתובת ה-IP של המקור של חבילת התגובה לכתובת ה-IPv4 הפנימית הראשית של כרטיס ה-NIC של המכונה הווירטואלית. Google Cloud או ש-Cloud NAT משנה את כתובת ה-IP של המקור של חבילת התגובה לכתובת ה-IPv4 החיצונית של כרטיס ה-NIC או לכתובת IPv4 חיצונית של Cloud NAT, כדי לשלוח את חבילת התגובה לכתובת ה-IP החיצונית של הלקוח. לא להשתמש בכתובת ה-IP של כלל ההעברה כמקור הוא תרחיש מתקדם, כי הלקוח מקבל חבילת תגובה מכתובת IP חיצונית שלא תואמת לכתובת ה-IP שאליה הוא שלח חבילת בקשה.

נתיבי ניתוב מיוחדים

Google Cloud משתמש בנתיבים מיוחדים שלא מוגדרים ברשת ה-VPC שלכם לבדיקות תקינות. מידע נוסף זמין במאמר נתיבים לבדיקות תקינות.

ארכיטקטורה של VPC משותף

בטבלה הבאה מפורטים רכיבי ה-VPC המשותף למאזנים חיצוניים של עומסי רשת להעברת סיגנל ללא שינוי:

כתובת IP כלל העברה רכיבי קצה עורפי
כתובת IP חיצונית אזורית צריכה להיות מוגדרת באותו פרויקט כמו המכונות הווירטואליות שעליהן מתבצע איזון עומסים. כלל העברה חיצוני אזורי צריך להיות מוגדר באותו פרויקט כמו המכונות במאגר היעד (פרויקט השירות). מאגר היעד צריך להיות מוגדר באותו פרויקט ובאותו אזור שבהם קיימים המופעים במאגר היעד. גם בדיקות תקינות שמשויכות למאגר היעדים צריכות להיות מוגדרות באותו פרויקט.

ביזור תעבורת נתונים

האופן שבו מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי שמבוסס על מאגר יעדים מחלק חיבורים חדשים תלוי בהגדרת הזיקה לסשן.

זיקה לסשן (session affinity)

זיקה לסשן (session affinity) קובעת את שיטת הגיבוב שמשמשת להפצת חיבורים חדשים מלקוחות למכונות ה-VM בעורף של מאזן העומסים. מאזני עומסים שמבוססים על מאגר יעד משתמשים בפרמטר sessionAffinity כדי להגדיר את הזיקה לסשן.

מידע נוסף זמין במאמר שימוש במאגרי יעדים.

איזון עומסים ומנות UDP מפולחות

אם אתם מבצעים איזון עומסים של מנות UDP, חשוב לשים לב לנקודות הבאות:

  1. מטפלים בחבילות לא מפולחות כרגיל בכל ההגדרות.
  2. יכול להיות שחבילות UDP יפוצלו לפני שיגיעו אל Google Cloud. רשתות ביניים עשויות להמתין להגעת כל הפרגמנטים לפני שהן מעבירות אותם, מה שגורם לעיכוב, או שהן עשויות להשליך פרגמנטים. Google Cloud לא ממתין להגעת כל הפרגמנטים, אלא מעביר כל פרגמנט ברגע שהוא מגיע.
  3. מכיוון שפרגמנטים עוקבים של UDP לא מכילים את יציאת היעד, יכולות להתרחש בעיות במצבים הבאים:

    • אם זיקת הסשן של מאגרי היעד מוגדרת ל-NONE (זיקה של 5-tuple), יכול להיות שהפרגמנטים הבאים יימחקו כי מאזן העומסים לא יכול לחשב את הגיבוב של 5-tuple.
    • אם יש יותר מכלל אחד להעברת UDP לאותה כתובת IP עם איזון עומסים, יכול להיות שפרגמנטים עוקבים יגיעו לכלל ההעברה הלא נכון.

אם אתם מצפים לחבילות UDP מקוטעות, אתם צריכים:

  • מגדירים את הזיקה לסשן לערך NONE, CLIENT_IP_PROTO או CLIENT_IP.
    • הגדרה של זיקה לסשן לערך NONE מציינת שאין צורך לשמור על הזיקה. לכן מאזן העומסים משתמש בגיבוב של 5 טאפלים כדי לבחור בק-אנד לחבילות לא מקוטעות, אבל בגיבוב של 3 טאפלים לחבילות מקוטעות.
    • הגדרת זיקה לסשן (session affinity) ל-CLIENT_IP_PROTO או ל-CLIENT_IP פירושה שלא נעשה שימוש ביציאות המקור ויציאות היעד לגיבוב, ולכן הגיבוב זהה גם למנות מפולחות וגם למנות לא מפולחות.
  • אפשר להשתמש רק בכלל העברה אחד של UDP לכל כתובת IP עם איזון עומסים. כך מוודאים שכל הפרגמנטים יגיעו לאותו כלל העברה.

עם ההגדרות האלה, פרגמנטים של UDP מאותו חבילה מועברים לאותו מופע לצורך הרכבה מחדש.

שימוש במופעי יעד כשרתי קצה עורפיים

אם אתם משתמשים במכונות וירטואליות יעד כבק-אנד למאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי, ואתם מצפים לחבילות UDP מפולחות, אתם צריכים להשתמש רק בכלל העברה אחד של UDP לכל כתובת IP עם איזון עומסים, ולהגדיר את כלל ההעברה לקבלת תעבורה בכל היציאות 0-65535. כך מובטח שכל הפרגמנטים יגיעו לאותו כלל העברה, גם אם הם לא מגיעים מאותו יעד.

מגבלות

  • אי אפשר להשתמש במסוף Google Cloud כדי ליצור מאזנים חיצוניים של עומסי רשת להעברת סיגנל ללא שינוי שמבוססים על מאגר כתובות IP לטירגוט. במקום זאת, אפשר להשתמש ב-gcloud או ב-API בארכיטקטורת REST.
  • מאזני עומסים חיצוניים של רשתות להעברת סיגנל ללא שינוי שמבוססים על מאגר יעד לא תומכים ב-Cloud Logging.

המאמרים הבאים