613
0

Load Balancer – למה צריך מאזני עומסים ואיך הם עובדים?

613
זמן קריאה: 4 דקות

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

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

תוכן עניינים

אז מה זה Load Balancer?

את המשמעות של המושג ניתן להבין כבר מהשם עצמו. Load Balancer הוא שירות שיושב בין האינטרנט לבין מערכות השרתים של החברה / האתר שלנו, ומאפשר תהליך איזון וחלוקה שווה של עומסי תעבורת קריאות השרת על פני מספר שרתים. זה עוזר גם להתמודד עם הבעיה הנפוצה של scaling (היכולת של מערכת להתמודד עם גידול בכמות העבודה) על ידי סיוע בפיזור הקריאות בצורה אחידה. Load Balancer יכול להיות בעצמו שרת פיזי או וירטואלי ובד"כ יהיה קיים בענן, בשרת הdata או בOn-Prem.

כדי להבין לעומק את הצורך בLoad Balancer צריך לדבר על Scaling (אגב בעברית זה תורגם ל”סילומיות” אך ברשותכם אמשיך להשתמש בגרסא הלועזית כי בואו…) 

ישנם 2 סוגי Scaling

  1. Scale אנכי – (scale up)
    בגישה הזו, אם המכונות שלנו מתחילות להיות עמוסות, נרחיב את משאבי המכונה בעוד זיכרון, אחסון וכוח עיבוד כדי שיוכלו לעמוד בעומסים שגדלו.
  2. Scale אופקי – (scale out)
    בגישה הזו אנו עובדים רוחבית: במקום להוסיף עוד ועוד משאבים למכונה הקיימת, הפתרון יהיה להוסיף או לשכפל עוד ועוד מכונות אוטונומיות קטנות שלכל אחת מהן המשאבים שלה. כשהן פועלות יחד נקבל את הכוח שאנו צריכים כדי שהאפליקציה תפעל ללא תקלות.

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

היכולות של Load Balancer

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

  • שמירת מידע על העומס של כל צומת –
    כדי למנוע עומס נוסף של צמתים שכבר נמצאים בשימוש כבד (עומס מעבד, שימוש בזיכרון RAM, מספר חיבורים פעילים, מספר חיבורים/שנייה לכל צומת).

  • ניתוב חכם לאותה הצומת בעת הצורך –
    (בהתבסס על כתובת IP+ יציאת מקור או קובץ cookie של HTTP) כדי לנתב את אותו לקוח תמיד לאותה הצומת (הכרחי אם הצמתים הנותרים אינם מודעים להפעלה). תארו לעצמכם שעברתם את מסך ההתחברות באתר שמייצר קובץ Cookie ואז הבקשה הבאה שלכם תופנה לצומת אחר (כי יש שם פחות עומס לצורך העניין) אך בצומת אליו תגיעו לא יהיה סימן שכבר עברתם תהליך אימות, כי אין לו את הקובץ cookie בזכרון. במקרה הזה תעברו שוב למסך ההתחברות, וכך שוב ושוב בתקווה שהלולאה הזו תסתיים מתישהו.

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

אלגוריתמים נפוצים

יש כמה אלגוריתמים נפוצים למימוש של Load Balancer, לסקרנים שבינכם אני ממליץ לצפות בסרטון המעולה של אמיר חדידי (לחצו כאן) שמסביר את הדברים בצורה טובה או לקרוא את המאמר (לחצו כאן)

מילות סיכום

בעולם של היום בו חוויית שירות מהירה ותקינה ללא הפרעות היא בגדר חובה ואנחנו מחליפים פלאפון אם לוקח לאפליקציות יותר מ5 שניות להטען, הצורך בLoad Balancer הוא קריטי. תהיו בטוחים שבין אם ידעתם על כך ובין אם לא, במקום העבודה שלכם יש שירות כזה, תשאלו את חטיבת הBackend.

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

אמיר שטיימן
WRITEN BY

אמיר שטיימן

Backend Engineer @Cynet
ביום יום מפתח Backend בסביבת SaaS, מיקרו סרביסים בשילוב של מערכות מבוזרות. בזמני הפנוי - לומד ומשתדרג בעולם התוכנה, אוהד מכבי חיפה, פלייסטיישן ובירה עם חברים :)
Linkedin | Twitter

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *