संतुलन लोड करें
1) वास्तुकला में यह क्यों और कहां है
संतुलन ग्राहक और बैकएंड बेड़े के बीच एक "टर्नस्टाइल" है। इसके उद्देश्य हैं:- उपलब्धता (विफलता के एक बिंदु के बिना), विलंबता (p95 डाउन), स्केल (क्षैतिज), सुरक्षा (टीएलएस/डब्ल्यूएएफ), रिलीज प्रबंधनीयता (कैनरी/ब्लू-ग्रीन)।
- एज/ग्लोबल: Anycast, GSLB/GeoDNS, CDN/Edge-LB, DDoS।
- L4 (TCP/UDP): NLB, maglev, प्रॉक्सी बिना समाप्ति के।
- L7 (HTTP/2, gRPC, WebSocket, QUIC): पथ मार्ग/हेडर/टिकट, कैश/संपीड़न/रिट्रेज़।
- डेटा-टियर: DB- (Pgbouncer/ProxySQL), Redis Cluster/सुसंगत हैश, काफ्का विभाजन।
2) संतुलन मॉडल और एल्गोरिदम
राउंड-रॉबिन (आरआर): सरल वर्दी।
कम से कम कनेक्शन (LC): लंबे कनेक्शन (WS, gRPC) के लिए अच्छा है।
कम से कम अनुरोध/पावर-ऑफ-टू (P2C): दो यादृच्छिक लोगों की तुलना करना एक अच्छी गति/गुणवत्ता संतुलन है।
भारित आरआर/एलसी: कैनरी/हॉट नोड्स के लिए वजन।
सुसंगत हैशिंग (CH): सत्र चिपचिपाहट बिना टेबल (गाड़ी, रेडिस)।
मैगलेव/फ्लो-हैश: फ्लैपिंग प्रतिरोध के साथ तेज L3/L4 वितरण।
विलंबता-जागरूक: p50/p95 स्लाइडिंग द्वारा चयन।
EWMA: देरी के इतिहास को ध्यान में रखता है।
सिफारिश: L7 पर डिफ़ॉल्ट P2C (कम से कम-अनुरोध) द्वारा; स्टेटफुल/कैश के लिए - सुसंगत हैश; для WS/gRPC - कम से कम कनेक्शन।
3) अपस्ट्रीम स्वास्थ्य: चेक और "निष्कासन"
स्वास्थ्य-जांच: TCP, HTTP 200/匹配 тела, gRPC स्थिति; अंतराल/समय सीमा/त्रुटि सीमा।
आउटलियर इजेक्शन: "शोर" उदाहरणों का स्वचालित बहिष्करण (अनुक्रमिक-5xx, सफलता-दर-अस्वीकृति)।
धीमी गति से शुरू और वार्मअप: नए उदाहरणों की नरम प्रविष्टि (क्रमिक वजन वृद्धि)।
कनेक्शन जल निकासी: जब बंद/रीसेट - बिना रुकावट के सक्रिय कनेक्शन का "टॉपिंग अप"।
4) सत्र और चिपचिपाहट (चिपचिपाहट)
कुकी-चिपचिपाहट (L7): 'सेट-कुकी: lb =
कुंजी द्वारा सीएच: 'हैश (userId' cartId 'cartId)।
आईपी-हैश - केवल बंद नेटवर्क (एनएटी ब्रेक) में।
नोडल निष्कासन में टीटीएल स्टिकनेस + फॉलबैक।
महत्वपूर्ण: चिपचिपाहट की आवश्यकता को कम से कम करें - उदाहरण के बाहर राज्य को संग्रहीत करें (Redis/DB/JWT)।
5) ग्लोबल बैलेंसिंग (जीटीएम/जीएसएलबी)
Anycast + स्वास्थ्य-जांच: एक आईपी, निकटतम पीओपी के लिए यातायात; स्वचालित feilover।
जियोडीएनएस/लेटेंसी-डीएनएस: जियो/लेटेंसी रिस्पांस।
क्षेत्रीय समूह: "निवासी डेटा" क्षेत्र में रहता है (GDPR); प्रतिकृति के साथ अंतःक्षेत्रीय विफलता।
राजनेता: भू-ब्लॉक, खाते/टोकन द्वारा "स्टिकरगियन"।
6) प्रोटोकॉल और सुविधाएँ
HTTP/2: मल्टीप्लेक्स, प्राथमिकताएं; अपस्ट्रीम के लिए एक सक्षम कनेक्शन-पूल की आवश्यकता है
gRPC: लंबे समय तक रहने वाली धाराएँ - कम से कम कनेक्शन, आक्रामक स्वास्थ्य-जांच।
WebSocket/SSE: कनेक्शन पर चिपचिपाहट, बड़े निष्क्रिय समय, टीसीपी रखना-जीवित।
QUIC/HTTP/3: तेजी से शुरुआत, नुकसान का प्रतिरोध; MTU/patch-MTU की निगरानी करें।
TLS-समाप्ति/mTLS: edge/L7-LB पर समाप्त करें; मौखिक mTLS/पहचान (SPIFFE)।
7) ओवरलोड नियंत्रण
दर-सीमा: प्रति-आईपी, प्रति-कुंजी, प्रति-मार्ग; फट + बनाए रखना।
अनुकूली समवर्ती (दूत) - एक साथ अनुरोधों की गतिशील सीमा।
कतार/सर्ज-बफर: उचित इनकार 503 के साथ सीमित कतार का आकार।
हेजिंग/समानांतर रेसिंग: धीमी प्रश्नों की नकल करना (केवल पहचान)।
समय समाप्ति बजट: अलग कनेक्ट/पढ़ें/लिखें।
बैकप्रेशर: '503 + रेट्री-आफ्टर', जिटर क्लाइंट घातीय रिट्रीस।
धीमी गति से लोरिस सुरक्षा: पढ़ें/लिखें, न्यूनतम गति।
8) रिलीज और यातायात प्रबंधन
कैनरी (भारित): 1-5-10-25-50-100% रेलिंग (p95, 5xx, टाइमआउट)।
ब्लू-ग्रीन: तत्काल स्विच, रोलबैक - डीएनएस/एलबी।
छाया/दर्पण: प्रतिक्रिया को प्रभावित किए बिना अनुरोधों की प्रति; पीआईआई मास्किंग।
हेडर/क्लेम-रूटिंग: 'एक्स-कैनरी: 1' или 'JWT। दावे। क्षेत्र/भूमिका '।
9) स्वचालन और जल निकासी
HPA/ASG по CPU + RPS + p95 + कतार-गहराई।
प्रीस्टॉप हुक: कनेक्शन पूरा होने का इंतजार करें।
वार्म पूल/उदाहरण पुन: उपयोग: ठंड को छोटा करना शुरू होता है।
क्षमता नियोजन: p95 पर लक्ष्य '60-70% का उपयोग' सामान्य है।
10) अवलोकन और एसएलओ
LB मेट्रिक्स: RPS, p50/p95/p99, 4xx/5xx, ओपन-कनेक्शन, कतार-लेन, इजेक्शन, रिट्रीज, हिट-अनुपात कैश।
ट्रेसिंग: LB services databases के माध्यम से 'traceparent/x-requess-id'।
लॉग: संरचनात्मक, पीआईआई/पैन मास्क, ऊपर की ओर सहसंबंध।
रूट SLO: उदाहरण के लिए, 'विलंबता p95 ≤ 300 ms', 'उपलब्धता ≥ 99। 9% ',' 5xx ≤ 0। 5%`.
अलर्ट: विचलन (बर्न-रेट एसएलओ, इजेक्शन सर्ज, 5xx/टाइमआउट ग्रोथ) द्वारा।
11) डेटा और कैश को संतुलित करना
PostgreSQL/MySQL:- पढ़ें/लिखें विभाजन (ProxySQL/pgpool) + पठन-प्रतिकृतियाँ; चिपचिपा txn।
- विफल: RPO = 0 (अधिक महंगा) के लिए तुल्यकालिक प्रतिकृति।
- रेडिस क्लस्टर + हैश-स्लॉट; सत्रों के लिए - सीएच; टाइमआउट/रिट्रीबल त्रुटियां।
- विभाजन और उपभोक्ता-समूहों के माध्यम से संतुलन; HTTP-LB के साथ भ्रमित नहीं होना।
- वस्तु भंडारण (S3/MinIO): बहु-क्षेत्र विफल через GSLB/प्रतिकृति।
12) K8s और क्लाउड एलबी
सेवा (ClusterIP/NodePort/LoadBalancer) - आधार L4।
इंग्रेस/गेटवे एपीआई - एल 7 रूटिंग, कैनरी वेट, टीएलएस।
AWS: NLB (L4, हाई बैंडविड्थ), ALB (L7, WAF, चिपचिपा, हेडर-रूटिंग)।
GCP: ग्लोबल LB (L7/HTTP (S) с Anycast), TCP/UDP प्रॉक्सी LB।
Azure: फ्रंट डोर (वैश्विक), एप्लिकेशन गेटवे (L7), लोड बैलेंसर (L4)।
13) कॉन्फ़िगरेशन उदाहरण
13. 1 NGINX (L7, least_conn, चिपचिपा, कैनरी)
nginx upstream api_pool {
least_conn;
server api-1:8080 max_fails=3 fail_timeout=10s;
server api-2:8080 max_fails=3 fail_timeout=10s;
sticky cookie lb_id expires=30m path=/ secure httponly;
}
map $http_x_canary $dst {
default api_pool;
1 canary_pool;
}
upstream canary_pool {
least_conn;
server api-canary:8080 weight=1;
}
server {
listen 443 ssl http2;
location /api/ {
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_set_header X-Request-Id $request_id;
proxy_pass http://$dst;
}
}
13. 2 HAProxy (P2C, स्वास्थ्य, धीमी गति, छड़ी-तालिका)
haproxy backend api balance leastconn option httpchk GET /health default-server inter 3s fall 3 rise 2 slowstart 10s server s1 10. 0. 0. 11:8080 check server s2 10. 0. 0. 12:8080 check stick-table type ip size 100k expire 30m http-request track-sc0 src rate limit per IP http-request deny deny_status 429 if { sc_http_req_rate(0) gt 50 }
13. 3 दूत (P2C, बाहरी, पुनर्प्राप्ति, अनुकूली संगति)
yaml load_assignment: {... }
lb_policy: LEAST_REQUEST least_request_lb_config: { choice_count: 2 }
outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s typed_extension_protocol_options:
envoy. extensions. filters. http. adaptive_concurrency. v3. AdaptiveConcurrency:
gradient_controller_config:
sample_aggregate_percentile: PERCENTILE_50 retry_policy:
retry_on: "5xx,reset,connect-failure"
num_retries: 2 per_try_timeout: 1s
13. 4 कुबर्नेट्स (गेटवे एपीआई, भारित कैनरी)
yaml apiVersion: gateway. networking. k8s. io/v1 kind: HTTPRoute spec:
rules:
- matches: [{ path: { type: PathPrefix, value: /api }}]
backendRefs:
- name: api-v1 weight: 90 port: 8080
- name: api-v2-canary weight: 10 port: 8080
14) चेकलिस्ट
एलबी/रूट रिलीज से पहले
- एल्गोरिथ्म यातायात प्रकार के लिए चयनित (P2C/LC/CH)।
- स्वास्थ्य-जांच और इजेक्शन थ्रेसहोल्ड कॉन्फ़िगर किए गए हैं।
- धीमी गति से शुरू, वार्मअप, कनेक्शन-ड्रेन सक्षम।
- टीएलएस/एमटीएलएस, एचएसटीएस, सुरक्षित सिफर; HTTP/2/3 यदि आवश्यक हो।
- स्टिकी/सीएच केवल यदि आवश्यक हो; टीटीएल и फॉलबैक।
- दर-सीमा/फट, टाइमआउट, रीट्री-बजट, अनुकूली संगति।
- लॉग/ट्रेल्स: 'ट्रेस-आईडी' फेंका गया है; पीआईआई मास्किंग।
- SLO/अलर्ट p95/5xx/चुनाव/कतार-लेन द्वारा।
- कैनरी भार + रोलबैक योजना; बड़े परिवर्तनों के साथ छाया।
भुगतान/अनुपालन मार्गों के लिए
- Idempotency-Key।
- पीएसपी के बीच विफलता; समान विधि की जाँच।
- त्रुटि कोड सामान्यीकृत हैं; प्रति ग्राहक ईटीए/कारण।
डीबी/कैश के लिए
- आरडब्ल्यू-स्प्लिट/प्रतिकृतियाँ; टाइमआउट, नेटवर्क रीट्री।
- रेडिस के लिए सीएच/स्लॉट-हैश; "हॉट कीज़" के खिलाफ सुरक्षा।
- विलंबता निगरानी और प्रतिकृति-अंतराल।
15) गुणवत्ता मैट्रिक्स (न्यूनतम)
मार्ग/विधि द्वारा लेटेंसी p50/p95/p99।
त्रुटि दर 4xx/5xx, टाइमआउट/ओवरफ्लो।
खोलें/सक्रिय कनेक्शन, कतार गहराई, पुनः गणना.
बाहरी बेदखली और कारण।
स्टिकी हिट-अनुपात/कैश हिट-अनुपात।
GSLB: क्षेत्रीय वितरण, faylovers, PoP उपलब्धता।
16) एंटी-पैटर्न
एक असुरक्षित अखंड एलबी।
राज्य को बाहर निकालने के बजाय स्टिकी सत्र "सब कुछ के लिए"।
वैश्विक अनंत कतारें (समस्या को छिपाएं, p99 बढ़ें)।
बिना जिटर/बजट के रेट्राई अनुरोधों का "तूफान" है।
ट्रस्ट 'एक्स-फॉरवर्ड-फॉर' विथआउट विश्वसनीय प्रॉक्सी की एक सूची।
कमी के दौरान नाली की कमी → WS/gRPC टूट जाता है।
ऑटोस्केल होने पर लंबे समय तक जीवित कनेक्शन को ध्यान में रखने में विफलता।
17) iGaming विशिष्टता
चोटियों और टूर्नामेंट: निर्देशिका/लिस्टिंग (1-5 एस) पर माइक्रो-कैश, बदले में ऑटो-स्केल।
लाइव गेम/स्ट्रीम: लंबे कनेक्शन के लिए एलसी, निकटतम पीओपी की प्राथमिकता।
भुगतान: भू/मुद्रा/राशि/प्रदाता मार्ग; सख्त समय और पहचान।
जिम्मेदार खेल और अनुपालन: गिरावट के साथ भी सीमा/ताले के लिए अनुरोधों को छोड़ ने की प्राथमिकता (नीति द्वारा विफल-खुला/बंद)।
18) कार्यान्वयन प्रक्रिया (4 स्प्रिंट)
1. ट्रैफिक मैप: प्रोटोकॉल, p95/p99 लोड, महत्वपूर्ण मार्ग।
2. एलबी कॉन्फ़िगरेशन: एल्गोरिदम, स्वास्थ्य/बाहरी, टीएलएस, सीमा/समय, अवलोकन।
3. GSLB/Edge: Anycast/GeoDNS, PoP समर्थन, क्षेत्रीय डेटा नीतियां।
4. रिलीज की रणनीति: कैनरी/छाया, एसएलओ अलर्ट, ऑटोस्केल + नाली, घटना के बाद का विश्लेषण।
अंतिम धोखा पत्र
ट्रैफिक (P2C/LC/CH) के प्रकार और कनेक्शन की अवधि के लिए एक एल्गोरिथ्म चुनें।
अपनी अपस्ट्रीम "स्वस्थ" रखें: स्वास्थ्य-जांच + बाहरी + धीमी गति से शुरू + नाली।
पीक लोड का प्रबंधन करें: दर-सीमा, अनुकूली संगति, विफलता के साथ कतारें।
क्षेत्र द्वारा वैश्विक उपलब्धता और अनुपालन के लिए GSLB/Anycast का उपयोग करें।
अवलोकन और एसएलओ अनिवार्य हैं; रिलीज - रोलबैक प्लान के साथ कैनरी/छाया के माध्यम से।
जहां संभव हो, उदाहरणों से सत्र हटा दें और एलबी से चिपचिपाहट करें।