קטגוריה: Grid Computing

משרד מחשוב גריד באמצעות סביבות וירטואליות - חלק 4

על ידי , יום שישי 4 דצמבר 2009 11:59

הקדמה

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

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

הפעלת הקוד האחרונה

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

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

השיטה הראשונה יהיה פשוט להתחבר לשרת שלנו לשלוט עבודה (דרך סמבה, FTP, או דומה) ולמשוך למטה את הגירסה האחרונה של הקוד. לא מאוד יעיל, אבל זה יעשה את העבודה. מאפשר לשפר את זה קצת, מה דעתך על יצירת סקריפט rsync ושימוש בכל פעם במקום? לחילופין מה לשים סקריפט האחרונה שלנו עיבוד לתוך חתרנות לבדוק את הקוד בהתחלה ואז פשוט לעדכן את הקוד שלנו לרוץ כל ( svn עדכון )?

בסופו של דבר אנחנו יכולים בסופו של דבר עם תסריט bash (המכונה ע"י cron כל 10 דקות), שנראה פשוט כמו זה:

  #! / Bin / sh
 אם ps ax | grep-v grep | grep php > / dev / null
 אז
     הד "איוב כרגע עיבוד, יציאה"
 אחר
     הד "איוב אינו פועל, להתחיל עכשיו"
     cd / path / ל / עבודה / העתקה
     עדכון svn
     php yourJobProcessingScript.php
 fi 

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

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

באמצעות הנתונים העדכניים ביותר

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

החזק את הסוסים שם! מה אם מקורות הנתונים שלי הם ענקיים? ובכן זה באמת מקרה של כמה נתונים אנחנו מדברים? זה יכול להיות יותר העלות האפקטיבית להתקין כונן קשיח נוסף גדול לתוך כל מכונה מאשר לרכוש שרת עיבוד נוסף. זו שאלה של תקציב הוא עד העסק להחליט. זה אולי כי מקורות הנתונים הם גדולים כל כך שלו ישים רק כדי לשמור על כמות הנתונים מכונות העובד שלך. במקרה כזה מה היית עושה? אז נוכל להסתכל על קרא שרת הנתונים המקומיים, אבל זה עלול לגרום בעיות עם הרשת. במקרה זה מערכת רשת כגון זה עלול להיות מציאותי כוללים בסביבת המשרד שלך. יתכן גם כי אתה יכול להסתכל לתוך אסטרטגיות חלופיות ריצה, למשל רק קורא לעובדים שלך 20:00-06:00 כל לילה ו / או ויסות בקשות מקור נתונים.

על העברת נניח כמות הנתונים שלנו מקורות 100GB של נתונים. ובכן כן, זה לא מעט נתונים להסתובב ברשת על עדכון. כיצד היינו להבטיח שיהיה לנו את העותק האחרון של הנתונים במקרה זה? Rsync היא אפשרות, אבל באופן אישי אני חושב ידי הפעלת מקור הנתונים העדכניים ביותר על השרת עבודה עיבוד הגדרה זו בתור מאסטר בשכפול (יומן עם סל יפה ארוכה) עשוי להיות הדרך ללכת:

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

כך אני מגדיר את השרת שלי הפגנה. כדי להגדיר שכפול עקבתי אחר מדריך באתר MySQL ( הגדרת שכפול ) ותוך 20 דקות אני עובד inital שלי שכפול הבקרה עבודה במערך השרתים. עבור כל עובד נוסף את ההגדרות שכפול תהליך עבד בכל פעם כאשר VM הועתק.

תקציר

בחלק זה של המאמר יש לנו הסתכל כמה קל ונטול כאבים זה כדי לשמור על הקוד עיבוד שלך מעודכנים על ידי using rsync או subverion (SVN) לעשות את העבודה ולצמצם את תעבורת הרשת ב time. אותו דנו גם כמה כדי לשמור על הנתונים שלך מקור מידע עדכני, לאפשר לה לטפטף על כל העובדים שלך. כך אנו האזור להבטיח כי אנו לשמור על קשר עם לוגיקה עסקית ומידע במערכת שלנו במשרד הרשת. יהיו כמובן להיות אינספור חלופות לביצוע משימות אלה, אבל כאן היו שתי דוגמאות פשוטות כדי להראות עד כמה קל הפתרון הוא לבוא.

בפעם הבאה

בחלק האחרון של סדרה זו, aptly בשם חלק 5 , נדבר על זה פריסת המערכת. אני מוכן לסכם את מה שנלמד ומה שהצלחתי ליצור.

משרד מחשוב גריד באמצעות סביבות וירטואליות - חלק 1

על ידי , יום שישי 4 דצמבר 2009 11:23

הקדמה

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

בתור PHP מפתח אני הולך להשתמש בכלים כי אני משתמש בכל יום דהיינו, לינוקס, mySQL , PHP, VirtualBox ו - חתרנות (SVN). עם זאת אני מקווה מדריך זה יהיה להסתגל שפות וטכנולוגיות אחרות באותה מידה.

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

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

למה פרוס גריד המיחשוב Office?

ראשית ייתכן שאתה חושב, למה לא פשוט להשתמש במשאב מחשוב ענן כמו המצע של Amazon EC2 ? ובכן הסיבות יכול להיות מספר, למשל:

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

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

היתרונות של מיחשוב גריד משרד

ובכן, מאפשר לעשות קצת מתמטיקה (וגם בסגנון הפיזיקה נכון מאפשר לבצע כמה הנחות גורפות). תארו לכם עיבוד גדול שרת בשרני רץ 100 משרות ליום. במשרד שלך, יש לך 50 מכונות אשר פעיל 16 שעות ביממה, כל המכונות האלה הוא 10% חזק כמו לנתק עיבוד בשרני שלך. (כל התוצאות מעוגלות כאן לזלזל להגדיל את הביצועים).

אז, 1 כוח המכונה * 10% * 2 / 3 זמן = 0.067 כלומר 1 עיבוד שולחן בזמן המתנה יכול תהליך 6 משרות מלאות ביום.

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

אז במשרד להעמיד פנים שלנו 50 מכונות יכולנו להגדיל את כוח העיבוד שלנו משרת 1 עד 4 שרתי עיבוד מלא, או שאנחנו יכולים להיות עיבוד 400 מקומות עבודה ליום במקום 100.

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

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

טכנולוגיות

מה אתה צריך? (או יותר נכון מה שאני משתמש):

  • משרד מכונות המתנה (במקרה שלי מחשב נייד חילוף ישנים Windows XP)
  • VirtualBox (או תוכנת לקוח וירטואליזציה)
  • מכונה וירטואלית עם PHP, MySQL running מפעיל לקצץ OS, אני מתקשר שרתים אלה צולע שלי:)
  • משרות לרוץ
  • איוב שרת (יכול להיות עוד מכונה וירטואלית אי שם)

