כאשר מדובר בהקמת מספר שרתי יישומים לשם גיבוי, איזון עומס הוא מנגנון שכיח להפצת בקשות שירות נכנסות או תעבורת רשת באופן יעיל בין קבוצת שרתי back-end.
לאיזון עומס יתרונות רבים כולל זמינות יישום מוגברת דרך גיבוי, עמידות וקנה מידה מוגברים (ניתן להוסיף עוד שרתים לתערובת כאשר התעבורה גדלה). זה גם מביא לשיפור ביצועי היישום ועוד יתרונות רבים.
קריאה מומלצת: המדריך המושלם לאבטחה, קשיחה ושיפור ביצועי שרת האינטרנט Nginx
Nginx ניתן להפעיל כמאזן עומס HTTP יעיל להפצת תעבורת רשת נכנסת ועומס עבודה בין קבוצת שרתי יישומים, בכל מקרה מחזירים את התגובה מהשרת הנבחר ללקוח המתאים.
שיטות איזון העומס ש-Nginx תומך בהן הן:
- round-robin – שמפזר בקשות לשרתי היישומים באופן סיבובי. זה משמש כברירת מחדל כאשר שיטה אינה מצוינת,
- least-connected – מקצה את הבקשה הבאה לשרת פחות עסוק (השרת עם מספר החיבורים הפעילים הכי נמוך),
- ip-hash – שיטה בה משתמשים בפונקציית גיבוב כדי לקבוע איזה שרת ישומש לבקשה הבאה בהתבסס על כתובת ה-IP של הלקוח. שיטה זו מאפשרת עמידת סשן (קשר חזק של לקוח לשרת אפליקציה מסוים).
בנוסף, ניתן להשתמש במשקלי שרת כדי להשפיע על אלגוריתמי האיזון של Nginx ברמה מתקדמת יותר. Nginx גם תומך בבדיקות בריאות כדי לסמן שרת ככשל (לזמן מוגדר, ברירת מחדל היא 10 שניות) אם תשובתו נכשלת עם שגיאה, ולכן מונע בחירתו עבור בקשות נכנסות לזמן מסוים.
מדריך פרקטי זה מציג איך להשתמש ב־Nginx כמאזן טעינה HTTP כדי לחלק בקשות לקוח נכנסות בין שני שרתים שכל אחד כולל אינסטנס של אותה אפליקציה.
למטרות בדיקה, כל אינסטנס אפליקציה מסומן (בממשק המשתמש) כדי לציין את השרת שבו הוא פועל.
הגדרת סביבת בדיקה
Load Balancer: 192.168.58.7 Application server 1: 192.168.58.5 Application server 2: 192.168.58.8
על כל שרת אפליקציה, כל אינסטנס אפליקציה מוגדר לגישה באמצעות התחום tecmintapp.lan
. בהנחה שזהו דומיין מורשה לגמרי, נוסיף את ההגדרות הבאות בהגדרות ה־DNS.
A Record @ 192.168.58.7
רשומה זו מסבירה לבקשות הלקוח איפה להפנות את הדומיין, במקרה זה, ל־מאזין טעינה (192.168.58.7). רשומות ה־A
ב־DNS מקבלות ערכי IPv4 בלבד. בנוסף, ניתן להשתמש בקובץ /etc/hosts במחשבי הלקוח לצורך בדיקה, עם הרשומה הבאה.
192.168.58.7 tecmintapp.lan
הגדרת איזון עומס ב־Nginx ב-Linux
לפני התקנת מאזן מעורבב של Nginx, עליך להתקין את Nginx על השרת שלך באמצעות מנהל החבילות המותקן כברירת מחדל בהפצה שלך, כפי שמוצג.
$ sudo apt install nginx [On Debian/Ubuntu] $ sudo yum install nginx [On CentOS/RHEL]
לאחר מכן, צור קובץ בלוק שרת בשם /etc/nginx/conf.d/loadbalancer.conf
(תן שם שבחירתך).
$ sudo vi /etc/nginx/conf.d/loadbalancer.conf
לאחר מכן, העתק והדבק את התצורה הבאה לתוכו. תצורה זו משתמשת בכבידה עגולה כברירת מחדל מאחר ושום שיטת מאזן מעורבב לא הוגדרה.
upstream backend { server 192.168.58.5; server 192.168.58.8; } server { listen 80 default_server; listen [::]:80 default_server; server_name tecmintapp.lan; location / { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://backend; } }
בתצורה מעל, ההוראה proxy_pass
(שצריך להיות מוגדרת בתוך מיקום, /
במקרה זה) משמשת להעברת בקשה לשרתי ה-HTTP שמחוברים באמצעות המילה backend, בהנחה שמשתמשים בהוראת upstream (שמשתמשת להגדרת קבוצת שרתים). כמו כן, הבקשות יופצו בין השרתים באמצעות מנגנון מאוזן עגול עם מערכת מאזן משוקלת.
כדי להשתמש במנגנון החיבור הממוצע, השתמש בתצורה הבאה
upstream backend { least_conn; server 192.168.58.5; server 192.168.58.8; }
וכדי לאפשר את מנגנון השמירה על חיבור ip_hash
, השתמש:
upstream backend { ip_hash; server 192.168.58.5; server 192.168.58.8; }
באפשרותך גם להשפיע על החלטת מאזן המעורבב באמצעות משקלים של שרתים. באמצעות התצורה הבאה, אם יש שש בקשות מלקוחות, שרת היישום 192.168.58.5 יקבל 4 בקשות ו-2 ילכו 192.168.58.8.
upstream backend { server 192.168.58.5 weight=4; server 192.168.58.8; }
שמור את הקובץ וצא ממנו. בדוק שהמבנה של תצורת Nginx נכון לאחר הוספת השינויים האחרונים, על ידי הרצת הפקודה הבאה.
$ sudo nginx -t
אם התצורה נכונה, אתחל והפעל את שירות ה-Nginx כדי להחיל את השינויים.
$ sudo systemctl restart nginx $ sudo systemctl enable nginx
בדיקת מאזן העומס של Nginx בלינוקס
כדי לבדוק את הטעינה המאוזנת של Nginx, פתח דפדפן אינטרנט והשתמש בכתובת הבאה לניווט.
http://tecmintapp.lan
לאחר שממשק האתר נטען, שים לב למופע היישום שנטען. לאחר מכן רענן את העמוד באופן רציף. בכל שלב, היישום צריך להיות מטען מהשרת השני שמציין טעינה מאוזנת.

למדת עתה כיצד להגדיר Nginx כמאזן טעינה של HTTP בלינוקס. נשמח לקבל את דעתך על מדריך זה, ובמיוחד על השימוש ב־Nginx כמאזן טעינה, דרך טופס המשוב למטה. למידע נוסף, ראה את תיעוד ה־Nginx על שימוש ב־Nginx כמאזן טעינה של HTTP.
Source:
https://www.tecmint.com/use-nginx-as-http-load-balancer-in-linux/