GH GambleHub

अराजकता इंजीनियरिंग: सिस्टम लचीलापन

अराजकता इंजीनियरिंग: सिस्टम लचीलापन

1) अराजकता क्यों इंजीनियरिंग

लक्ष्य उत्पादन वास्तुकला की स्थिरता को शब्दों और आरेखों द्वारा नहीं, बल्कि प्रयोगों द्वारा साबित करना है। हम जानबूझकर नियंत्रित विफलताओं का निर्माण कर

सिस्टम व्यवहार और मान्य SLO के बारे में परीक्षण परिकल्पना;

छिपे हुए SPOF, गलत टाइमआउट/रिट्रे, कैस्केडिंग प्रभाव का पता लगाएं;

ट्रेन टीमें: खेल-दिन, रनबुक, संचार का काम;

"सर्वश्रेष्ठ की उम्मीद करने" के बजाय "डिफ़ॉल्ट रूप से स्थिरता" संस्कृति बनाने के लिए

महत्वपूर्ण: अराजकता इंजीनियरिंग - "सब कुछ तोड़ दें। "यह एक वैज्ञानिक विधि है: स्थिर-राज्य → परिकल्पना → प्रयोग → निष्कर्ष → सुधार।

2) बुनियादी प्रयोग चक्र

1. स्थिर-राज्य (आधारभूत): कौन से एसएलआई स्थिर हैं? (उदाहरण के लिए, सफलता 99 पर ms। 95%).
2. परिकल्पना: एक AZ के नुकसान के साथ, p95 <10% बढ़ जाएगा, और उपलब्धता ≥99। 9%.

3. प्रयोग: सीमित विस्फोट त्रिज्या और स्टॉप मानदंड के साथ नियोजित बेईमानी।

4. अवलोकन: मैट्रिक्स/ट्रेल्स/लॉग, बर्न-रेट एसएलओ, बिजनेस एसएलआई (उदाहरण के लिए, सफल जमा)।

5. सुधार: हम रिकॉर्ड करते हैं, टाइमआउट/लिमिट/रूटिंग बदलते हैं, रनबुक को अपडेट करते हैं।

6. स्वचालन/प्रतिगमन: अनुसूची में दोहराएं, सीआई/सीडी और खेल-दिवसों के कैलेंडर में जोड़ें।

3) पहले सुरक्षा

विस्फोट त्रिज्या: एक संकीर्ण एक के साथ शुरू करें - एक फली/उदाहरण/मार्ग/नामस्थान।

गार्ड: SLO बर्न-रेट (फास्ट/स्लो), रिट्रे लिमिट, QPS लिमिट, इवेंट बजट के लिए अलर्ट।

मापदंड बंद करें: "यदि त्रुटि-दर> X% या p99> Y ms N मिनट - तुरंत बंद करें और रोलबैक करें।"

विंडोज: ऑन-कॉल काम के घंटे, अधिसूचित हितधारकों, जमे हुए रिलीज।

संचार: आईसी/टेक लीड/कॉम्स, क्लियर चैनल (वार-रूम), संदेश टेम्पलेट।

4) विफलता कक्षाएं और परिकल्पना विचार

नेटवर्क: देरी/जिटर/हानि, बंदरगाहों की आंशिक गिरावट, सेवाओं/पीएसपी के बीच "फ्लॉपिंग" संचार।

कंप्यूटर/नोड्स: हत्या प्रक्रियाएं, सीपीयू ओवरहीटिंग, फ़ाइल विवरणकर्ताओं की थकावट, संकीर्ण कनेक्शन पूल।

भंडारण और डेटाबेस: विलंबता डिस्क की वृद्धि, लैग प्रतिकृतियां, एक शार्ड/नेता, विभाजन-मस्तिष्क को रोकें।

निर्भरता: बाहरी एपीआई का क्षरण, प्रदाता सीमा, 5xx/429 फटना।

परिवर्तन प्रबंधन: असफल रिलीज, खराब सुविधा ध्वज, आंशिक रोलआउट।