אופיינית משרות

סוגי עבודות מערכת זו נועדה להפעיל הוא כדלקמן:

  • המערכת מקבלת רשימה של נתונים שעליהם אנו צריכים להתאים ולחזור תוצאות
  • ההתאמה כוללת בדיקה / חיפוש מספר (סטטי למדי) מקורות נתונים
  • תוצאות ממקורות נתונים עשויה לדרוש אימות נוסף, מיזוג, בדיקה של מקורות נתונים נוספים בתגובה לתוצאות
  • הנתונים חזרו עם רשומות תואמות, תוקף מלא מעובד
  • כל רשומה בתוך עבודה עצמאית של שאר

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

פתרונות הרשת אינם רק יתרון עבור עיבוד עבודות מסוג זה. בעיקרון, כל תהליך אשר ניתן לפצל יחידות עצמאיות ניתן להפעיל במקביל. ראה ויקיפדיה זה לדוגמאות ומידע נוסף: מחשוב גריד , אבל כמה דוגמאות מפורסמות הם SETI @ home ו BIONC . ישנן מסגרות להפעלת רשתות מחשוב, ואלה בהחלט שווה להסתכל לתוך.

מה נשיג?

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

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

אני אהיה בבניין (בסדר בניתי, אז כתב זה) יישום למשל כדי לבדוק את המושגים על מחשב מקומי באמצעות Windows XP ו 'GridMachine שלי מכונה וירטואלית. השליטה התפקיד שלי יהיה שרת מכונת העיקרי שלי אשר פועל פדורה 11 .

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

בפעם הבאה

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

משרד מחשוב גריד באמצעות סביבות וירטואליות - חלק 2

על ידי , יום שישי 4 דצמבר 2009 11:23

הקדמה

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

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

איוב בקרה

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

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

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

איוב שרת

אנחנו צריכים לשלוט במקום עבודות שלנו, זה צריך להיות במערכת רק ברשת שלך, כי יש Resource Locator קבוע, להיות כתובת IP, שם המארח, כתובת האתר (באמצעות DNS פנימי), וכו 'זה בגלל העובדים צריכים לדעת איפה לחפש עבודה, עובדים צריכים למצוא את מערכת בקרת עבודה (לא מערכת בקרת עבודה למצוא את העובדים).

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

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

