דוגמאות לביאה/מוכנות
2) עקרונות עיצוב
1. סמנטיקה נפרדת.
מוכנות: יכולת חיצונית לשרת בקשות (לוקחת בחשבון תלויות קריטיות).
הבדיקות של מצב ”חשוך מרפא” של התהליך.
2. אל-כשל מהיר, אבל לא מהר-שווא. התאם את פסקי הזמן/סף ” הסף” כך שפרצות קצרות לא יובילו להפעלה מחדש מיותרת.
3. אין מבצעים כבדים בדגימות. הצ 'ק צריך להיות מהיר (100-200 מ "מ) וללא תופעות לוואי.
4. השפלה חיננית. במקרה של אי זמינות חלקית של תלות - מוכנות = אוקיי, אם יש חסימה בטוחה (מטמון/חיתוך).
5. עירוי דטרמיניסטי. סטטוסים תלויים רק במצב הנוכחי, לא במבחנים חיצוניים ”אקראיים”.
3) סמנטיקה של נקודות סוף בריאות
3. גישה 1 HTTP (מומלץ)
'גט/בריאה/לביאה' = 200 אם התהליך הוא ”בחיים” (אירוע-לולאה מסתובב, ג 'י-סי לא תקוע, כלב שמירה ”לב” פועם).
'GET/בריא/מוכנות' = 200 אם המקרה מוכן לתנועה ברמה קריטית. צ 'קים: בריכת חיבור, מטמונים מקומיים, גרעין היגיון עסקי זמין.
'GET/health/startup' = 200 לאחר אתחול (נדודים/מטמון חימום/טעינה מודלים).
- אתה לא יכול ללכת לבסיסי נתונים חיצוניים/API בלביאות - זה יוביל ל ”התאבדויות” במהלך תקריות תלות.
- במוכנות, אתה יכול לבדוק תלויות קריטיות, אבל עם פסקי זמן והשפלה: אם יש חסיד תקף, אל תוריד אותו.
3. 2 בדיקת בריאות GRPC
השתמש בתקן grpc. בריאות. V1. Health/Check 'עם Service-scoped states (' הגשה ',' Not _ Serving '). עבור Kubernetes - grpc growes (או http proxy).
3. 3 הפעלות פנימיות
Watchdog ”Soft” Stop: עם SIGTERM SET SINDENCE = AFLAC PAC לחכות ל- ”Termination Seconds” סוף, לעבוד על תורים.
4) עיתוי וסיפים (כוונון)
שדות מפתח של דוגמיות קוברנטס:- 'Initialally Seconds', ' Seconds', 'Time Out Seconds', 'Experhold',' Senshold'.
- תקופה = חמש, פסק זמן = 0. 2–0. 5S, כישלון = 2&fost
- לביאה: נקודה = 10, פסק זמן = 0. 2–0. 5S, כישלון = 3&fost
- סטארט-אפ: תקופה = 5, כישלון = 60 '(עד ~ 5 דקות)
- מוכנות/לביאה מופעלת לאחר הצלחת הפעלה
- מוכנות משקפת מוכנות לעיבוד (חיבור לברוקר, בין אם יש דלדול DLQ),
- לביאה - לולאת פעימות לב פנימית.
גיבוי על כשלים: ביישום, להשתמש בגיבוי מעריכי להתחבר מחדש לתלות, אחרת מוכנות ”ראה”.
5) תצורות (מקטעים)
5. 1 קוברנטס, גשושיות HTTP
yaml livenessProbe:
httpGet: { path: /healthz/liveness, port: 8080 }
periodSeconds: 10 timeoutSeconds: 1 failureThreshold: 3
readinessProbe:
httpGet: { path: /healthz/readiness, port: 8080 }
periodSeconds: 5 timeoutSeconds: 1 failureThreshold: 2
startupProbe:
httpGet: { path: /healthz/startup, port: 8080 }
periodSeconds: 5 failureThreshold: 60
5. 2 קוברנטס, מדגם GRPC
yaml readinessProbe:
grpc:
port: 9090 service: my. app. Service periodSeconds: 5 timeoutSeconds: 1
5. 3 כיבוי חינני
yaml terminationGracePeriodSeconds: 30 lifecycle:
preStop:
exec:
command: ["/bin/sh","-c","curl -s localhost:8080/healthz/drain && sleep 5"]
'/בריאה/ניקוז 'בתוך השירות מתרגם מוכנות = נכשל (להפסיק לקבל), נותן זמן כדי להשלים בקשות פעילות.
6) תלויות והשפלה
קריטי (לא ניתן לשרת בלעדיהם): מסד נתונים הרשאה עבור '/התחברות ', שער תשלום עבור '/תשלום'. ניתן לבדוק במוכנות עם פסק זמן, 80% מהדגימות של ”טיים אאוט שניות”.
לא קריטי: אנליטיקה, דוא "ל, שכבת מטמון אם יש עומס. אל תכלול אותם במוכנות; תשתמש בתלבושת.
Feature-flags: אם הוא מושפל חלקית, בטל תכונות תלויות תוך שמירה על מוכנות = אישור.
7) תורים ומפעילי רקע
צרכנים/עובדים:- מוכנות = אישור אם מותקן מנוי/חיבור לברוקר ויש משאב לעבד.
- כאשר DLQ/lag יעלה על גדותיו * מוכנות עשויה להישאר בסדר (אם נקבל ונוסיף), אך SLI ”רעננות/לאג” מאירה - התראה לפי הנתונים.
- שליטה במחזור הסקרים/פעימות לב, Deathdetector.
האצה התאוששות מלביאה מחדש.
8) סירה/רשת/כניסה
כאשר משתמשים ב ־ Service Mesh (איסטיו/לינקרד), הגשושית יכולה לעבור דרך סירה:- אפשר ”לקרוא שער” (K8s) כדי להסביר את מצב הסירה,
- ודא שהדגימות לא ייפלו בתוך מחסומי mTLS (או יוסיפו יוצאים מן הכלל).
- Ingress/Envoy/Nginx: Prox '/health z/' מקומית, אל ”תוציא” חלקים פנימיים.
9) ביטחון ופרטיות
נקודות סוף בריאות לא צריכות לחשוף תצורות, גרסאות ספרייה, מחרוזות שגיאה - רק ”OK/FAIL” + קוד סיבה מינימלי.
הגבלת גישה חיצונית (NetworkPolicy/ACL). לציבור - בואו פשוט פינג-לביאה ללא פרטים.
רישומים של בדיקות רפואיות ברמת דבאג, עם מצערת.
10) יכולת תצפית ו ־ SLO
ייצוא מדדים: ”בריאות _ מוכנות”, ”בריאות _ ליבנס”, זמן עיבוד דגימות.
Associate Readness Flagges עם SLOs זמינות (ירידה מנקודות קצה = 5xx/חיבור).
- ”תדיר מחדש על ידי liberess> N/שעה” - סימפטום של קיפאון/הדלפות.
- ”מוכנות דש> מין X/15” - סימפטום של בעיות התמכרות/רשת.
- מתאם עם פריסה ("service. גרסה ').
11) בדיקות
Unit/Contract: Endpoints '/health/' relizz/' reside statuses כאשר כל תלות מושבתת.
כאוס: ביטול מסד נתונים/מטמון/ברוקר: מוכנות צריכה ליפול או לאפשר מעקב אך ורק לפי המודל. הלביאה - אינה מעוררת אם התהליך ”חי”.
טעינה/השריה: תחת עומס, נקודות קצה בריאות חייבות להישאר מהירות (לא לדחוף תוכן).
בדוק את יציבות המוכנות לפני הגדלת התנועה.
12) טעויות תכופות וכיצד להימנע מהן
Libeness בודק מסדי נתונים/API חיצוני. התוצאה היא הפעלה מחדש אינסופית של אירועים. הפתרון: להגביל את הלביאות ”לעבד את החיים”.
בדיקות כבדות בדגימות. מוביל לכשלונות שווא. פתרון: בדיקת אור + צגי רקע-בריאות פרטניים.
אין מכשיר הפעלה. התחלות איטיות ”נהרגים” על ידי לביאה. פתרון: הוסף הפעלה עם חלון רחב.
אין כיבוי חינני. נדיר 5xx ב depla. פתרון: Prestop + חוסר איזון.
סופות דש. מפתן אגרסיבי מדי. פתרון: להעלות ” הסף”, להגדיל ”זמן אאוט שניות”, להוסיף גיבוי.
אותן נקודות סוף לכל דבר. ערבוב סמנטיקה. פתרון: ”לביאה/מוכנות/התחלה”.
13) דפוסי יישום קטנים
מפעיל HTTP פשוט (פסאודו-קוד):python
@app. get("/healthz/liveness")
def liveness():
return 200
@app. get("/healthz/readiness")
def readiness():
ok_core = core_is_ready () # local pools/caches/initialization ok_db = db. ping (timeout = 50 _ ms) # only if the DB is critical return 200 if (ok_core and ok_db) else 503
@app. get("/healthz/startup")
def startup():
return 200 if INIT_DONE else 503
@app. post("/healthz/drain")
def drain():
set_readiness(False); return 200
בריאות GRPC (רעיון):
go
// use google. golang. org/grpc/health/grpc_health_v1 healthServer. SetServingStatus("my. app. Service", SERVING) // or NOT_SERVING
Readimage Gate (נכון עם רשת):
yaml spec:
readinessGates:
- conditionType: "proxy. istio. io/ready"
14) רשימות בדיקה
לפני המכירה
[ ] Libeness/מוכנות/startup endpoints מופרדים, הסמנטיקה שלהם מתוארת.
[ ] לבינס אינה נוגעת בתלות חיצונית; מוכנות בוחנת קריטית רק עם פסקי זמן ועקבה.
מוגדרת 'initialtialHide/timeout/ Threshold' לפרופיל שירות.
[ כיבוי חינני ] מאפשר: 'Prestop' + חוסר איזון.
[ ] מדדי בריאות/יומנים מחוברים; התראות לאתחול/דש.
[ ] כשל תלות ומבחני התחלה איטיים עברו.
מבצע
[ דו "ח שבועי ] על הפעלות מחדש ודגלי מוכנות.
[ ] סף כוונינג לאחר תקריות; חיבור עם שחרור.
[ ] בדיקות כאוס רגילות לנטרול תלות.
[ ] רלוונטיות של סמנטיקה כאשר קריטיות התלות משתנה.
15) FAQ
ש: האם אפשר לסגור הכל עם התמוטטות אחת?
א ': לא רצוי. הפרד בין ”סטארט-אפ”, ”מוכנות”, ”לביאה”, זה מפחית חיוביות שגויה ומאיץ את RCA.
קיו: האם אני בודק את המטמון במוכנות?
א. אם יש מצב נכון (אם כי איטי יותר) ללא מטמון, אל תוריד את המוכנות, פשוט תדליק את ההשפלה.
קיו: מה לעשות עם התחלות מחדש תכופות של לביאה?
א ': לשלול קודם דקטור/דליפה; ואז לשחרר את הסף ולהוסיף כלב שמירה ביישום.
ש: איך אנחנו מסבירים את ריבוי הדיירים?
א. מוכנות צריכה לשקף את היכולת לשרת כל תנועה שכורה. לבעיות פרטיות של דייר מסוים - לא לשנות מוכנות, אבל אות עם התראות SLI/נפרדות.
- ”יכולת תצפית: יומנים, מדדים, עקבות”
- ”עקבות מבוזרות”
- ”SLO/SLA ומטרים”
- ”ערובות למשלוחים”
- ”בהצפנת מעבר”
- ”ניהול סודי”