परिधि: सीडीएन अपमानित, डीएनएस/एनीकास्ट बहाव, डब्ल्यूएएफ/बॉट सुरक्षा विफलता।

क्षेत्र/AZ: पूर्ण नुकसान या "आंशिक" घटना (थोड़ाबदतर और अप्रत्याशित)।

5) उपकरण और तकनीक

कुबर्नेट्स: कैओस मेश, लिटमस, Seal, क्यूब-बंदर।

बादल: AWS फॉल्ट इंजेक्शन सिम्युलेटर (FIS), बादलों के पास फॉल्ट डोमेन।

नेटवर्क/प्रॉक्सी: टॉक्सिप्रॉक्सी (टीसीपी जहर), टीसी/नेटेम, इप्टेबल्स, एनवॉय फॉल्ट (देरी/गर्भपात), इस्तियो फॉल्ट इंजेक्शन।

प्रक्रियाएं/नोड्स: 'स्ट्रेस-एनजी', सीग्रुप/सीपीयू-थ्रॉटल, डिस्क फिल।

ट्रैफिक रूटिंग: जीएसएलबी/डीएनएस वेट, नकली चेक के लिए कैनरी/ब्लू-ग्रीन स्विचिंग।

6) नमूना स्क्रिप्ट (कुबर्नेट्स)

6. 1 मार्ग पर देरी/गर्भपात (Istio VirtualService)

yaml apiVersion: networking. istio. io/v1alpha3 kind: VirtualService metadata: { name: api-chaos }
spec:
hosts: ["api. internal"]
http:
- route: [{ destination: { host: api-svc } }]
fault:
delay: { percentage: { value: 5 }, fixedDelay: 500ms }
abort: { percentage: { value: 1 }, httpStatus: 503 }

परिकल्पना: क्लाइंट टाइमआउट/रिट्रेज़और सीबी p95 <300 ms और त्रुटि-दर <0 रखेंगे। 5%.

6. 2 पॉड किल (अराजकता मेश)

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: PodChaos metadata: { name: kill-one-api }
spec:
action: pod-kill mode: one selector:
namespaces: ["prod"]
labelSelectors: { "app": "api" }
duration: "2m"

परिकल्पना: संतुलन और एचपीए p99> 20% की वृद्धि के बिना एक उदाहरण के नुकसान की भरपाई करते हैं।

6. 3 नेटवर्क अराजकता (डेटाबेस में देरी)

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: NetworkChaos metadata: { name: db-latency }
spec:
action: delay mode: all selector: { namespaces: ["prod"], labelSelectors: {"app":"payments"} }
delay: { latency: "120ms", jitter: "30ms", correlation: "25" }
direction: to target:
selector: { namespaces: ["prod"], labelSelectors: {"role":"db"} }
mode: all duration: "5m"

परिकल्पना: पूल/टाइमआउट/कैश प्रभाव को कम करेगा; p95 भुगतान ≤ SLO रहेगा।

6. 4 डिस्क भरना

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: IOChaos metadata: { name: disk-fill-logs }
spec:
action: fill mode: one selector: { labelSelectors: {"app":"ingest"} }
volumePath: /var/log size: "2Gi"
duration: "10m"

परिकल्पना: मार्गों के क्षरण से पहले लॉग/कोटा/अलर्ट का रोटेशन काम करेगा।

7) K8s के बाहर के प्रयोग

7. 1 Toxiproxy (स्थानीय/एकीकरण)

bash toxiproxy-cli create psp --listen 127. 0. 0. 1:9999 --upstream psp. prod:443 toxiproxy-cli toxic add psp -t latency -a latency=200 -a jitter=50 toxiproxy-cli toxic add psp -t timeout -a timeout=1000

7. 2 दूत HTTP गलती (परिधि/जाल)

yaml fault:
delay: { fixed_delay: 0. 3s, percentage: { numerator: 10, denominator: HUNDRED } }
abort: { http_status: 503, percentage: { numerator: 1, denominator: HUNDRED } }

7. 3 AWS FIS (उदाहरण विचार)

