तैनाती निर्देशों के लिए, 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 टेबल
terragrunt apply पुनः चलाएँ।
RPO: प्रत्येक terragrunt apply कमिट — लगातार।
2. EBS स्थायी volumes — AWS Data Lifecycle Manager
क्या बैकअप लिया जाता है: pods से जुड़े EBS volumes (Automator PostgreSQL, Supabase MinIO, कोई भी स्टेटफुल वर्कलोड)। कार्यान्वयन: वातावरण टैग्स को लक्षित करने वाली AWS Data Lifecycle Manager (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 में कॉन्फ़िगर):
4. ElastiCache Redis — Multi-AZ रिप्लिकेशन
लागू:ENABLE_AWS_SERVICES=true वाले वातावरण।
Redis प्राथमिक डेटा स्टोर नहीं है — यह अस्थायी कैश और सत्र डेटा रखता है। DR का ध्यान बैकअप/रिस्टोर की तुलना में तेज़ failover पर है।
कार्यान्वयन:
- स्वचालित failover के साथ Multi-AZ सक्षम
- रेस्ट और ट्रांज़िट में एन्क्रिप्शन
- प्राथमिक node विफलता स्वचालित रूप से replica को प्रमोट करती है (< 1 मिनट)
5. Amazon MQ (RabbitMQ) — मैसेज क्यू
लागू:ENABLE_AWS_SERVICES=true वाले वातावरण।
कार्यान्वयन:
- सिंगल-इंस्टैंस (डिफ़ॉल्ट) या active/standby तैनाती
- broker पुनरारंभ के दौरान in-flight संदेश खो सकते हैं; consumers को idempotent बनाएँ
- Management UI पोर्ट 15671 (SSL) पर उपलब्ध
स्वतः वसूली तंत्र
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 में स्वचालित रूप से प्रमोट करता है।परिदृश्य 3: Snapshot से EBS Volume रिस्टोर
परिदृश्य 4: पूर्ण अवसंरचना पुनर्निर्माण
विनाशकारी विफलता या क्षेत्र के पुनर्निर्माण के बाद उपयोग किया जाता है।परिदृश्य 5: Terragrunt स्टेट वापसी
अवलोकन और अलर्टिंग (SigNoz)
ENABLE_SIGNOZ=true होने पर, SigNoz monitoring namespace में तैनात होता है और प्रदान करता है:
- सभी EKB सेवाओं के लिए वितरित tracing
- k8s-infra DaemonSet agent के माध्यम से क्लस्टर मेट्रिक्स (CPU, मेमोरी, pod स्थिति)
- सभी pods से लॉग एकत्रीकरण
- अलर्टिंग — pod crash loops, उच्च त्रुटि दरों, या node दबाव पर सूचित करने के लिए SigNoz में अलर्ट नियम कॉन्फ़िगर करें