יסוד הגדרת

The basic setup for our job server will consist of what I'm calling one of my LiMP servers (that is Li nux, m ySql, P HP). The code running on the workers will actually work out what jobs it can run by interacting with with job control system databases. Later on we could create a web service and actually hand out jobs rather than having the workers do the hard work themselves, but for now we'll continue using the KISS principle (Keep it Simple, Stupid!).

So, lets create three mySQL tables to deal with jobs. These will be `jobs`, `jobRecords`, and `jobResults`.

jobs table Here I'm using SQL Buddy a great little alternative to phpMyAdmin just because its easier to install on centOS (for others see: 10 Great alternatives to phpMyAdmin )

This table consists of 5 simple fields,

  • id: Uniquely identify the job
  • name: Could be a client reference, or any number of other identifiers
  • Status: You need to know where the job is at, eg
    • 0: Not started
    • 1: Picked up
    • 2: Completed
  • started_by: Who's started doing the job? This isn't entirely required but is a nice to have. I'd suggest tracking workers by their IP address on your network
  • started_at: When did the worker start the job? By tracking jobs that have not completed within X amount of time we know we need to pick up the job once again and start processing by another worker. Workers could stop processing/go offline for any number of reasons, power failure, crash, network loss, etc.

It is easy how this table could be extended with a few additional fields to allow for statistics tracking, a finish time column to see how long the job took, a counter to see how many workers picked up the job (obviously this needs to tend to 1), job priority, the list can go on and on. In more complex job scenarios it would be possible to specify how much memory the worker would need access to (and therefore only use suitable workers), or even what type of worker would be required.

Lets add a few example jobs:

example jobs

The next table again is quite simple to understand, these are our job records. They are linked to the main jobs table by a column `jobs_id`. The make up of this table very much depends on the data that you need to supply to your workers, lets make a very simple example where we have four columns:

  • id: ID of the record
  • name: Person's name
  • address: Person's address
  • jobs_id: The job ID that this record is linked to

The third and final table consists of a results table, it has much the same make up as our records table, and with the addition of some columns could be part of the records table:

  • job_record_id: Link the result to the job table
  • result: The result data

…and that's all you need for job control! (albeit at a very basic level) In my case I'm pointed to another table where my data to process was located, but this could just as easily been a file, parameters to run simulation code, you name it.

Selecting a job

כאמור, העובדים יעשו וניהול העבודה שלנו אצלנו עכשיו, אז כל מה שאנחנו צריכים באמת לעשות הוא למצוא עבודה כי צריך עיבוד לקבל את המידע. איך נעשה את זה? ובכן לבחור בחירה תפקידנו קריטריונים לחפש עבודה, ב-SQL עשיתי את הפעולות הבאות:

  1. קח את כל המשרות שאינם מסומנים כמו להשלים אלא עובד שלנו לאפס אותם (תחליף __ME__ עם מזהה, הכי קל יהיה כתובת ה-IP):
      UPDATE `עבודות` SET `מעמד` = 0 WHERE `מצב` ו `= 1 started_by` = __ME__; 
  2. באמצעות בחירת התפקיד שלנו קריטריונים, בחר עבודה לספר את מערכת הבקרה כי עובד זה להתמודד עם זה:
      UPDATE `עבודות` SET `מעמד` = 1 `,` started_by = __ME__, `started_at` = NOW () WHERE `מעמד` = 0 או
     (`מצב` ו `= 1 started_at`> DATE_SUB (NOW (), שעה INTERVAL X)) ORDER BY `id` ASC; 

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

  3. הבא לתפוס את המשרות פרטים ואחריו את הרשומות עצמם:
      SELECT * FROM `עבודות` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

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

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

