रिवर्स प्रॉक्सी और रूटिंग
1) रिवर्स प्रॉक्सी भूमिका
रिवर्स प्रॉक्सी - प्लेटफॉर्म की "फ्रंट लाइन": टीएलएस को स्वीकार करता है, अपस्ट्रीम के बीच यातायात वितरित करता है, सुरक्षा और प्रदर्शन नीतियों लक्ष्य न्यूनतम विलंबता, पूर्वानुमान योग्य मार्ग और अपमानजनक उदाहरणों/क्षेत्रों का त्वरित अलगाव है।
2) परतें और प्रोटोकॉल
L4: TCP/UDP प्रॉक्सी (SNI-आधारित TLS पासथ्रो, QUIC)। HTTP को समझे बिना कम कीमत।
L7: HTTP/1। 1-2-3, जीआरपीसी, वेबसॉकेट। समृद्ध रूटिंग (मेजबान, पथ, हेडर, कुकीज़), परिवर्तन और कैश।
TLS मॉडल: परिधि पर समाप्त करें (NGINX/Envoy), अंदर - mTLS/mesh। एसएनआई एक ही आईपी पर आभासी होस्ट की अनुमति देता है।
3) रूटिंग रणनीतियाँ (L7)
1. होस्ट-आधारित: डोमेन द्वारा ('api। ब्रांड। कॉम '→ क्लस्टर' ब्रांड-एपी ')।
2. पथ-आधारित: '/v1/भुगतान '→' भुगतान-svc ', '/v1/वॉलेट' → 'पर्स-svc'।
3. हेडर-आधारित: 'एक्स-रीजन: ईयू-सेंट्रल', 'एक्स-टेनेंट: 42', 'यूजर-एजेंट '/' स्वीकार करें'।
4. कुकी-आधारित: ए/बी परीक्षण, चिपचिपा सत्र।
5. भारित/कैनरी: नए संस्करण के लिए यातायात का प्रतिशत (1-5% → 100%)।
6. Geo/ASN: देश/ASN द्वारा निकटतम POP/क्षेत्र को भेजा गया।
7. सुसंगत हैशिंग: एक उदाहरण के लिए एक कुंजी (user_id/tenant_id) बांधना → कैश इलाके/चिपचिपाहट।
8. छाया/मिररिंग: प्रतिक्रिया (प्रतिगमन परीक्षणों के लिए) को प्रभावित किए बिना "छाया" ऊपर की ओर यातायात की नकल करें।
4) संतुलन और दोष सहिष्णुता
एल्गोरिदम: राउंड-रॉबिन, कम से कम-अनुरोध, यादृच्छिक, रिंग-हैश (सुसंगत)।
स्वास्थ्य-जांच: सक्रिय (HTTP/TCP) + निष्क्रिय (कोड/टाइमआउट द्वारा)।
बाहरी इजेक्शन: अस्थायी रूप से बढ़ी हुई त्रुटि/विलंबता के साथ एक मेजबान को "नॉक आउट" करें।
रिट्रीज़: प्रति-कोशिश टाइमआउट और जिटर के साथ सीमित; बिना पहचान के असुरक्षित तरीकों को वापस न लें।
कनेक्शन पूलिंग: गर्म पूल को ऊपर की ओर रखें, उच्च को सीमित करें।
5) परिधि प्रदर्शन
कैचिंग: कुंजी द्वारा (विधि + होस्ट + पथ + वैरी), 'ETag/if-None-Match' स्थितियां, TTL और बासी-जबकि-पुनर्नवीनीकरण।
संपीडनः पाठ प्रतिक्रियाओं के लिए brotli/gzip।
HTTP/2/3: मल्टीप्लेक्सिंग, हेडर-कम्प्रेशन; WAF/IDS संगतता सत्यापित करें।
कोलसिंग का अनुरोध करें - एक ही कैश कुंजी के लिए समवर्ती अनुरोध समाप्त करें।
6) प्रॉक्सी पर सुरक्षा
टीएलएस: 1। 2 + (1 से बेहतर। 3), OCSP स्टेपलिंग, HSTS।
WAF/बॉट फिल्टर: ऐप पर रूटिंग से पहले।
CORS/CSP/Fetch-Metadata: नीतियों के अनुसार।
हेडर- гигиена: 'एक्स-फॉरवर्ड-फॉर/प्रोटो', 'फॉरवर्ड', 'ट्रेसपेरेंट'; हेडर-इंजेक्शन और ओवरसाइज़सुरक्षा।
बॉडी/हेडर की सीमा: डॉस पैटर्न के लिए शुरुआती 413/431।
साझेदार एकीकरण और आंतरिक एपीआई के लिए एमटीएलएस।
7) तैनात योजनाएं: कैनरी/ब्लू-ग्रीन/संस्करण
भारित मार्ग - स्तर -7 (1%, 5%, 25%, 50%, 100%)।
हेडर गेट: फ्लैग/हेडर (आंतरिक/परीक्षण) द्वारा सुविधा सक्षम करें.
ब्लू-ग्रीन: फुल डीएनएस/रूट स्विचिंग, फास्ट रोलबैक।
छाया: मेट्रिक्स/लॉग के प्रवेश के साथ नए संस्करण का समानांतर रन।
8) स्टिकी सत्र और हैश रूटिंग
कुकी-चिपचिपाहट ('सेट-कुकी: SRV = Shard-a; पथ =/; स्टेटफुल लोड के लिए Httponly ')।
रिंग-हैश/' user _ id/tenant _ id 'द्वारा सुसंगत - कैश क्रॉस-अक्षमताओं को कम करें।
सावधानी: राइट-लोड के लिए "अनन्त" चिपचिपाहट से बचें - हॉट-स्पॉट; कोटा किरायेदार का उपयोग करें।
9) क्षेत्रीय और भू-मार्ग
निकटतम POP का चयन करने के लिए Anycast + geo-DNS।
परीक्षण और डिबगिंग के लिए हेडर-ओवरराइड (उदाहरण के लिए, 'एक्स-रीजन')।
कानूनी रूप से आवश्यक डेटा स्थानीयकरण (क्षेत्र/क्षेत्राधिकार द्वारा मार्ग) के साथ समन्वय
10) अवलोकन और नियंत्रण
RED मेट्रिक्स: RPS, त्रुटि-दर (वर्ग द्वारा), विलंबता p95/p99 प्रति-मार्ग/क्लस्टर।
बाहरी/स्वास्थ्य: संपादन/पुनरावृत्ति की संख्या, धीमी गति से कॉल-दर।
लॉग: पीआईआई के बिना संरचित; सहसंबंध 'ट्रेस _ आईडी '/' स्पैन _ आईडी'।
ट्रेसिंग (ओटीएल): स्पैन्स ingress→router→upstream; p99 रेखांकन पर अनुकरणीय।
11) कॉन्फ़िगरेशन उदाहरण
11. 1 NGINX: मेजबान/पथ/भारित + кэш
nginx map $http_x_canary $canary { default 0; "1" 1; }
upstream app_v1 { least_conn; server 10. 0. 0. 1:8080 max_fails=3 fail_timeout=10s; }
upstream app_v2 { least_conn; server 10. 0. 0. 2:8080; }
server {
listen 443 ssl http2;
server_name api. example. com;
Кэш proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=apicache:256m max_size=10g inactive=10m use_temp_path=off;
location /v1/ {
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Request-ID $request_id;
proxy_read_timeout 300ms; proxy_connect_timeout 100ms;
Weighted: 5% on v2 if canary = 1, otherwise 0%
set $backend app_v1;
if ($canary) { set $backend app_v2; }
proxy_pass http://$backend;
}
Static with cache location/assets/{
proxy_cache apicache;
proxy_cache_valid 200 10m;
add_header Cache-Control "public, max-age=600";
proxy_pass http://static_cluster;
}
}
11. 2 दूत: हेडर-रूटिंग, कैनरी, आउटलेयर-इजेक्शन, मिररिंग
yaml static_resources:
clusters:
- name: svc_v1 type: STRICT_DNS lb_policy: LEAST_REQUEST outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50
- name: svc_v2 type: STRICT_DNS lb_policy: LEAST_REQUEST
- name: mirror_svc type: STRICT_DNS
listeners:
- name: https filter_chains:
- filters:
- name: envoy. filters. network. http_connection_manager typed_config:
route_config:
virtual_hosts:
- name: api domains: ["api. example. com"]
routes:
- match:
prefix: "/v1"
headers:
- name: "X-Region"
exact_match: "eu"
route:
cluster: svc_v1 timeout: 350ms retry_policy:
retry_on: connect-failure,reset,5xx num_retries: 1 per_try_timeout: 200ms request_mirror_policies:
- cluster: mirror_svc runtime_key: mirror. enabled
- match: { prefix: "/v1" }
route:
weighted_clusters:
clusters:
- name: svc_v1 weight: 95
- name: svc_v2 weight: 5
11. 3 ट्रेफिक: नियम + मिडिलवेयर
yaml http:
routers:
api:
rule: "Host(`api. example. com`) && PathPrefix(`/v1`)"
service: svc middlewares: [hsts, compress]
middlewares:
hsts:
headers:
stsSeconds: 31536000 stsIncludeSubdomains: true compress:
compress: {}
services:
svc:
weighted:
services:
- name: v1 weight: 95
- name: v2 weight: 5
11. 4 कुबर्नेट्स: कैनरी के लिए इंग्रेस + घोषणापत्र (NGINX इंग्रेस)
yaml apiVersion: networking. k8s. io/v1 kind: Ingress metadata:
name: api annotations:
nginx. ingress. kubernetes. io/canary: "true"
nginx. ingress. kubernetes. io/canary-weight: "5"
spec:
rules:
- host: api. example. com http:
paths:
- path: /v1 pathType: Prefix backend:
service:
name: svc-v1 port: { number: 8080 }
12) परिवर्तन और संगतता
हेडर/रास्तों का सामान्यीकरण, 'स्थान' जनगणना, 'कैश-नियंत्रण' नियंत्रण।
gRPC ↔ HTTP/JSON अनुवादकों के माध्यम से (grpc-json-transcoder)।
WebSocket/HTTP2 उन्नयन - सुनिश्चित करें कि प्रॉक्सी 'अपग्रेड '/' कनेक्शन' छोड़ रहा है।
13) परीक्षण और अराजकता परिदृश्य
लोडिंग: फटता है, लंबा पठार, "लंबा" शरीर (धीमी गति से POST)।
अपस्ट्रीम के लिए विलंब/हानि इंजेक्शन → पुनः प्राप्त/समय समाप्ति/बाहरी जांच।
कैनरी मैट्रिक्स: p95/p99, नए संस्करण बनाम पुराने की त्रुटि-दर; SLO द्वारा स्वचालित रोलबैक।
छाया: प्रतिक्रियाओं (नमूना) और साइड-बाय-साइड तर्क की तुलना।
14) एंटीपैटर्न
पहचान और समय सीमा को छोड़ कर वैश्विक रिट्रीट - युगल और तूफान।
गर्म शार्क नियंत्रण के बिना चिपचिपा सत्र - लोड तिरछा।
पूल में स्वास्थ्य-जांच/बाहरी-अस्वीकृति की कमी - "सड़ाहुआ" उदाहरण।
असीमित हेडर/निकाय - सबसे सरल डॉस।
स्कीमा संस्करण के बिना परिवर्तन और सुरक्षा को मिलाना → अप्रत्याशित प्रतिगमन।
'वैरी' के बिना एक एकल वैश्विक कुंजी कैश - गलत प्रतिक्रियाएं।
15) आईगेमिंग/वित्त की विशिष्टताएं
क्षेत्रीयता: खिलाड़ी/ब्रांड अधिकार क्षेत्र द्वारा मार् भुगतान क्षेत्रों का अलगाव।
महत्वपूर्ण मार्ग (जमा/आउटपुट): कम समय, एक पुनरावृत्ति, पहचान; व्यक्तिगत समूह।
PSP/KYC: समर्पित अपस्ट्रीम पूल, सख्त रीट्री/टाइमआउट नीतियां, सर्किट-ब्रेकर, जियो-पिन।
एबी चैनल: केवल पढ़ ने के रास्ते के लिए भुगतान/सीमा के साथ सुरक्षित प्रयोग; झंडे और छोटे प्रतिशत के माध्यम से लिखें।
16) प्रोड रेडीनेस चेकलिस्ट
- टीएलएस 1। 2+/1. 3, OCSP स्टेपलिंग, HSTS; सही 'X-Forward-'।
- स्पष्ट रूटिंग नियम: मेजबान/पथ/हेडर/कुकी; प्रलेखन।
- स्वास्थ्य-जांच, बाहरी-इजेक्शन, प्रति-कोशिश समय, प्रतिबंधित रिट्रे।
- भारित/कैनरी + छाया; एसएलओ/अलर्ट द्वारा ऑटो-रोलबैक।
- कैश/संपीड़न/ETag; शरीर/हेडर सीमा; अनुरोध colessing।
- 'ट्रेस _ आईडी' के साथ लॉग/ट्रेल्स; RED + बाहरी/स्वास्थ्य मैट्रिक्स; डैशबोर्ड प्रति-मार्ग/क्लस्टर।
- WAF/बॉट फिल्टर/CORS; ओवरसाइज़और धीमी गति से POST सुरक्षा।
- स्टिकी/सुसंगत हैशिंग जहां जरूरत है; हॉट-शार्ड नियंत्रण।
- कॉन्फ़िग बहुत लंबवत हैं, पलायन सुरक्षित हैं, केएमएस/वॉल्ट में रहस्य हैं।
17) टीएल; डीआर
होस्ट/पाथ/हेडर/कुकी के माध्यम से परिधि और L7 के लिए मार्ग पर TLS को समाप्त करें। रिलीज के लिए - भारित कैनरी और छाया; स्थिरता के लिए - स्वास्थ्य-जांच, बाहरी-इजेक्शन, प्रति-कोशिश समय के साथ सीमित रेट्रीज़। कैश, संपीड़न और सुसंगत हैशिंग का उपयोग करें जहां यह p95 में सुधार करता है। माप RED सिग्नल और क्लस्टर स्थिति, WAF और आकार सीमाएं। महत्वपूर्ण भुगतान मार्गों के लिए - अलग समूह, लघु एसएलए और रेट्रास/पहचान का सख्त प्रबंधन।