ऑटो स्केलिंग ग्रुप में "मार" एन% EC2 का प्रयोग करें, कृत्रिम रूप से EBS-विलंबता बढ़ाएं, एक AZ में NAT-GW को अक्षम करें।

CloudWatch SLO मैट्रिक्स के लिए बिल्ट-इन स्टॉप मानदंड।

8) अराजकता के दौरान अवलोकन मैट्रिक्स

SLO/SLI: अच्छे अनुरोधों का अंश, p95/p99, बर्न-रेट।

महत्वपूर्ण मार्गों के लिए RED मॉडल (दर, त्रुटियां, अवधि)।

पूल: p95 कनेक्शन के लिए इंतजार, उपयोग।

DB: लैग प्रतिकृतियाँ, ताले, बहाव p95 अनुरोध।

नेटवर्क: retransmitts, RTT, dscp/ecn व्यवहार।

व्यवसाय SLI: लेनदेन की सफलता (जमा/जाँच),% रिटर्न/त्रुटियाँ।

ट्रेसिंग: चयनात्मक ट्रेल्स (अनुकरणीय), रिलीज एनोटेशन का सहसंबंध।

9) एसएलओ/त्रुटि-बजट के साथ एकीकरण

गलतियों के बजट के भीतर योजना प्रयोग: अराजकता को तिमाही लक्ष्यों को "बाधित" नहीं करना चाहिए।

स्वचालित किल-स्विच के रूप में बर्न-रेट अलर्ट।

रिपोर्टिंग: "कितना बजट जल गया", "क्या विचलन स्थिर-राज्य।"

10) खेल-दिन (व्यायाम)

परिदृश्य: संक्षिप्त किंवदंती (उदा। "क्षेत्र-पूर्व खो गया"), इंजेक्शन कदम, एसएलओ लक्ष्य, भूमिकाएं, समय।

रेटिंग: आरटीओ/आरपीओ वास्तविक, संचार की गुणवत्ता, रनबुक शुद्धता।

रेट्रो: मालिकों और समय सीमा के साथ सुधार की सूची, अद्यतन दस्तावेज/डैशबोर्ड।

11) स्वचालन और सीआई/सीडी

स्मोक-अराजकता: प्रत्येक रिलीज पर छोटे मंचन परीक्षण (जैसे) 1 पॉड-किल + 200 एमएस प्रति मार्ग देरी)।

नाइटली/वीकली: रिपोर्ट के साथ भारी परिदृश्य (5-15 मिनट)।

प्रोमो गेट्स: यदि p95/त्रुटियां> कैनरी पर सीमा - ऑटो-रोलबैक।

प्रयोगों की एक सूची के साथ भंडार (YAML + रनबुक + SLO-thresholds)।

12) एंटी-पैटर्न

"रेलिंग के बिना भोजन तोड़ ना": कोई स्टॉप मानदंड नहीं, कोई ऑन-कॉल नहीं - एक वास्तविक घटना का जोखिम।

प्रक्रिया के बजाय एक बार की कार्रवाई।

स्थिर-राज्य के बिना अराजकता: यह स्पष्ट नहीं है कि सफलता/विफलता के रूप में क्या मायने रखता है।

देरी को इंजेक्ट करते समय अत्यधिक रिट्रेस - सेल्फ-डीडीओएस।

व्यापार SLI की अनदेखी: भुगतान/आदेश विफल होने पर "तकनीकी" सफलता।

विश्लेषण के बाद और सुधार के मालिकों की कमी।

13) कार्यान्वयन चेकलिस्ट (0-45 दिन)

0-10 दिन

स्थिर-राज्य SLI (उपयोगकर्ता + व्यवसाय) को परिभाषित करें।

एक उपकरण चुनें (कैओस मेश/लिटमस/टॉक्सिप्रॉक्सी/एफआईएस)।

रेलिंग का वर्णन करें: विस्फोट त्रिज्या, मानदंड, खिड़कियां, भूमिकाएं बंद करें।

11-25 दिन