איוב תצורת

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

  1. משרות לקחת 1 כל יום לרוץ: משמעות הדבר היא כי העובדים שלך צריך 15 ימים כל תהליך העבודה (זוכרים 10% מכוח עבור 2/3rds הזמן). זה בבירור לא תצורה חכם, גודל התפקיד שלך הוא גדול מדי! זה היה לוקח לפחות כפול זמן למצוא עבודה מעובד לעובד הראשוני צריך ללכת נפקד (זמן לאסוף כי לא חזר התוצאה בתוספת הזמן reprocessing). בשנת אידיאל היית אחד לפחות משרה מלאה פינה בקלות על ידי תום תקופת המתנה ארוכה מדי, ככה אתה שומר את עבודות מתקתקת שוב על המקרה הגרוע ביותר בעבודה היה לוקח יומיים לתהליך הראשון צריך ללכת חסר.
  2. משרות לקחת 1 דקה לרוץ: משמעות הדבר היא כי העובדים שלך לקחת בערך 15 דקות לרוץ כל עבודה. בעוד זה עלול בתחילה נראה אידיאלי, אתה מקבל עיבוד עבודה נוספת בזמן ארוחת צהריים, הפסקות קפה, פגישות, וכו 'תרחיש זה מעמיד עומס על אזורים אחרים של המערכת ומציג בעיות משלה. לדוגמה, ראשית יחס ההתקנה / עיבוד שלך הזמן הוא הולך ישר, ולכן מאבדים יעילות המערכת. הרשת שלך תהיה כל הזמן הזרמת מידע עבודה לצוות עובדים שונים מתסכל אשר דונג יום שלהם לעבוד היום. אתה גם הולך לשים יותר מאמץ בשרת שלך עבודה עיבוד כמו זה צריך צלחת החוצה המון המון חתיכות קטנות של עבודה על בסיס קבוע. לבסוף, במצב זה אם שרת העבודה שלך יורד שאתה הולך ליצור יומן בחזרה עצום של עבודה שלא הושלמה ואילו עבודות יכול יותר של המשך עיבוד מאושרים ולא שיערו כי שרת העבודה היתה בקשיים.

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

  • משרות גודל כך כל עובד יכול לעבור לפחות 3-4 מקומות עבודה בתקופה של 15 שעות (זמן רב סביר תקופת המתנה)
  • לשחק עם גודל המשימה, כך זמן ההתקנה הופך זניח למדי בהשוואה לתקופה עיבוד (אם נזכור את נקודת לעיל).
  • אם עבודה לא להשלים בסכום כפול של זמן (אולי פחות) אתה מצפה להשלים אותה להניח כי נפקד נעלם שלה להתחיל לעבד אותו עם עובד אחר. זה אומר שאתה יכול לחכות עד אורך שלוש פעמים נורמלי של עבודה על זה כדי להשלים (אולי יותר אם העבודה שלאחר מכן נכשל). מומלץ להפחית את הזמן, אבל להיזהר שלא להפחית יותר מדי כמו שאתה יכול להתחיל לשכפל משימות עיבוד על בסיס קבוע.
  • משרות אמורה להיות בלתי תלויה בדרישות מחוץ ככל האפשר. שרת העבודה, למשל, צריך רק להיות קשר בתחילת ובסוף כל עבודה.
  • אל להרוות את הרשת שלך, זה יהיו שתי השפעות שליליות, צוות היום שלך ימצאו באמצעות הרשת מתסכל ובעיות עשוי להיות מנוסה עם קשרים העיתוי החוצה בעיה רק ​​יחמיר כפי שאתה בהיקף לרשת שלך.
  • ודא עבודות יכול לרוץ על העובדים שלך. אם עבודות להיות גם זיכרון עבודות שטח אינטנסיבית או דיסק אינטנסיבי יתחיל להפיל והדבר היחיד תבחין היא ירידה במספר המשרות מעובד עם בלי שום סיבה אמיתית מדוע.

תוצאות הגשת עבודה

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

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

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

תקציר

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

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

בפעם הבאה

ב חלק 3 ניצור מכונה וירטואלית עיבוד שלנו להגדיר מכונות החלונות שלנו להיות פעיל בזמן עובדים.

משרד מחשוב גריד באמצעות סביבות וירטואליות - חלק 5

על ידי , יום שישי 4 דצמבר 2009 11:03

הקדמה

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

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

טרום פריסה

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

  • איך אתה יכול רשומות רבות בתהליך כיום? ליום? לשעה?
  • כמה זמן זה לוקח בדרך כלל להסתובב עבודה?
  • כמה קיבולת יותר יש לך?

יש גם שאלות נוספות:

  • אם שרת העיבוד שלך (או אחד השרתים עיבוד שלך) יורדת איך זה ישפיע על היכולות שלך, אתה תהיה נכה?
  • יתרונות מה אתה מקווה / מצפה לקבל ממערכת רשת?
  • האם מכונות למשרד שלך מסוגל להריץ את העבודות?
  • האם (או עבודות ניתן להמיר) שלך לעבוד בסגנון הזה של ריצה?

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

פריסה

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

עצור!

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

הפגנה מערכת

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

