Liveness/Readiness synaglary
2) Dizaýn ýörelgeleri
1. Semantikleri paýlaşyň.
Readiness: soraglara hyzmat etmek üçin daşarky ukyby (möhüm garaşlylygy göz öňünde tutýar).
Liveness: prosesiň "bejerip bolmajak" ýagdaýynyň taslamasy.
2. Fil-fast, ýöne "false-fast" däl. Wagt/bosagany 'failureThreshold' saýlaň, şonuň üçin gysga partlamalar artykmaç täzeden başlamaz.
3. Synaglarda agyr operasiýa ýok. Barlag çalt (100-200 ms ≤) we zyýanly täsirleri bolmazdan geçirilmelidir.
4. Ajaýyp pese gaçmak. Garaşlylyk bölekleýin elýeterli bolmasa - Readiness = OK, howpsuz follbek bar bolsa (kesmek/kesmek).
5. Deterministic I/O. Statuslar diňe "tötänleýin" daşarky synaglara däl-de, häzirki ýagdaýa baglydyr.
3) HEALTH-endpointleriň semantikasy
3. 1 HTTP çemeleşmesi (maslahat berilýär)
'GET/healthz/liveness' → 200 eger proses "diri" bolsa (waka-loop aýlanýar, GC ýapyşmady, watchdog "ýürek" urýar).
'GET/healthz/readiness' → 200 eger nusga kritiki synpyň traffigine taýýar bolsa. Barlaglar: birikmeler howzy, ýerli keşler, işewürlik logikasynyň özeniniň elýeterliligi.
'GET/healthz/startup' → 200 başlanandan soň (göçmek/keş gyzdyrmak/modelleri ýüklemek).
- Daşarky DB/API-e ýaşamak mümkin däl - bu endik hadysalarynda "öz janyna kast etmäge" sebäp bolar.
- Readiness-de möhüm endikleri barlap bilersiňiz, ýöne wagt we degradasiýa bilen: walid follbek bar bolsa, ýykylmaň.
3. 2 gRPC Health Checking
'grpc' standartyny ulanyň. health. v1. Health/Check's service-scoped states ('SERVING', 'NOT _ SERVING'). Kubernetes üçin - grpc-synaglary (ýa-da http-proxy).
3. 3 Içerki triggerler
"Ýumşak" duralgany yzarlaň: SIGTERM-de Readiness = FAIL → garaşyň 'terminationGracePeriodSeconds' → nobatlary düzüp gutaryň.
4) Taýmingler we bosagalar (tuning)
Kubernetes-nusgalarynyň esasy meýdanlary:- `initialDelaySeconds`, `periodSeconds`, `timeoutSeconds`, `successThreshold`, `failureThreshold`.
- readiness: `period=5s, timeout=0. 2–0. 5s, failure=2`
- liveness: `period=10s, timeout=0. 2–0. 5s, failure=3`
- startup: 'period = 5s, failure = 60' (5 ~ çenli)
- readiness/liveness startup üstünlik gazanandan soň işjeňleşýär
- readiness gaýtadan işlemäge taýýardygyny görkezýär (dellalyň baglanyşygy, DLQ-pese gaçmagy barmy),
- liveness - içerki heartbeat loop.
Backoff ret edýär: programmada endiklere gaýtadan birikdirmek üçin eksponensial backoff ulanyň, ýogsam readiness "keser".
5) Konfigurasiýalar (bölekler)
5. 1 Kubernetes, HTTP synaglary
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 Kubernetes, gRPC-synag
yaml readinessProbe:
grpc:
port: 9090 service: my. app. Service periodSeconds: 5 timeoutSeconds: 1
5. 3 Graceful shutdown
yaml terminationGracePeriodSeconds: 30 lifecycle:
preStop:
exec:
command: ["/bin/sh","-c","curl -s localhost:8080/healthz/drain && sleep 5"]
'/healthz/drain 'hyzmatyň içinde Readiness = FAIL (stop-accepting) terjime edýär, işjeň haýyşlary tamamlamaga wagt berýär.
6) Garaşlylyk we pese gaçmak
Kritiki (onlarsyz hyzmat edip bolmaýar): '/login 'üçin ygtyýarnamanyň DB, '/pay' üçin töleg şlýuzy. Synagyň 'timeoutSeconds' -dan 80% ≤ wagt bilen readiness barlap bilersiňiz.
Kritiki däl: analitika, email, goşmaça ýük bar bolsa kesh gatlagy. Olary readiness-e goşmaň; follbek ulanyň.
Feature-flags: bölekleýin zaýalananda Readiness = OK saklap, garaşly şekilleri öçüriň.
7) Nobatlar we fon işläp taýýarlaýjylary
Consumers/Workers:- Readiness = OK, eger broker abuna ýazylsa/baglanyşdyrylsa we işlemek üçin çeşme bar bolsa.
- DLQ/lag → Readiness aşa köp bolsa, OK bolup biler (kabul etsek we goşsak), ýöne SLI "täzelik/lag" ýanýar - maglumatlar boýunça alert.
- Liveness: poll-sikl/heartbeat, dedlok detektoryna gözegçilik ediň.
Idempotentlik: liveness dikeldişinden soň dikelmegi çaltlaşdyrýar.
8) Sidecar/mesh/ingress
service mesh (Istio/Linkerd) ulanylanda probe sidecar-dan geçip biler:- Sidecar statusyny hasaba almak üçin 'readinessGate' (K8s) -ni açyň,
- Nusgalaryň mTLS päsgelçiliklerine girmeýändigine göz ýetiriň (ýa-da kadadan çykmalar goşuň).
- Ingress/Envoy/Nginx: '/healthz/' lokallaşdyryň, içerki bölekleri "çykarmaň".
9) Howpsuzlyk we gizlinlik
Health-endpoints kitaphanalaryň gapma-garşylyklaryny, wersiýalaryny, ýalňyşlyk setirlerini açmaly däldir - diňe "OK/FAIL" + sebäpiň iň az kody.
Daşarky girişi çäklendiriň (NetworkPolicy/ACL). Köpçülige - diňe jikme-jikliksiz liveness-ping edeliň.
Saglyk barlaglarynyň ýazgylary - DEBUG derejesinde, trottling bilen.
10) Synlamak we SLO
'health _ readiness {status}', 'health _ liveness {status}' metrlerini eksport ediň.
Readiness-flaplary SLO elýeterliligi bilen baglanyşdyryň (endpointlerden düşmek → 5xx/connection reset).
- "Liveness> N/h boýunça ýygy-ýygydan dikeldişler" - dedloklaryň/syzmalaryň alamaty.
- "Flap Readiness> X/15 min" - garaşlylyk/tor problemalarynyň alamaty.
- Deplow bilen baglanyşyk ('service. version`).
11) Synag
Unit/Contract: endpointler '/healthz/' her bir garaşlylyk öçürilende dogry statuslary gaýtaryp berýär.
Chaos: DB/kesiş/dellalyň öçürilmegi: Readiness ýykylmaly ýa-da follbeki berk model boýunça açmaly. Liveness - proses "diri" bolsa sarsmaz.
Load/Soak: health-endpointler çalt bolmaly (kontenşn zyňmaň).
Canary: traffigi köpeltmezden ozal Readiness durnuklylygyny barlaň.
12) Ýygy-ýygydan ýalňyşlyklar we olardan nädip gaça durmaly
Liveness DB/daşarky API-leri barlaýar. Netije - hadysalarda tükeniksiz täzeden başlamalar. Çözgüt: liveness "amal durmuşyny" çäklendirmek.
Synaglarda kyn barlaglar. Ýalan ret etmeklige getirýär. Çözgüt: ýeňil barlaglar + aýry-aýry background-health monitorlary.
Startup Probe ýok. Haýal başlamak liveness tarapyndan "öldürilýär". Çözgüt: giň penjireli startup goşuň.
graceful shutdown ýok. Deploýda seýrek 5xx. Çözgüt: preStop + balansdan aýyrmak.
Flap tupanlary. Gaty agressiw bosagalar. Çözgüt: 'failureThreshold' -y götermek, 'timeoutSeconds' -y köpeltmek, backoff goşmak.
Hemme zat üçin birmeňzeş endpointler. Semantikleriň garyşmagy. Çözgüt: aýratyn 'liveness/readiness/startup'.
13) Satmagyň kiçi patternleri
Ýönekeý HTTP handler (psevdokod):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 saglygy (ideýa):
go
// use google. golang. org/grpc/health/grpc_health_v1 healthServer. SetServingStatus("my. app. Service", SERVING) // or NOT_SERVING
ReadinessGate (mesh bilen hakykat):
yaml spec:
readinessGates:
- conditionType: "proxy. istio. io/ready"
14) Çek-listler
Önümden öň
- Durmuş/readiness/startup endpointleri bölünýär, semantikleri beýan edilýär.
- Liveness daşarky endiklere täsir etmeýär; Readiness diňe wagt we follbek bilen tankydy barlaýar.
- Hyzmat profiliniň aşagyndaky 'initialDelay/period/timeout/failureThreshold' sazlandy.
- graceful shutdown goşuldy: 'preStop' + balansdan aýyrmak.
- Saglyk metrikleri/ýazgylary birikdirildi; alertler/flap.
- Endikden ýüz öwürmek we haýal başlamak synaglary geçdi.
Amal
- Täzelenmeler we flaplar boýunça hepdelik hasabat readiness.
- Wakalardan soň bosagalary sazlamak; relizler bilen baglanyşyk.
- Garaşlylygy öçürmek üçin yzygiderli chaos synaglary.
- Endikleriň kritikligi üýtgände semantikanyň ähmiýeti.
15) FAQ
S: Hemme zady bir gezek ýapyp bolarmy?
A: islenmeýär. 'Startup', 'readiness', 'liveness' bölüň - bu ýalan täsirleri peseldýär we RCA-ny çaltlaşdyrýar.
S: Readiness-de keş barlamalymy?
O: Eger keş bolmasa, dogry (haýal bolsa-da) re modeim bar bolsa, readiness-i taşlamaň, diňe zaýalanmagy açyň.
S: liveness boýunça ýygy-ýygydan täzeden başlamakda näme etmeli?
A: Ilki bilen belligi/syzmagy aýyryň; soňra bosagalaryňyzy gowşadyň we programmada watchdog goşuň.
S: Köp kärendäni nädip göz öňünde tutmaly?
O: Readiness islendik kärende-traffige hyzmat etmek ukybyny görkezmelidir. Belli bir kärendeçiniň şahsy problemalary üçin - readiness-i üýtgetmäň, aýratyn SLI/alertler bilen signal beriň.
- "Syn edilişi: ýazgylary, metrikleri, yzarlamalary"
- "Paýlanan ýollar"
- "SLO/SLA we metrikler"
- "Webhuklary eltmegiň kepillikleri"
- "In Transit Şifrlemek"
- "Syr dolandyryşy"