במאמר הזה מוסבר על שני מצבי ההעברה של Dataplane V2 לאיזון עומסים, ואיך להפעיל אותם ב-Google Distributed Cloud. Dataplane V2 תומך בשני מצבי העברה לאיזון עומסים:
- תרגום כתובת רשת של המקור (SNAT)
- החזרה ישירה של השרת (DSR)
אפשר להגדיר את מצב ההעברה לאיזון עומסים רק כשיוצרים אשכול.
איזון עומסים של SNAT
תרגום כתובות רשת (SNAT) הוא מצב ההעברה שמוגדר כברירת מחדל לאיזון עומסים ב-Dataplane V2. עם זאת, במצב SNAT, כתובת ה-IP של הלקוח לא נשמרת עבור ה-Pods של ה-Backend. כשהחבילה מהלקוח מגיעה לצומת של מאזן העומסים, היא מתורגמת ומועברת לצומת העובד של היעד עם ה-Pod של ה-Backend. ה-Pod בקצה העורפי רואה שהבקשה מגיעה מצומת איזון העומסים, ולא ממיקום הלקוח. כתוצאה מכך, התשובה מוחזרת לצומת של מאזן העומסים, מתורגמת בחזרה ונשלחת בחזרה ללקוח.
זרימת מנות ל-SNAT
במצב העברה של SNAT לאיזון עומסים ב-Dataplane V2, זהו זרימת החבילות מלקוח חיצוני אל Pod של בק-אנד ובחזרה:
שירות מסוג LoadBalancer מוקצה לצומת של מאזן עומסים, וכתובת ה-IP שלו
172.16.20.16מפורסמת על ידי רכיב ה-speaker של MetalLB שפועל באותו צומת.Dataplane V2 מתרגם את כתובת ה-IP של המקור והיציאה באמצעות SNAT ל-
<LB_NODE_IP>:52000ומעביר את חבילת הנתונים לצומת העובד.התגובה נשלחת בחזרה לצומת של מאזן העומסים, וכתובת היעד מתורגמת הפוך.
התרשים הבא מציג את זרימת המנות במצב SNAT:
איזון עומסים מסוג DSR
החזרת שרת ישירה (DSR) פותרת בעיות שקשורות לאיזון עומסים של SNAT. במצב DSR, צומת מאזן העומסים משתמש באפשרויות IP כדי לשמור את כתובת המקור של הלקוח. צומת העובד יכול לשחזר את החבילה המקורית ולהעביר אותה אל ה-Pod של ה-Backend. ה-Pod בקצה העורפי יכול לראות שהחבילה מגיעה מכתובת ה-IP של הלקוח ולא מכתובת ה-IP של צומת מאזן העומסים. כתוצאה מכך, מנות החזרה מוחזרות ישירות לכתובת ה-IP של הלקוח, במקום לעבור חזרה לצומת של איזון העומסים.
השיטה הזו לא רק פותרת את הבעיה של חשיפת כתובת ה-IP של הלקוח, אלא גם חוסכת את רוחב הפס של צומת מאזן העומסים. התנועה החוזרת לא צריכה לעבור דרך צומת מאזן העומסים, וצומת מאזן העומסים לא צריך יותר לעקוב אחרי החיבור. הגישה הזו חוסכת זיכרון ומפנה את יציאת ההעברה. בעומסי עבודה אסימטריים, שבהם תעבורת ההורדות גבוהה בהרבה מתעבורת הבקשות, תהליך ה-DSR מצמצם משמעותית את רוחב הפס.
זרימת חבילות ל-DSR
במצב העברת בקשות DSR לאיזון עומסים ב-Dataplane V2, זהו זרימת החבילות מלקוח חיצוני אל Pod בקצה העורפי ובחזרה:
שירות מסוג LoadBalancer מוקצה לצומת מאזן העומסים, וכתובת ה-IP שלו
172.16.20.16מפורסמת על ידי רכיב ה-speaker של MetalLB שפועל בצומת הזה.Dataplane V2 מעביר את חבילת הנתונים לצומת העובד ומשתמש באפשרויות IP כדי לשמור את כתובת ה-IP והיציאה המקוריות של מקור הלקוח.
Dataplane V2 בצומת העובד מעביר את המנה ל-Pod של הבק-אנד.
ה-Pod של ה-Backend מאחזר את כתובת ה-IP והיציאה של המקור ומשיב ללקוח.
התרשים הבא מציג את זרימת המנות במצב DSR:
הפעלת מצב DSR
כדי להפעיל את מצב DSR, מוסיפים את השדה spec.clusterNetwork.forwardMode לקובץ התצורה של האשכול ומגדירים אותו לערך dsr. כפי שצוין קודם, מצב SNAT מופעל כברירת מחדל. אפשר לציין במפורש את מצב SNAT על ידי הגדרת forwardMode ל-snat. אפשר להגדיר את מצב ההעברה של איזון העומסים ב-Dataplane V2 רק בזמן יצירת האשכול.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: lb-mode
namespace: cluster-lb-mode
...
spec:
clusterNetwork:
forwardMode: dsr # valid options are dsr or snat
pods:
cidrBlocks:
- 192.168.0.0/16
services:
cidrBlocks:
- 10.96.0.0/20
...
אחרי שיוצרים את האשכול, אי אפשר לשנות את הערך forwardMode. לפני שיוצרים את האשכול, חשוב לוודא שהגדרתם את האפשרות הנכונה לצרכים שלכם.