מבוא ל Linux Clusters - חלק ראשון

כתריאל טראום

katriel@penguin.org.il

היסטוריית גירסאות
גירסה 1.0 04-04-2007 כתריאל טראום
גירסא ראשונה
גירסה 0.1 06-10-2006 כתריאל טראום
שלד

מבוא

בסדרת מדריכים זו אנסה להסביר על סוגי ה-Clusters הנפוצים כיום, על הארכיטקטורה ועולם המושגים של כל אחד מהסוגים.

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

זכויות יוצרים ורשיון

כל הזכויות שמורות © 2007, כתריאל טראום, “מבוא ל- Linux Clusters”, הרשות ניתנת להעתיק, לשנות ולהפיץ מדריך זה תחת התנאים של רשיון ה-GFDL Linux הוא סימן מסחרי רשום של Linus Torvalds.

הסרת אחריות

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

משוב

תגובות, תלונות, הערות והארות לכתובת: katriel@penguin.org.il

סוגי אשכולות

עולם ה- Clusters בלינוקס מלא בשמות שונים ומשונים: LVS, HA, HPC, Heartbeat, Mosix, OpenMOSIX, OSCAR, GRID ועוד ועוד.

  • Cluster - בעברית “צביר” או “אשכול”. קבוצה של מחשבים (בד”כ 2 או יותר) אשר מתפקדים יחד או לחוד במילוי משימה אשר דורשת זמינות גבוהה, חלוקת עומסים או כח מיחשוב מוגבר.

עולם ה-clusters מתחלק בצורה כללית ל- 3 סוגים:

  • High Availability
  • Load Balancing
  • High Performance Computing

בפרקים הבאים נרחיב על כל אחד מסוגי האשכולות ומושגי בסיס באותו הסוג.

High Availability

אשכול מסוג זמינות גבוהה נועד לשפר את זמינותו של שרות מסויים (שרת Web, Mail או כל שרות אחר). האשכול מורכב ע”י מספר מחשבים: אחד אשר מריץ את השרות או שרותים, ושרת אחד או יותר אשר עומדים ב-Standby ומקרה של נפילת השרת הפעיל. השרתים מדווחים כל הזמן אחד לשני כי הם פעילים ע”י שליחת Heartbeat, או “פעימת לב”. שליחת הפעימה יכולה להתבצע במספר אופנים: דרך הרשת, בעזרת כבל סריאלי מוצלב (במקרה ויש רק 2 שרתים באשכול) או דרך דיסק משותף שלכולם גישה אליו.

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

מושגים
  • Active/Passive - עבור כל מחשב באשכול יש מחשב חלופי אשר מוכן להיכנס לפעולהבמקומו. סידור זה דורש את הכמות הגדולה ביותר של שרתים. לדוגמא: אשכול אשר כולל שרת DB ושרת אפליקציה בזמינות גבוהה. עבור כל אחד מהשרתים יהיה אחד חלופי, כלומר 4 מחשבים.
  • Active/Active - עבור כל שרות (לא מחשב) באשכול יש מחשב אחר אשר יכול להריץ אותו. אם נחזור לדוגמא מהסעיף הקודם, יהיו 2 שרתים באשכול, אחד אשר מריץ את שרת ה-DB והשני את שרת האפליקציה, כאשר כל שרת משמש כגיבוי לשרות של השני, כלומר רק 2 שרתים.
  • Quorum - בתרגום ישיר, זהו “מניין חוקי”. בעולם האשכולות, זהו סך כל התנאים שצריכים להתקיים כדי שהאשכול יוכל לעבוד. למשל, אשכול אשר חברים בו 4 שרתים, לא יכול לעבוד במידה ו”חיי” בו כרגע רק מחשב אחד. אנו נוהגים לומר שאשכול הוא “Quorate”, כלומר כל התנאים לקיומו קיימים, והוא עובד. קביעת ה-Quorum נעשית לפי פרמטרים שנקבעו בקונפיגורציית האשכול, למשל: מספר המחשבים הפעילים, מספר השרותים הפעילים, גישה של כל המחשבים באשכול לרשת ועוד.
  • Heartbeat - מנגנון אשר נועד לוודא כי כל השרתים החברים באשכול עובדים ומגיבים. “פעימה” תישלח בכל זמן קצוב ע”י על השרתים באשכול, ובד”כ יהיה חבר אחד אשר יהיה אחראי לנהל את רשימת החברים הפעילים. במידה ואחד מהמחשבים לא עונה בפרק זמן קצוב (לפעמים זה אף עשוי לקרות בגלל עומס) הוא יוצא מרשימת החברים באשכול והשרותים שלו ינויידו למחשב אחר.
  • Fencing - במצב שבוא מחשב מוכרז כ”מת” באשכול, לפעמים בגלל נפילה שלו ולפעמים בגלל עומס, יש צורך לדאוג שלא יעלה חזרה וישר יצטרף לאשכול. מצב כזה, של מחשב שנפל שמצטרף חזרה ללא בקשה עשוי להוביל להשחתת נתונים או ניוד של שרותים חזרה למחשב שאינו כשיר לכך בגלל בעיות חומרה כאלו או אחרות. לצורך כך ישנה תת-מערכת אשר נקראת Fencing, אשר דואגת להקים “גדר” מסביב למחשב אשר נפל. ישנם מספר שיטות לבצע את ה”גידור” הזה: כיבויו ע”י מחשב אחר דרך Network Power Switch או ממשק ניהולי אחר של המחשב (iLo, RSA או אחר), כיבוי הפורט שלו ב-Fiber switch כדי למנוע ממנו גישה להתקן האחסון ועוד. שיטות ה-Fencing הן שונות ומשתנות בהתאם לאפליקציית האשול שנשתמש בה.
  • Resource - זהו משאב שאותו מנהל האשכול. משאב זה יכול להיות כמה דברים: כתובת IP אשר משוייכת לשרות כל שהוא, mount point, סקריפט אשר מנהל שרות כל שהוא או כל דבר אחר שנגדיר. עבור משאב צריכה להיות דרך לוודא שהוא עובד ע”י פקודת status.
