मुख्य सामग्री पर जाएं
यह दस्तावेज़ EKB AWS/EKS अवसंरचना के लिए आपदा वसूली (DR) रणनीति, वसूली समय लक्ष्य (RTO), और वसूली बिंदु लक्ष्य (RPO) का वर्णन करता है। इसमें अंतर्निहित HA क्षमताएँ, सक्रिय बैकअप सिस्टम, वसूली प्रक्रियाएँ और ज्ञात अंतराल शामिल हैं।
तैनाती निर्देशों के लिए, Terragrunt तैनाती गाइड देखें।

वास्तुकला और उच्च उपलब्धता सारांश

अवसंरचना घटक

वर्तमान HA क्षमताएँ


RTO / RPO लक्ष्य


बैकअप सिस्टम

1. Terraform / Terragrunt स्टेट — S3

क्या बैकअप लिया जाता है: सभी अवसंरचना स्टेट (EKS, नेटवर्किंग, IAM, Helm releases)। कार्यान्वयन:
  • प्रति वातावरण S3 bucket: ekb-terraform-state-<env-name> (terragrunt/environments/<env-name>/state/ के माध्यम से बूटस्ट्रैप)
  • वर्शनिंग सक्षम — कोई भी पिछला स्टेट संस्करण पुनर्स्थापित किया जा सकता है
  • सर्वर-साइड एन्क्रिप्शन (AES-256)
  • स्टेट लॉकिंग के लिए DynamoDB टेबल
वसूली: S3 में किसी भी पिछली स्थिति संस्करण पर वापस जाएँ, फिर terragrunt apply पुनः चलाएँ। RPO: प्रत्येक terragrunt apply कमिट — लगातार।

2. EBS स्थायी volumes — AWS Data Lifecycle Manager

क्या बैकअप लिया जाता है: pods से जुड़े EBS volumes (Automator PostgreSQL, Supabase MinIO, कोई भी स्टेटफुल वर्कलोड)। कार्यान्वयन: वातावरण टैग्स को लक्षित करने वाली AWS Data Lifecycle Manager (DLM) नीति।
वसूली:
RPO: 24 घंटे तक (दैनिक snapshots)। DLM शेड्यूल आवृत्ति बढ़ाकर कम करें।

3. CloudNativePG (HA Supabase DB) — Barman Cloud बैकअप

लागू: ENABLE_CNPG=true और ENABLE_HA_SUPABASE_DB=true वाले वातावरण। क्या बैकअप लिया जाता है: CloudNativePG Postgres क्लस्टर (ha-supabase-db), जिसमें S3 या MinIO तक लगातार WAL (Write-Ahead Log) streaming, और CNPG ScheduledBackup CRD के माध्यम से अनुसूचित पूर्ण base backups शामिल हैं। कार्यान्वयन (values/ha-supabase-db.yaml में कॉन्फ़िगर):
बैकअप स्थिति सत्यापित करें:
बिंदु-समय वसूली (PITR):
RPO: WAL-सक्षम क्लस्टर्स के लिए लगभग शून्य (सेकंड का लैग, WAL अपलोड अंतराल से सीमित)।

4. ElastiCache Redis — Multi-AZ रिप्लिकेशन

लागू: ENABLE_AWS_SERVICES=true वाले वातावरण। Redis प्राथमिक डेटा स्टोर नहीं है — यह अस्थायी कैश और सत्र डेटा रखता है। DR का ध्यान बैकअप/रिस्टोर की तुलना में तेज़ failover पर है। कार्यान्वयन:
  • स्वचालित failover के साथ Multi-AZ सक्षम
  • रेस्ट और ट्रांज़िट में एन्क्रिप्शन
  • प्राथमिक node विफलता स्वचालित रूप से replica को प्रमोट करती है (< 1 मिनट)
RPO: Redis डेटा डिज़ाइन के अनुसार अस्थायी है। failover के बाद कैश मिस होने की उम्मीद है; एप्लिकेशन डेटाबेस से पुनः भरता है।

5. Amazon MQ (RabbitMQ) — मैसेज क्यू

लागू: ENABLE_AWS_SERVICES=true वाले वातावरण। कार्यान्वयन:
  • सिंगल-इंस्टैंस (डिफ़ॉल्ट) या active/standby तैनाती
  • broker पुनरारंभ के दौरान in-flight संदेश खो सकते हैं; consumers को idempotent बनाएँ
  • Management UI पोर्ट 15671 (SSL) पर उपलब्ध
