Network Load Balancing | NLB
NLB הוא למעשה Cluster הגורם ליתירות ולשרידות אתר אינטרנט, Termminal ועוד (לרוב לשירותי IIS) הוא מבצע חילוק של העומסים בין השרתים ומפנה משתמשים לשרת 1 ואז לשרת 2 וכן הלאה.
Node = שרת הנמצא כחלק מהCluster
על ידי Heartbeat הקיים ב Cluster (שולח Packets על מנת לבדוק אם השרת עדיין פעיל) כל הזמן וב Intreval קבוע בזמן, קובעים שאר ה Nodes בCluster אם אחד מהם קרס ובכך אם אחד מהם קרס יפנה הCluster את המשתמשים אל שאר הNode אחר שהוא חלק מה- Cluster.
החסרון הגדול של NLB שאינו בודק את ה Service או Program בNode ובכך אם שירות ה IIS יפול, אבל הDC עדיין מחובר לאינטרנט עדיין ישלח ה NLB משתמשים אל שרת זה! קיימים הרבה חברות LB בשוק שלא אציין כאן שנותנות מענה ברמת התוכנה.
במאמר זה אציג שרת IIS עם Replication (אפילו אתר סטטי ניתן לביצוע) כיצד מגדירים את ה NLB Cluster מה קורה כאשר אחד השרתים נופל ואילו הגדרות קיימות ב NLB
דרישות:
* 2 שרתי DC2 ו DC2
* IIS מותקן על 2 הDC's
נתחיל…
נפתח את ה Server Manager -> Tools -> Add Roles
נגיע ל Features ונוסיף את Network Load Balancing
נבצע את אותה התקנה גם בDC3 אשר ישמש חבר ב Cluster
נפתח את Tools ונלחץ על Network Load Balancing Manager
נלחץ קליק ימני על Network Load Balancing ואז New Cluster
נבחר את הNode הראשון שהוא DC1 ונלחץ Connect ו Next
לחצו שוב Next
כעת ניתן כתובת לCluster עצמו (כאשר מבצעים זאת בסביבת Production הגדירו בין השרתים אייפי פנימי ואת החיצוני לCluster בלבד)
לחצו על ADD
אני נותן ל לCluster את הכתובת 110.
לחצו OK ואז Next
נרשום את כתובת האתר שלנו, שהוא website.bensho.com
עכשיו! קיימים 3 אפשרויות Unicast , Multicast, IGMP multicast בחרו ב Multicast
הסבר קצר,
Unicast- מגדיר לכל כרטיסי הרשת אותו Mac Address, על מנת שהסוויצ' או הראוטר לא ידעו שלכולם יש אותו MAC ADDR הוא ישנה את ה Packtes בחילת השליחה עם כתובת אחרת. – בעיות נפוצות – יצירת מצב של "הצפה של הסוויצ'" וקיים צורך בסוויצ' נוסף שיחבר בין 2 הDC'S
Multicast – שלא כמו uni משתמש בMac Address המקורי של כל כרטיס רשת, הפקטים נשלחים דרך כתובת הIP באופן רגיל
IGMP Multicast – חשוב מאוד אפשרות זו דומה ל Multicast שהסברתי למעלה אבל! אם אינכם מגדירים IGMP יכול לקרות מצב שתאלצו לבצע קינפוג לסוויצ' על מנת שהכל יעבוד כשורה (נקרא גם MLD בIPV6) והוא בעצם מגלה פורטים .
שוב, בחרו ב Multicast
לחצו Next
במסך זה תוכלו לראות שהcluster מקבל על IP עם פורט מ0 עד 65535 וניתן להגדיר פורט מסוים לאיזה Cluster
לחצו על Edit ונסביר מושג חשוב
Affinity
אומר שברגע שמחשב מסוים התחבר לNode (נאמר DC1) והכל תקין, הוא ישאר בDC1 זאת אומרת שהוא לא יבצע פעם שרת X פעם שרת Y הוא ימשיך להיות מחובר לאותו הDC ובכן ניתן להגדיר כיצד הוא יבצע זאת על ידי שינוי סוג ה-affinity
Single affinity הוא מצב של משתמש המתחבר לNode מסוים ונשאר בו ככל הניתן אבל יוצא מצב שהחלוקה בין השרתים וחלוקת העומסים קטנה
Network affinity – על פי IP ברמה C דומה ל Single affinity ולרוב ישתמשו בו כאשר המשתמשים עוברים ב דרך Proxy או בשפת המחשוב Megaproxy (שרת פרוקסי שמנתב את המשתמש מעשרות או יותר של IP) אז מה הקשר בין הדברים? בגלל שהמתשמש מגיע לcluster דרך IP אחר בכל פעם בגלל הפרוקסי נוצר מצב שהוא כל "רענון" מגיע ל Node אחר ולכן אם הIP ברמה C והגדרתם Network affinity הוא ישאר באותו הNODE!! וזה פיתרון מעולה
no affinity – מצב בו קיימת חלוקת עומסים מעולה אבל affinity גרוע ביותר שכן המשתמש מועבר מDC לDC
קיימים רמות Source IP, Destination IP, Destination Port שבהם ישתמש הCluster בno affinity
למען התרגיל בחרו ב Single affinity
לחצו Next וסיימו את האשף, בסיום ניתן לראות שעון חול
לחצו קליק ימני על ה Cluster שעכשיו יצרנו (ניתן לראות גם את Node DC1 בצבע ירוק)
לחצו על Add Host To Cluster
נוסיף את DC3
כעת נכניס את הרשומה של ה Cluster ל DNS אז נכנס לDNS
נלחץ קליק ימני ואז New Host
נרשום Website ואת הכתובת של ה Cluster שהיא 110 (ברגע שהמשתמשים יגיעו לכתובת האתר שלנו הם יגיעו לCluster)
נבצע Reload ל Zone
Yes
ניתן לראות שה Cluster ירוק וקיים Converged
וכאשר אני מתחבר לאתר אני מגיע לDC3
אבל מה יקרה אם אני יפיל את DC3?
ברגע שאני יעשה רענן, אני יגיע לDC1 והכל בזכות ה Cluster !
ניתן לראות ב NLB את נפילתו של DC3