Table of Contents
מנגנונים כושלים הם אבן הפינה של הנדסת אמינות במערכות הפעלה התומכים תשתיות קריטיות.אם ניהול אשכול מיקרו-שירותי ענן, בקר תעשייתי בזמן אמת, או מסד נתונים חוזר לפלטפורמת מסחר אלקטרוני, היכולת להעביר באופן חלקה פעולות מרכיב שלא הצליח לעמוד בריא הוא חיוני לשמירה על המשכיות השירות.
מושגי הליבה: מה בעצם נכשל מכניזם
בפשוטו ביותר, מנגנון כושל הוא תהליך אוטומטי המזהה כישלון במרכיב פעיל (Hardware, תוכנה או רשת) ומעבד מחדש את הפעולות למקבילה מאומן, מראש-ההגדרה.המטרה היא להסתיר את הכישלון של משתמשי הקצה או מערכות downstream, שמירה על המערכת המבצעית הכוללת עם הפרעה מינימלית.
כשל יכול להתרחש במספר שכבות בתוך סביבת מערכת הפעלה:
- (FLT:0) רמת המוזה: FLT:1 , RAID בקרים, אספקת חשמל מרוקנת, NIC Teaming, ו- הדיסק רב-אופטיקה כל יישום של אי-יתר ברמת חומרה שקוף ל- OS.
- (FLT:0)OS רמה: ההרחבה של מערכת ההפעלה של שירותי איסוף (למשל, Windows Server Failover Cluster, Linux Pacemaker) מנהלת כשלים מכל ה-IPים, שירותים או מקרים וירטואליים.
- (FLT:0) כפל רמה: 1FLT 1 מידידיות ומאגרי מידע (PostgreSQL with Patroni, MySQL InnoDB Cluster) מטפל בכשלונו של פרימיונים של מסד נתונים.
- (FLT:0Network Level:BuildFLT:1) מטענים (HAProxy, NGINX Plus) ופרוטוקולים מתפתלים (VRRP, CARP) מספקים כשלילת רשת.
Active-Passive vs. Active-Active Failover
הבנת שני המודלים העיקריים של הפריסה היא קריטית לפני ביצוע.
(FLT:0)Active-Passive (Standby): אנדרטל 1 (או רכיב) מטפל בכל התנועה חיה בעוד שצומת שני נשאר idle, מסונכרן עם מדינת הצומת הפעילה.על כשלון, הצומת הפסיבי הופך פעיל ולוקח על עצמו.מודל זה פשוט יותר ליישום, אין סיכון לינוקס-מוח, אבל בתוך משאבים מפסולת רגילה (Dactle-D.
(FLT:0)Active-Active:FLT:1 Both (או כולם) נוודים להתמודד עם התנועה בו זמנית, שיתוף העומס.אם אחד נכשל, הצומת הנותרים סופגים את חלקו.מודל זה ממקסם ניצול משאבים ומספקים כשל מהיר יותר (כיוון שצומתים כבר חם), אך דורש תכנון זהיר סביב עקביות נתונים, עיבוי, ועומסים מודרניים רבים (למשל, קסנדרה פעיל) לשימוש פעיל בקומפונקציות.
Heartbeat and Split-Brain Prevention
כל מערכות הכשלונות מסתמכות על קישור רשת ייעודי:0 פעימות הלב של אנדרט 1 (הבדיקה של בריאות תקופתית החלימה בין צומת פעיל ועמודי על קישור רשת ייעודי או על רשת השירות, אם פעימות הלב אבדה עבור מספר מוגדר של מרווחים, את ההדקים של עמידה, מצב קריטי הוא FLT:2split-inFLT3, שבו שניהם אינם מאמינים לסכסוכים הפעילים, או למנוע משאבים, או להפעיל אסטרטגיות הפעלה, או להפעיל את הכשלים, הן למניעה, הן למניעה, הן למניעה, הן למניעה של שימוש בשחיתות, הן למניעה של שיטות פעולה אקטיבית, הן למניעה, הן למניעה, הן למניעה, הן למניעה, הן למניעה פעילה והן למניעה, הן למניעה של חוסר משאבים, הן למניעה של שיטות פעולה, והן למניעה פעילה.
- (ב) ,0) מכשירים: FLT:1 A Third node או דיסק משותף (הזמנה של SCSI) שפועל כ-Breaker.
- (הופנה מהדף "StonITH"): "Shoot the Other Node in the Head" – הבטחת הצומת הכושל מבודד פיזית או הגיונית (כוח ממחסום הדיסק) לפני שהעמוד משתלט.
- (ב) ,0) נתיבי פעימות לב רב-לב: FIRLT:1 , Redundant Network קישורים כדי למנוע זיהוי כוזב עקב הפסקת כבל אחת.
תכנון כשלים במערכות הפעלה הנדסיות
מערכות הפעלה הנדסיות – כגון מערכות הפעלה בזמן אמת (RTOS), לינוקס מוטבעת או קשיחות של Windows IoT – כופות מגבלות ייחודיות: תזמון רציונאלי, משאבים מוגבלים, ולעתים אף מפעיל אנושי במהלך כישלון.
תבניות חוצות ל- RTOS ו- Embedded Systems
במערכות קריטיות בטיחות (avionics, Auto, מכשירים רפואיים), ה-Intover הוא לעתים קרובות מחייב בסטנדרטים כמו DO-178C או ISO 26262.
- (ב) ,0) מעבדי "Lockt: 1 2 מעבדים זהים מבצעים את אותה ההוראות בו זמנית; קופרטור מזהה הבדלים ומסמן את האשמה.
- (FLT:0)Triple Modular Redundancy (TMRIR): FLT (בשיתוף פעולה: 1) שלוש מערכות מבצעות במקביל; מצביע הרוב קובע את התפוקה.
- (FLT:0) Warm Standby with State synchronization: RevelationFLT 1 A משני RTOS מקבל מחסומים תקופתיים של המדינה (למשל, מגרעין הפרדה MILS) ויכול לחזור להוצאה להורג עם שקיפות מינימלית.
על מערכות לינוקס משובצות (למשל, פרויקט Yocto, Buildroot), ניתן ליישם את ה-Accover באמצעות שילוב של:
- (ב) [הופנה מהדף]0 [הזמן של כלב] , 1 [החומרה או תוכנה] אשר מאמתים את הלוח אם היישום העיקרי קופא.
- (FLT:0)Dual-bank FlashFLT:1 עם מרווחי עדכון A/B - אם ה-חול אינו מצליח לאמת את התמונה העיקרית, הוא מגיח מהגיבוי.
- (FLT:0Network-level FailivoverFLT:1) באמצעות פרוטוקולים תעשייתיים (Ethernet/IP, PROFINET MRP) שיכולים לשנות את הטבעת להתנצלות במילימטרים.
נכשל במערכות בקרה בזמן אמת
מערכות בקרה (PLCs, DCS, SCADA) דורשות זמני כשלים רדיאליים - לעתים קרובות מתחת ל -100 ms.Achieving דרישות אלה:
- (ב) ,0) ,Hirware RedundancyFLT:1hil עם בקרים מאוישים ייעודיים (למשל, סימנס S7-1500 Redundancy, Rockwell Controlix Redundancy).
- (ב) [15] זיכרון זיכרון נדרונכרן 1 בין בקרים באמצעות סיבים אופטיים או מלוחים ייעודיים.
- (FLT:0) פרוטוקולים של ריצוף אדום (Parallel Redundancy Protocol) או HSR (High-availability Seamless Redundancy Protocol) ב-2 כדי לחסל את עיכוב המעבר.
עבור בקרים מבוססי תוכנה הפועלים על מערכות הפעלה בעלות מטרות כלליות עם הרחבות בזמן אמת (למשל, PREPT RT Linux), מהנדסים משתמשים לעתים קרובות במבנה פעיל דו-פעמי עם שכפול המדינה המשותף וקישור Ethernet אדום המספק הודעות פעימות לב באמצעות רצף:0 HeartbeatFalr 1LT.
מדריך שלב-בי-Steptlementation Guide
יישום כשל במערכת הפעלה הנדסית אינו תהליך בגודל אחד מתאים לכל. להלן מתודולוגיה מובנית המותאמים לשיטות הטובות ביותר בתעשייה ולחוויית פריסה בעולם האמיתי.
1.הערכת המערכת ודרישות Gathering
לפני כתיבת קו תצורה יחיד, מסמך:
- [01:0] ,Recovery Time Objective (RTO): ⁇ 1: כמה זמן אתה יכול להרשות לעצמך להיות למטה?
- (FLT:0)Recovery Point Objective (RPO): ההרחבה מספר 1 של אובדן נתונים מקובל? אם אפס, אתה צריך שכפול סינכרוני.
- (FLT:0) מצבי Failure:FLT:1) קטגוריזנות המצופה - התרסקות תוכנה, אובדן חשמל, חלוקת רשת, כשלי דיסק, טעות מפעיל.
- (ב) ⁇ :0) ⁇ : אילו שירותים חייבים לשרוד את הכשל?
עבור מערכת הנדסה, לשקול גם את התנהגות FLT:0 (תיקון:0) התנהגות בלתי מוגדרת של לינוקס 1 במהלך כשלון - האם מערכת ההפעלה עצמה מבטיחה להפריע לקווי שקיפות? כלים כמו FLT:0 על PreEMPT RT לינוקס יכול למדוד את הכדאיות הגרועה ביותר לראות אם פעולות לא מושרה (למשל, נטילת מעל דיסק משותף) שלך מועד.
עיצוב אדריכלות Redundancy Architecture
עיצוב שכבת הריצוף המבוססת על המודל הנבחר (אקטיבי-passive או פעיל פעיל) עבור אשכול טיפוסי של לינוקס HA באמצעות פייסצב, אדריכלות כוללת:
- (FLT:0) סוכני המקור: איור 1 (FLT:1 Scripts that Start/stop/check services (למשל, Apache, PostgreSQL, Applications).
- (ב) [15] ,0 ,FLT:1 בדרך כלל IPMI או IBM BladeCenter Chaassis ניהול כוח-מחזור לא היה צומת.
- (ב) ויקרא י"א: "ה' (ב)"א, כ"כ, כ"כ, כ"ד)" (במדבר כ"ד, כ"ב).
- (ב) אחסון של ההרחבה (FLT:0) או אחסון משוכפל: FIRLT:1 (שימוש ב-DRBD) עבור שכפול ברמת בלוק או בסן עם נתיב פעיל.
בעיצוב פעיל-אקטיבי (למשל, שני צמתים משרתים מסד נתונים לקריאהי נתונים), המורכבות משתנה לטיפול בכתיבה במקביל. השתמש בפרוטוקול קונצנזוס מבוזר כמו FLT:0RaftcioFLT:1 (התפקד ב- וכו', קונסול או פתוח ספריות קוד פתוח) כדי לתאם בחירות ושכפול המדינה.
מעקב וכישלון
ניטור עומק שיכול לזהות כישלונות בכל שכבה רלוונטית.עבור RTOS עם משאבים מוגבלים, שעון כלבים פשוט עם מועד אחרון יכול להיות מספיק.
- (ב) עיין בריאותי ברמה גבוהה:0 (ב) ,5 ; 1 ).
- (FLT:0Network-level Checks: 1FLT) השתמש ב-ARP, ICMP מחלחל לנתיבים של הזרם, או בדיקות חיבור TCP לעמיתים קריטיים.
- (ב) [ה]ההתאמת: [ה], [ה], [ה], [ה], [ה],] [ה], [ה],]] [ה],]]], [ה], [ה], [ה], [ה], [ה], [ה],], [ה],], [ה],], [התקבלת],],], [ה],],], [ה], [ה], [ה],],], [ה], [ה], [ה],], [ה], [ה], [ה],],], [ה],],],],], [ה], [ה], [ה], [ה], [ה], [ה], [ה],], [ה], [ה], [ה],],], [ה],],],],], [ה], [ה] [ה]]]]]]]]] [ה]]]]]]]] [ה] [ה
הגדר (FLT:0) סף חסימה 1 (FLT:103) בזהירות רבה מדי אגרסיבי (2 פעימות לב פספס) מובילה לכשלים כוזבים; lenient (10 פעימות לב פספס) מרחיבה את RTO ללא צורך. במערכות ⁇ סטיות, לחשב על בסיס פענוח לב הגרוע ביותר כולל הפרעה.
4. Redundancy Configuration and Synchronization
הגדר את רכיבי הגיבוי להיות מסונכרנים באופן רציף עם הפעילים.עבור שירותים ממלכתיים:
- (ב) [15] , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0)File Level:FLT:1 השתמש ב-DRBD במצב ראשוני / השניות.לוודא פיזור דיסק (SAP) מונע משני צמתים מכתיבה למכשיר הבלוק האחורי בו זמנית.
- (FLT:0) רמת זיכרון:0; איור 1:1 עבור שליטה בזמן אמת, השתמש באזור זיכרון משותף (למשל, זיכרון משותף POSIX או אזור ייעודי של זיכרון חומרה) עם תהליך "עמודי חם" המכיל עותק של המדינה.
רשת Redundancy עבור ממשקי הגיבוי פעיל צריך להשתמש אג"ח (Mode 1 עבור פעיל גיבוי) או צוות (למשל, libteam) עם כתובת MAC אחת שהוקצה לאיגרות החוב. for IP Failover, להקצות IP וירטואלית (VIP) שנע בין nodes. פייסmaker'sFLT:5 מעבדי משאבים מטפלות זו באופן מקורי.
5.בדיקה ואימות
בדיקת הכשל אינה אופציונלית. צור תוכנית מבחן הכוללת:
- (ב) ,0) ,(התחילה:0) ,(ה) ,(ה) ,(ה) ,(ה) ,הפסק באופן ידני את השירות הפעיל; לאמת סטנדבי משתלט על RTO.
- (ב) ,0) , כשלון בלתי-מחדש: משוך את כבל החשמל, להרוג את רשת פעימות הלב, או לרסק את הקרנל של מערכת ההפעלה (שימוש ב-FLT:6).
- (FLT:0) מבחן רולבק: 1 אחרי שנכשל, כאשר הצומת המקורי חוזר, האם המערכת נכשלת באופן אוטומטי (אם נקבע) או נשארת על הצומת הפעיל החדש? עיצובים רבים מעדיפים "כישלון" אך לא להיכשל" כדי להימנע מנפיחות.
- (FLT:0)Load במהלך הכשל:FLT:1 להפעיל עומס סינתטי (למשל, נתונים רצופים כותב למסד נתונים) תוך גרימת אחוזי הצלחה ועלייה ברווחה.
- (FLT:0) תרחיש ספיריט-מוחין: FLT:1 דיס מחבר את הרשת פעימות הלב תוך שמירה על קישוריות רשת בין צמתים (אם בנפרד) לבדוק את הסטטוס קוום ו-Fencing למנוע פעילות כפולה.
עבור סביבות RTOS, השתמש בכלי ההזרקה של תקלות, אשר יכול להזריק טיפות זיכרון, שגיאות תקשורת או עיכובים תזמון כדי לאמת את ההיגיון של הכשל בתנאים ריאליים.
6.תיעוד והדרכה
כל היבט של מנגנון הכשל:
- (ב) ויקרא י"א: "וַיֹּאמַר עַמֶר עַמֶר עַמֶר עַל הָאָרֶץ" (בראשית כ"ד, ט).
- (ב) עיין בפרשת ה-[[1924]]: [[1924]]]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]
- (ב) ,0) , ⁇ : מה לעשות אם נכשל (למשל, צעדי התערבות ידניים).
- (ב) ויקרא: ויקרא י"ד: ויקרא י"ד): "בְּהִנְתָּבְתָּבְתָּבְתָּבְתָּעָה, וְהִנְתָּבוּ לָעָשׂוּ" (במדבר כ"ד).
צוות המבצעים של הרכבות להכיר באירועים של כשל, כדי להפעיל באופן ידני את הכשל במהלך חלונות תחזוקה, ולהימנע ממלכודות נפוצות (למשל, שוכח לעדכן רשימות בקרת גישה כאשר VIP נע).
Best Practices for Production-Grade Failover
מעבר לצעדי היישום, בצעו את התרגילים האלה כדי להקשיח את מערכת הכשלונות שלכם לאורך זמן.
אוטומטי הכל
מדריך נכשל הוא איטי וטעייה ניהול תצורה (בלתי אפשרי, בובות, מלח) כדי לפרוס תצורה של תצורה של תצורה של תצורה של תצורה של תצורה באופן עקבי.אוטומטית נכשלת עם כלים כמו כאוס קוף (מ-Netflix) או את FLT:0ChaosBladeFLT 1 פרויקט עבור לינוקס. Set up כישלונות מתוכננות (למשל, לעצור את עיקרי ב 3 AM כל יום ראשון) כדי לשמור על מערכת הקרב.
Redundancy גיאוגרפית
אם המערכת שלך סובלת שקיפות גבוהה יותר ועקביות בסופו של דבר, לפרוס את הכשלונים במספר מרכזי נתונים או אזורים. השתמש בקובץ קונצנזוס מבוזר (למשל, וכו ', קונסול, או Zookeeper) המשתרע על פני מרכזי נתונים.עבור מסד נתונים נכשל, לשקול את ה-BgreSQL של פוסט-Directional Replication (BDR) או מרכז הנתונים של קסנדרה.
מעקב פרואקטיבי ואזהרה
כישלון צריך להיות אירוע המעורר התראה מיידית (לעמוד PagerDuty, OpsGenie, או על-ידי מהנדס שיחות) אבל גם לפקח על הבריאות של תשתיות הכשל עצמו: לבדוק כי הצומת באמת מסונכרן, כי רשת פעימות הלב אין אובדן חפיסת חבילה, וכי מכשירים נצפים הם נגישים לכלים כמו Prometheus עם FLT:0archer יכול לחשוף מצב LTer 1.
תרגילים קבועים ופוסט-מורטים
תרגילים "יום משחק" ברבעון שבו הצוות מגיב לכישלון מדמיע מבלי לדעת איזה מרכיב ייכשל.תזמן שיא לאיתור, זמן להיכשל, וכל בעיות.לאחר כל כשל אמיתי, לבצע פוסט-זיכרון חסר אשמה ועדכון התיעוד ו / או תצורה בהתאם.
אתגרים משותפים וכיצד להתגבר עליהם
אפילו מערכות כושלות מעוצבות היטב יכולות להיכשל בדרכים בלתי צפויות.כאן הן מלכודות טיפוסיות בסביבות הנדסה OS.
פיצול-Brain ב Active-Passive Clusters
למרות quorum ו fencing, המוח מפוצל עדיין יכול להתרחש אם מנגנון ההדבקה נכשל (למשל, אישורי IPMI שינוי, מתג כוח הוא בלתי ניתן להשגה).
- מבחן הדגמה באופן קבוע באמצעות כלי ההרחבה (FLT:10).
- השתמש בניהול מחוץ לפס עם נתיבי חשמל מקודמים.
- בידוד תוכנה (הזמנה ב- SCSI) כתוספת שאינה בטוחה.
כישלון לוקח יותר מדי זמן במערכות בזמן אמת
אם ה- RTO שלך הוא תת- 100 מ"מ, פייסצב להיכשלover סטנדרטי (שניים) לא יפחיתו אותו. Solutions כוללים:
- השתמש בחומרה Redundancy (בקרים מוגזמים עם סינכרוניזציה של מטוס אחורי).
- פרוטוקול תעסוקה שכבת 2 ונדנסיות כמו PRP (פרוטוקול Parallel Redundancy Protocol) או HSR (זמינות גבוהה ים ללא ים) המספקים זמן של אפס-מחדש עבור מסגרות רשת.
- יישום תפוקה מהירה ברמת היישום באמצעות ארכיטקטורה כפולה לקריאה (שני צמתים מעבדים נתונים, אבל רק אחד מניע פלטים; מתג הוא הבין באמצעות פלטה הצבעה latch).
צילום: After Failover
כאשר הצומת הכושל חוזר, ייתכן שהוא מנסה לנסח את הנתונים החדשים של ראשית.מנע זאת עם:
- עיבוד דיסק (SCSI-3 הזמנות עקביות) על אחסון משותף.
- Cluster filesystem (OCFS2, GFS2) אשר לאכוף את גדר הסימנטיקה.
- מספרי רצף ברמה של יישומים או תקופות כי stale nodes מסרבים לכתוב.
זמן קצר תחת עומס
ב RTOS, פרץ פתאומי של הפרעות יכול לעכב עיבוד פעימות לב, גורם כשל שווא. Tune המרווח פעימות הלב כדי להסביר עבור המהירויות הצפויות ביותר של הפרעה.חשב באמצעות חוט בזמן אמת לטיפול בלב עם עדיפות קבועה מעל כל המשימות הלא קריטיות.
מסקנה
יישום מנגנוני כשל במערכות הפעלה הנדסיות אינו תרגיל פשוט של תיבת הסימון.זה דורש הבנה עמוקה של מצבי הכישלון של המערכת, גבולות השקיפות של מערכת ההפעלה, ואת הניתוק בין מורכבות וזמינות. על ידי ביצוע מתודולוגיה מובנית - מדרישות הערכה באמצעות בדיקות אוטומטיות ותיעוד - מהנדסים יכולים לבנות מערכות לא-מחדשנות אמיתיות מבלי להציג כישלונות חדשים ואינטואיציה.