पहले प्रयोग चलाएं: पॉड-किल, 100-200 एमएस प्रति क्रिटिकल अपस्ट्रीम में देरी, 1% पैकेट गिराएं।

बर्न-रेट अलर्ट कॉन्फ़िगर करें, स्टॉप-मानदंड के साथ किल-स्विच करें।

पहला गेम-डे बिताएं, रेट्रो और फिक्स इकट्ठा करें।

26-45 दिन

AZ स्तर/निर्भरता स्क्रिप्ट (बाहरी PSP, DB-lage) जोड़ें।

मंचन पर रात की अराजकता को स्वचालित करें; "मौसमी" परिदृश्य (चोटियों) तैयार करें।

प्रयोगों की सूची और प्रबंधन/एसआरई के लिए नियमित रिपोर्ट।

14) परिपक्वता मैट्रिक्स

≥80% महत्वपूर्ण मार्गों में वर्णित प्रयोग और स्थिर-राज्य मैट्रिक्स हैं।

P99/त्रुटि-दर थ्रेसहोल्ड से अधिक होने पर ऑटो किल-स्विच ट्रिगर किया जाता है।

त्रैमासिक - खेल-दिवस स्तर AZ/क्षेत्र; ≥1 टाइम्स/महीने - निर्भरता का लक्ष्य परिदृश्य।

सुधार के एक चक्र के बाद MTTR कम हो जाता है, "रिलीज ↔ घटना" सहसंबंध कम हो जाता है।

वास्तविक विफलताओं में "अप्रत्याशित" बूंदों का अनुपात - शून्य हो जाता है।

डैशबोर्ड केपीआई (बर्न-रेट, रिकवरी टाइम, सफल डीआर क्रियाओं का अनुपात) के रूप में "लचीलापन" दिखाते हैं।

15) रेलिंग और स्टॉप ट्रिगर के उदाहरण

यहाँ पर बंद करें: 'http _ req _ असफलता> 1%' 3 मिनट, 'p99> 1000 ms' 3 विंडो, 'जमा करें _ सफलता <99. 5%`.

ब्लास्ट त्रिज्या को कम करना: मैनिफेस्ट का ऑटो-रोलबैक, जीएसएलबी वेट की वापसी, गलती इंजेक्शन को अक्षम करना।

कमांड बंद करें: कारणों के लॉगिंग के साथ एकल बटन/स्क्रिप्ट।

16) संस्कृति और प्रक्रियाएं

अराजकता एसआरई लय का हिस्सा है, न कि "चरम"।

पारदर्शी रिपोर्टिंग, भेद्यता मान्यता, सुधारात्मक कार्रवाई।

ऑन-कॉल प्रशिक्षण, ग्राहकों/भागीदारों के साथ संचार का अनुकरण।

SLA/SLO और बजट के साथ जुड़ ना: अराजकता को बढ़ावा देना चाहिए, कमजोर नहीं, विश्वसनीयता।

17) निष्कर्ष

अराजकता इंजीनियरिंग "नाइन पर आशा" को सिद्ध स्थिरता में बदल देती है। स्थिर-राज्य तैयार करें, रेलिंग रखें, छोटे और नियंत्रित करें, एसएलओ और व्यवसाय एसएलआई का निरीक्षण करें, रिकॉर्ड और स्वचालित सुधार करें। तब वास्तविक विफलताएं नियंत्रित घटनाएं बन जाएंगी: पूर्वानुमानित आरटीओ, संरक्षित त्रुटि-बजट और टीम की घबराहट के बिना कार्य करने की इच्छा।

Contact

हमसे संपर्क करें

किसी भी प्रश्न या सहायता के लिए हमसे संपर्क करें।हम हमेशा मदद के लिए तैयार हैं!

इंटीग्रेशन शुरू करें

Email — अनिवार्य है। Telegram या WhatsApp — वैकल्पिक हैं।

आपका नाम वैकल्पिक
Email वैकल्पिक
विषय वैकल्पिक
संदेश वैकल्पिक
Telegram वैकल्पिक
@
अगर आप Telegram डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।