יישומים בלינוקס
סכימה כללית

Load Balancing

אשכול מסוג חלוקת עומסים נועד לשפר את זמן תגובתו של שרות ע”י חלוקת העומס בין כמה שרתים ע”י שרת מתווך אשר מפנה בקשות לפי אלגוריתם מסויים (Round Robin, Least Loaded).
תוצר לוואי של אשכול חלוקת עומסים הוא בדרך כלל גם העלאת זמינות המערכת. השרת המתווך מנטר את מצב השרתים שאליו הוא מפנה את הקריאות, ובמידה ושרת אחד מפסיק לעבוד הוא יעביר את הבקשות שלו לשרתים אחרים. כל עוד יש שרת אחד עובד, השרות יהיה זמין. השרת המתווך נקרא Load Balancer או VIP ואילו השרתים אשר מטפלים בקריאות נקראים Real Servers.

מושגים
  • Balancer/VIP - השרת המתווך יכול להיות מחשב או Appliance אשר מקונפגים להאזין על VIP שהוא שילוב של כתובת IP ומספר Port. השרת המתווך מסוגל להאזין על כמה כתובות ו-Ports, ולחלקם לשרתים האמיתיים.
  • Real Server - השרתים אשר אליהם מועברים הבקות ע”י השרת המתווך. שרתים אלו הם שעושים את העבודה של עיבוד הבקשה (קליטת הודעת דואר, בקשת Web או-FTP ועוד) ומענה ללקוח הקצה במידה ויש צורך. שרתים אלו בד”כ מנוטרים ע”י השרת המתווך לוודא כי הם מגיבים, במידה והם לא, הם יוצאו בד”כ בצורה דינאמית מרשימת השרתים ולא יקבלו בקשות עד אשר יהיו זמינים שוב.
  • Balancing Algorithm - ישנם כמה אלגוריתמים, השכיחים ביותר הם:
    • Round Robin - הבקשות מפוזרות לשרתים בצורה מעגלית ושווה לכל השרתים האמיתיים.
    • Least Busy - הבקשות מופנות לשרת העמוס פחות. המעקב נעשה ע”י השרת המתווך.
    • Weighed - משקל ניתן לכל שרת פיזי, כך ששרתים חזקים יותר בעלי ניקוד גבוהה יותר יקבלו בקשות רבות יותר.
ישומים בלינוקס
סכימה כללית

HPC

ראשי תיבות של High Performance Computing. אשכול חישובי הוא אשכול אשר מצרף כמה מחשבים, תוך כדי חלוקת עומס ה”חישוב” ביניהם, כדי לספק תשובה בצורה מהירה יותר. באשכול חישובי משתמשים לרוב גופי מחקר שונים אשר צריכים לנתח הרבה מידע, בזמן קצר (למשל חיזוי מזג אויר). אל אשכול חישובי מתייחסים בד”כ כיחידת מחשוב אחת, אך את התוכנית שרצה במקביל על כמה מחשבים יש לכתוב בצורה “מקבילית” כדי שתדע לנצל את כל המחשבים באשכול.

מושגים
  • Master Node - זהו מחשב, בד”כ חזק יותר משרתי החישוב (Compute Nodes) אשר משמש לשליחת עבודות לאשכול. משתמש מתחבר ל-Master Node, ומתזמן עבודות (Scheduler) אחראי על תזמון העבודה ושליחתה ל-Compute Notes.
  • Compute Node - אלו המחשבים שעושים את העבודה שחורה. כל Compute Node מקבל חלק מסויים מתוך סך הנתונים ומעבד אותם. בסיום העבודה, מחזיר ל-Master Node אשר מרכיב את התוצאות מכל ה-Compute Nodes לכדי תשובה שלמה.
  • Parallel Compting - זוהי פעולת החישוב המקבילי: חלוקת ביצוע משימה לחלקים קטנים והרצתם על מחשבים נפרדים עם כמות מסויימת של תיאום בינהם.
  • Batching/Queueing - אשכולות חישוביים, שהם בד”כ יקרים להקמה ותחזוק, משותפים לכמה משתמשים או מחלקות. מערכת התזמון עוזרת להריץ את העבודות “ללא מגע אדם”, תוך תזמון המשאבים לפני עדיפויות קבועות מראש (למחלקה א' מגיע יותר זמן מחשוב ממחלקה ב' וכדומה)
ישומים בלינוקס
  • Beowolf
  • MOSIX/OpenMOSIX
  • PVM/LAM
סכימה כללית

סיכום

עד לכאן המבוא על עולם האשכולות והמושגים השולטים בתחום. המדריך הבא בסידרה אתמקד בהקמת אשכול חלוקת עומסים ע”י שימוש ב-LVS.

מדריכים/מבוא_ל_linux_clusters_-_חלק_ראשון.txt · שונה לאחרונה ב: 2008/06/19 18:34 (עריכה חיצונית)
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0