מערכת הדגמה שלי היה צנוע מאוד. השתמשתי שולחן העבודה הרגיל שלי להגדיר כשרת עבודה מלאה. ביום הזה היה לי מותקן mySQL מותקן שרת להגדיר בתור מאסטר בשכפול, PHP , A ו-SVN המקושרים באמצעות Apache (גישה באמצעות עובד VM).

אז יצר מכונה עובד על CentOS VirtualBox על מחשב נייד בן 6 של Windows XP. אני הגדרת משימות מתוזמנות כמפורט לאחר העתקת VM על המכונה להרפות.

המכונה הווירטואלית הוקם עם PHP, חתרנות, ו-MySQL. בדקתי את ענף בשם 'עובד' מהעבודה שלי מאגר לשלוט שרתי ודאג זה יכול להיות מעודכן באמצעות "svn עדכון". הבא אני ההתקנה mySQL כעבד ובדק את הנתונים היה שכפול של MySQL על שרת הבקרה עבודה עד VM העובד. אחרי כל זה אני ההתקנה סקריפט bash לבין עבודה cron.

עיבוד התסריט שלי בעצם הלך בנוסח זה (דברים פשוטים מאוד):

  • קראו בשדה שם
  • מנה את מספר שמות דומים בטבלה ממקור הנתונים שנערך ב-VM
  • מנה את מספר שמות כמו שם לעיל אך פיצול ידי רווחים (כלומר שם פרטי, באמצע, שם משפחה)
  • חוזרים על תהליך זה 1000 פעמים

כל עבודה לקח בערך 20 דקות לרוץ. בשלב מסוים פתחתי כמה עותקים של ה-VM של העובד במחשב הנייד החלונות וצפו בעבודות להיבדק על ידי את כל כתובות ה-IP של העובד. בנקודה זו אני גם אישר כי שכפול מחדש באופן אוטומטי.

השארת המחשב הנייד להתבטל הביא עובד מתחיל תהליך עבודה מהשרת לשלוט עבודה. בעת חידוש השימוש הנייד היה עיכוב של כ - 30-60 שניות, זו כמות נכבדה של זמן והצוות היה צריך להיות מודע כי המכונה שלהם להשהות למשך זמן קצר עשויה לחזור כאשר המכונה. מכונות חדשות יותר לא יכול להיות הפסקה של כל כך הרבה זמן. היתרון של כמות העיבוד מבוצע על ידי מכונות אלה בתקופות סרק היו יותר עולים חברי הצוות צורך לחכות פרק זמן קצר (נניח 1 דקה) עם הגעתו של המכונות שלהם בבוקר (לעתים קרובות אני לחכות עוד כי זה של Windows Defender עדכון להתקיים) בתנאי שהם נעשו מודעים לכך (זמן שימושי לתפוס הקפה של הבוקר!).

בסך הכל אני מרגיש בטוח כי אני הדגימו את הטכנולוגיות שיכול לשמש כדי ליצור מערכת כזו. אני הראו כי מערכת כזו עובדת בקנה מידה (מאוד) קטן עם עוד כמה ניסויים יכול להיות scaled עד לנצל את המשאבים של מכונות של המשרד. אם אני לא להגיע לנקודה של לעשות את זה אני מעוניין מאוד לדעת / לראות מתי מישהו אחר עושה.

מסקנות / הערכה

הצעד הברור הבא יהיה בעצם לקבל דוגמה העולם האמיתי ולהתחיל לפרוס מערכת כגון זו בסביבת משרד ולראות מה קורה. מבוקש עסק להתחייב זה בלי חברת שובל בוער להוכיח את יעילות הטכנולוגיה עשוי להיות קצת קשה. גריד / מחשוב מבוזר מאוד פופולרי הוא כמה עיגולים יש כמה יישומים גדולים (BIONC, SETI @ Home, Folding @ Home, וכו '). לא עשיתי זאת, בקנה מידה קטן יותר למצוא מערכת פשוטה כמו זו בחיפושים שלי כי יכול להיות מגולגל בתוך סביבה משרדית.

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

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

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

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













פנורמה Theme על ידי Themocracy

7 מבקרים מקוון עכשיו
3 אורחים, 4 בוטים, 0 חברים
מקס מבקרים היום: 17 בשעה 06:54 UTC
החודש: 17 18-08-2011 בשעה 06:54 UTC
השנה: 130 28-03-2011 בשעה 22:40 UTC
כל הזמן: 130 28-03-2011 בשעה 10:40 UTC