סקירה כללית
nftlb מסמל איזון עומס, את הדור הבא של לינוקס חומת אש שיחליף iptables מותאמת להתנהג כמו איזון עומס מלא מפיץ התנועה.
nftlb הוא מנהל כללי nftables ליצירת שירותים וירטואליים לאיזון עומסים בשכבה 2, שכבה 3 ושכבה 4, תוך מזעור מספר הכללים ושימוש במבנים להתאמה יעילה לחבילות. הוא גם מספק שירות JSON API קל שיש לו את הגמישות ליצור אינטראקציה עם nftlb באופן תכנותי ולעמוד באוטומציה. אז אתה יכול להשתמש בבודק הבריאות המועדף עליך כדי להשתלב עם nftlb בקלות רבה.
הפילוסופיה של nftlb היא לשמור על נתיב הנתונים לתוך הקרנל, על מנת להשיג את הביצועים ביותר האפשרי, אבל את המטוס שליטה בדיקות הית לתוך שטח המשתמש יש את הגמישות לשנות את ההתנהגות בקלות, אלא גם כדי להיות תואם את שאר ערימת לינוקס .
ב- Zevenet אנו משתמשים ב- iptables ובתשתית ה- netfilter כבר שנים כדי ליצור איזון עומסים מלא, ולכן אנו מכירים היטב את המגבלות של גישה כזו שאנו חוסכים בה. nftlb.
למה צריך nftlb?
לינוקס הלינוקס כבר נחשב של איזון עומס פנימי שנקרא IPVS, או הידוע גם בשם LVS (לינוקס Virtual Server), שהוא חתיכת תוכנה מלאה ויציבה מאוד כי כבר בשימוש במשך שנים. אבל איזון עומס כזה יש כמה מגבלות: בצד הקרנל משמש למשימות כי צריך להתבצע על ידי שטח המשתמש, עבור יכולות מסוימות זה משכפל את התשתית הנוכחית netfilter מספקת, והיא מסתמכת על iptables ושאר חלקי תוכנה אם נדרש משהו מורכבת יותר (כמו פרוקסי שקוף, multportrot או multiprotocol). הוא מספק טופולוגיות SNAT ו- DSR, אך לא DNAT.
עם הגישה iptables המגבלות העיקריות הן מספר הכללים שיוצרו על ידי שירות וירטואלי ומספר backends (מינימום של ~ 2 כללים לכל backend עם מספר התאמות הכלולות בו) ואת המורכבות ליניארי הולך וגובר בהתאם למספר backends נוסף . עיבוד רציף של הכללים גם מאט את הביצועים אם הכללים יותר מדי כלולים, וזה אפילו יותר גרוע בגלל הבעיה iptables קלאסי נעילה. על מנת לספק איזון IPv6 לטעון יש את אי הנוחות של השימוש בפקודה אחרת, ip6tables. בנוסף, גישה זו היא מסוגלת לספק DNAT (יעד NAT עבור שקיפות) ו SNAT (מקור NAT) איזון עומסים, אבל לא מסוגל לעבוד טופולוגיות DSR (Direct Server Return).
עם nftlb מבוסס על nftables אנו שומרים את כל הבעיות הבאות:
זה יכול לבנות את כל אלה טופולוגיות ולשנות מאחד לשני בקלות רבה.
זה יכול להתמודד עם multportrot multiprotocol מקורי.
זה יכול לנהל IPv4 ו IPv6 התנועה בצורה חלקה.
הוא משמש ממשק אחד בלבד בכדי לספק את כל היכולות הנדרשות לאיזון עומסים.
nftables מספק שפה אקספרסיבית יותר כדי שנוכל להשתמש בכללי 2 כדי לבנות איזון עומסים מלא עם המורכבות המתמדת!
ההתאמות מתווספות לכל שירות וירטואלי, כך שאיננו צריכים לעבד את כולן ברצף.
הוא מסופק על ידי תת מערכת RCU כך שאין בעיה נעילה בעת עדכון הכללים.
נתיב הנתונים נשאר במרחב הקרנל, אך מספק את הגמישות במרחב המשתמש עבור מטוס הבקרה.
הוכח כי זה יכול לבצע 10x מהר יותר LVS.
תכונות nftlb
נכון לעכשיו, nftlb מספק את היכולות הבאות:
טופולוגיות נתמכות: יעד NAT, מקור NAT, שרת ישיר Return ו DNAT חסרי נתינות. זה מאפשר את השימוש של איזון עומסים בארכיטקטורות חד-חומתית אחת ושני חמושים.
תמיכה למשפחות IPv4 ו- IPv6.
Multilayayer איזון עומס: DSR בשכבה 2, IP מבוסס איזון עומס עם פרוטוקול agnostic בשכבה 3, ותמיכה של איזון עומסים של UDP, TCP ו- SCTP בשכבה 4.
תמיכה Multiport לטווחים ורשימות של יציאות.
שירותים וירטואליים מרובים (או חוות) תמיכה.
מתזמן זמין: משקל, רובין עגול, Hash להגדרה (לכל IP, יציאה, MAC או שילוב של אותם) חשיש סימטרי.
תמיכה של התמדה להגדרה או זיקה הלקוח backend עם פסק זמן (לכל IP, יציאה, MAC או שילוב של אותם).
תמיכה במדיניות אבטחה לכל שירות: לבן ושחור (מתוך חדירה), תורים למסנן שטח משתמש, סינון מסגרות TCP מזויפות, מספר מרבי של חיבורים מבוססים, הגבלת TCP RST לשנייה, הגבלת חיבורים חדשים לשנייה ועוד.
תמיכה בעדיפות לכל backend.
ניהול חי של שירותים וירטואליים ו backends תכנותית באמצעות API JSON.
אימות שירות אינטרנט עם מפתח אבטחה.
בדיקה אוטומטית כללה.
מאגר Git הרשמי: https://github.com/zevenet/nftlb
Changelog: https://www.zevenet.com/knowledge-base/nftlb/nftlb-changelog/