RPO: सिंगल-इंस्टैंस — विफलता के समय in-flight संदेश खो सकते हैं। इस जोखिम को कम करने के लिए active/standby तैनाती मोड का उपयोग करें।

स्वतः वसूली तंत्र

Karpenter — Node प्रोविज़निंग और वसूली

  • समेकन: WhenEmptyOrUnderutilized — निष्क्रिय नोड्स स्वचालित रूप से समाप्त हो जाते हैं
  • Spot interruption handling: SQS interruption events सुनता है; समाप्ति से पहले Spot नोड्स को drain और प्रतिस्थापित करता है
  • Node drift: पुराने AMIs या कॉन्फ़िगरेशन का उपयोग करने वाले नोड्स enable_drift = true होने पर स्वचालित रूप से प्रतिस्थापित हो जाते हैं
  • वसूली समय: नया node 0–10 मिनट में प्रोविज़न

KEDA — Pod Autoscaling

  • न्यूनतम रेप्लिकास: सभी सेवाओं (Web, API, Celery, Automator) के लिए 2 — एकल-विफलता बिंदु को रोकता है
  • CPU सीमा: 60–70% स्केल-आउट ट्रिगर करता है
  • मेमोरी सीमा: 80% स्केल-आउट ट्रिगर करता है
  • स्केल-डाउन स्थिरता: 30 सेकंड — flapping से बचाता है
  • वसूली समय: विफल pods 0–2 मिनट में पुनः शेड्यूल

Kubernetes Pod Anti-Affinity

सभी रहित सेवाएँ nodes और AZs में pods को फैलाने के लिए kubernetes.io/hostname पर preferredDuringSchedulingIgnoredDuringExecution anti-affinity का उपयोग करती हैं।

वसूली प्रक्रियाएँ

परिदृश्य 1: AZ विफलता

अपेक्षित व्यवहार: Karpenter शेष AZs में प्रतिस्थापन नोड्स प्रोविज़न करता है; KEDA pods को पुनः शेड्यूल करता है; ALB अस्वस्थ लक्ष्यों पर रूटिंग बंद कर देता है। सत्यापन:
सामान्य परिस्थितियों में कोई मैनुअल हस्तक्षेप आवश्यक नहीं है।

परिदृश्य 2: Postgres Primary Node विफलता (CloudNativePG)

CloudNativePG एक replica को primary में स्वचालित रूप से प्रमोट करता है।
एप्लिकेशन PgBouncer के माध्यम से पुनः कनेक्ट करते हैं — कनेक्शन स्ट्रिंग बदलने की आवश्यकता नहीं।

परिदृश्य 3: Snapshot से EBS Volume रिस्टोर


परिदृश्य 4: पूर्ण अवसंरचना पुनर्निर्माण

विनाशकारी विफलता या क्षेत्र के पुनर्निर्माण के बाद उपयोग किया जाता है।
अनुमानित RTO: पूर्ण क्लस्टर के लिए 30–60 मिनट; यदि EBS/CNPG डेटा रिस्टोर करना हो तो 60–120 मिनट।

परिदृश्य 5: Terragrunt स्टेट वापसी


अवलोकन और अलर्टिंग (SigNoz)

ENABLE_SIGNOZ=true होने पर, SigNoz monitoring namespace में तैनात होता है और प्रदान करता है:
  • सभी EKB सेवाओं के लिए वितरित tracing
  • k8s-infra DaemonSet agent के माध्यम से क्लस्टर मेट्रिक्स (CPU, मेमोरी, pod स्थिति)
  • सभी pods से लॉग एकत्रीकरण
  • अलर्टिंग — pod crash loops, उच्च त्रुटि दरों, या node दबाव पर सूचित करने के लिए SigNoz में अलर्ट नियम कॉन्फ़िगर करें
DR उद्देश्यों के लिए, SigNoz डैशबोर्ड घटना के बाद निदान और वसूली की पुष्टि करने का प्राथमिक उपकरण हैं। SigNoz डेटा स्वयं EBS PVs पर संग्रहीत है और EBS snapshot नीति के अंतर्गत आता है।

अंतराल और सिफारिशें