מערכת החלמה אוטומטית ושיקום עצמי
1) מהו ריפוי אוטומטי ומדוע הוא נחוץ
ריפוי אוטומטי הוא ייצוב אוטומטי של השירות במקרה של כשלים ללא התערבות אנושית, עם עדיפות לשיקום תסמין (SLO) על פני חיפוש גורם שורש (RCA).
מטרות: MTTR נמוך יותר, להגן על תקציבים פגומים, להפחית עלויות תפעול וטעויות אנוש.
- גילוי (metrics/logs/synthetics/events).
- פתרון (כללים/מדיניות/היוריסטיקה ML).
- פעולה (restart/scale/sheding/ficheflag/rollback/feilover).
- אימות (SLO ירוק בחלון הנתון).
- לחזור על השפלה.
2) מפת מנגנון ריפוי אוטומטי
ברמת היישום: idempotency, timeouts, retry + backoff + jitter, מפסק חשמלי, מחיצה, הטמנה (חיננית).
קוברנטס: libeness/windency/startup groses, restartPolicy, PDB, HPA/VPA, Descheduler, Pod/Node auto-redection.
רשת/קצה: מגבלות קצב, מכסות לדייר, ניקוז חיבור, כשל פתוח/קרוב, כללי WAF.
תורים/הזרמה: צרכן אוטומטי, תרמיל גב מבוסס לג, מגרש חניה DLQ/.
אחסון/DB: העתק-פיילובר, תיקון אוטומטי (בנייה מחדש), אוטובקאום משונן, איזון מחדש של בריכת החיבור.
CI/CD: חישובים קנריים, משלוח מתקדם, אוטומטי-rollback.
תזמור אירועים: בקרים/מפעילים, מנועי עבודה (Argo, Airflow) עם מדיניות חזרה.
Watchdog/Heartbeats: Dead Man's Switch עבור עבודות רקע.
3) עקרונות עיצוב לשיקום עצמי בטוח
1. כל הפעולות האוטומטיות מופעלות על ידי תסמינים הקשורים לחוויית משתמש.
2. קודם מבחינה מקומית/נקודתית, אחר כך גלובלית.
3. מעקות בטיחות בכיוון אחד: רולבק על ידי טיימר/תנאי, ”מפתח כפול” לפעולות מסוכנות.
4. אידמפוטנטיות: כל פעולה (הפעלה מחדש, נדידה, סיבוב) בטוחה לחזרה.
5. תוויות פעולה, מתאם עם עקבות, מי/מה/מתי/למה יומן.
6. חיסיון מינימלי: לאוטומציה יש זכויות מינימליות (RBAC, סודות מסומנים).
7. מודעות עלות: מגבלות על פעולות ”יקרות” (scaling, egress, snothots).
4) גילוי: אותות להתחלת ריפוי אוטומטי
5xx%, p95/p99 latency, קפקא לג, DB lock/lag, לחץ צומת.
סינתטיים: uptime fall/path regression (התחברות/הפקדה).
יומנים: חתימות שגיאה חדשות, שיעור יוצא מן הכלל.
: LoopBackOff מזורז, NodNotReady, לוח זמנים .
דופק: שתיקה של העבודה> N דקות.
promql
API error regression sum (rate (http_requests_total{status=~"5"..}[5m]) )/sum (rate (http_requests_total[5m]))> 0. 01
Kafka: lag> threshold max by (topic, group) (kafka_consumergroup_lag)> 10000
K8s: pod в CrashLoopBackOff increase(kube_pod_container_status_restarts_total[5m]) > 3
5) פעולות לשחזור אוטומטי (ספר מהלכים)
5. 1 יישום/רשת
מפסק מעגל ב עם אנומליה backend = fast-fast + cache/dab תגובות.
Retry + Backoff + jiter עם מגבלות ושכפולים.
הגבלת קצב/צריכת עומס: תחת עומס יתר - עדיפות לנתיבים קריטיים.
5. 2 קוברנטס
הפעל מחדש את המיכל (לביאה) והסיר את האח על צומת שאינו בריא.
HPA/VPA: קנה מידה אוטומטי על ידי RPS/CPU/latency/lag; VPA - רק המלצות או מחוץ לשעות לחול.
תיקון אוטומטי של צמתים: קורדון + ניקוז עבור בעיות עקביות (tins).
זיקה/טופולוגיה התפשטה להגנה מפני קבצי AZ.
5. 3 תורים/הזרמה
צרכנים בקנה מידה אוטומטי: צמצום זמני של יצרני תפוקה.
DLQ להודעות רעילות; שידור חוזר מארכיון.
5. 4 DB/Cache
כשל בהעתק עם אימות מצב/הגדרה.
מאגר החיבור מאפס לדליפות חיבור.
קידום המתנה עם הגדרה אוטומטית של לקוחות.
5. 5 CI/CD
אוטומטי-rollback עם 5xx/p95 צמיחה על תנועה כנרית.
דגלי תכונה: כבוי אוטומטי של תכונה בעייתית במקום גלגול חוזר.
6) משלוח מתקדם וחזרה אוטומטית
דוגמה (ארגו רולים אסטרטגיה קנרית)
yaml strategy:
canary:
canaryService: api-canary stableService: api-stable steps:
- setWeight: 10
- pause: {duration: 5m}
- analysis:
templates:
- templateName: api-slo-check
- setWeight: 25
- pause: {duration: 10m}
- analysis:
templates:
- templateName: api-slo-check
אם ניתוח התבנית מחזיר ”נכשל” (שגיאות/latency חרגו), rollout מתגלגל חזרה אוטומטית.
7) הצג דגלים ככלי להחלמה עצמית
מתג חיסול לתכונות בעייתיות (צד שרת).
מטרה: בטל תכונה בקטע/אזור.
חוק אוטומטי: אם 5xx% מהתכונה> X ב Y דקות הוא OFF והכרטיס הוא בצבר.
אימות: SLO-פאנל תכונה עם תקציבים.
8) עומס יתר: כיצד לא ”להתייחס” לעצמך למוות
Shed-load: לדחות/להוריד את QOS של בקשות לא קריטיות (תעריפים, דיווחים כבדים).
דלי טוקן/דלי דולף ומכסות דייר/מפתח.
קונקורנסי אדפטיבי (ברמה של פרוקסי/SDK) - להפחית במקביל כאשר האחות גדלה.
מחיצה: בידוד אשכול/בריכות חיבור.
9) עקביות ואידמפוטנטיות
מפתחות אידמפוטנטים (request_id) * הגנה מפני חזרה.
עסקאות פחד (תשלומים, מחיקה) - תהליכים בשני פאזות, אישור/פיצוי (סאגה).
Outbox/Inbox Like-פעם אחסון אידמפוטנטיות.
10) בטיחות וציות
מינימום RBAC עבור אוטומטים (רק המשאבים הדרושים).
ביקורת של כל הפעולות: מי/מתי/איזה אות/איזו השפעה.
עקיפה ידנית ו ”כפתור אדום” כדי לבטל פעולות אוטומטיות.
מעצר משפטי על חפצי אירוע ויומני אוטומציה.
סודות - באמצעות מנהל סודי, סיבוב מפתח במהלך פעולות עצמיות.
11) FinOps: המחיר של ”ריפוי עצמי”
מגבלות על אוטוסקלה מקסימלית כדי לא להישבר עם סנסציה.
עלות לכל מדדי פעולה: עלות של 1 הפעלה מחדש, 1 העתק נוסף, 1 TB יציאה.
אגרגטים: עלות לדקה-SLO חסכה, עלות לכל אירוע מקל.
מדיניות ”מצב לילה”: התוקפנות של האוטומציה נמוכה יותר אם התנועה העסקית נמוכה.
12) יכולת תצפית של אוטומציה
תוויות על הגרפים: redemption _ action = "rollback", "מקור" = "argo", "סיבה" = "slo _ burn'.
לוח מחוונים נפרד: תדירות של פעולות אוטומטיות, הצלחה, זמן התאוששות חציוני, קצב גלגול חוזר.
Effect # מתאם SLO להערכת תועלת.
13) תצורות ודוגמאות
13. 1 K8s: גישושים ומדיניות הפעלה מחדש
yaml livenessProbe:
httpGet: { path: /healthz, port: 8080 }
initialDelaySeconds: 20 periodSeconds: 10 timeoutSeconds: 2 readinessProbe:
httpGet: { path: /readyz, port: 8080 }
periodSeconds: 5 failureThreshold: 3 startupProbe:
httpGet: { path: /startupz, port: 8080 }
failureThreshold: 30 periodSeconds: 5
13. 2 התראה * פעולה אוטומטית (פסאודו)
yaml rule: api_5xx_rate_high action:
type: feature_flag target: "payments. new_flow"
set: false guardrails:
cooldown: 10m max_actions_per_hour: 2 rollback_if:
- condition: "5xx% not reduced within 5m"
13. 3 קפקא לג אוטוסקלה (HPA לפי מטרי מותאם אישית)
yaml metrics:
- type: Pods pods:
metric:
name: kafka_consumer_lag target:
type: AverageValue averageValue: "500"
14) בדיקת ריפוי אוטומטי (תוהו ובוהו וימי משחק)
זריקות כאוס: הפסקות רשת, תרמילי הרג/צמתים, הידרדרות מסד נתונים/מטמון.
ימי משחק: אימון תרחיש עם מגבלת זמן ומדדי MTTR.
תנועת צללים: השכרת התנועה לכנרת מבלי להשפיע על המשתמשים.
מצבי אוטומציה ריצה יבשה (אנחנו כותבים, אבל לא עושים).
15) קריטריונים ל ”מוכנות להחלמה אוטומטית”
[ ] SLOs מוגדרים, המדדים יציבים, יש סינתטיים.
[ דוגמאות ]/בריאות ,/readyz ,/startupz משקף נכונה את המצב.
[ זהות ] והגנה כפולה (במיוחד בתשלומים).
[ דגלים ] ותצוגות כנריות זמינים.
[ ] מעקות בטיחות: התקררות, מגבלת קצב פעולות, מפתח כפול לפעולות בסיכון גבוה.
[ ] לוח מחוונים אוטומטי ויומני ביקורת.
[ ] מעקף ידני וחוברות הפעלה מתכננים למקרה של שיבוש.
16) יישום לפי שלב (4 איטרציות)
1. בסיס: להגדיר SLO, להוסיף גשושיות, לכלול התראות מחדש/ראשי.
2. פעולות מקומיות: פישפלאג-להרוג-מתג, צרכנים לאג-סל, קנריות אוטומטי רולבק.
3. רמת אינפרא: תיקון צומת, כשל מסד נתונים/מטמון, הצללה טעינה.
4. אופטימיזציה: מעקות בטיחות, גבולות FinOps, בדיקות כאוס, ML היוריסטיקה לגילוי.
17) שגיאות תכופות ותבניות אנטי
טיפול הגורם לסימפטומים = MTR ארוך.
פעולות גלובליות ללא שלב קנרית.
אין גלגול חוזר או אין קריטריונים לבטל.
בדיקות בריאות כוזבות (200 עבור התמכרות שבורה).
”בלוט” אוטוסקלה ללא גבולות/סף עלות.
סערת מגש עיוור ללא גיבוי ושכפול.
18) מיני ־ FAQ
אתה צריך אם-אל בשביל ניקוד אוטומטי?
לא, זה לא התחל עם כללים על מדדים/מדדים ומעקות בטיחות; אם-אל שימושית לחריגות וניבוי.
למה הפעלה מחדש לא תמיד עוזרת?
אם השורש תלוי (מסד נתונים, מטמון, רשת), ההפעלה מחדש רק תחמיר את הסערה. צריך מפסק/שפיכה/פיילובר.
איך להוכיח את היתרונות?
השווה MTTR וצריכה שגויה של תקציב לפני/אחרי. הוסף עלויות למדידת מדדים.
סך הכל
ריפוי אוטומטי (באנגלית: Auto-Realing) היא מערכת, לא מערכת של קביים: SLO-Extruction _ Service Point Action # rollback כאשר החמיר. על ידי שילוב של גשושיות, חישובים קנריים, דגלי תכונה, הדגשה, הצללה, אוהבי נמלים ומעקות בטיחות קפדניות, אתם מפחיתים את MTTR, שומרים על התקציב שגוי ושומרים על העלות תחת שליטה.