Αντίστροφη διαμεσολάβηση και δρομολόγηση
1) Αντίστροφος ρόλος πληρεξουσίου
Αντίστροφη πληρεξούσια - η «εμπρόσθια γραμμή» της πλατφόρμας: δέχεται TLS, κατανέμει την κίνηση μεταξύ ανάντη, εφαρμόζει πολιτικές ασφάλειας και επιδόσεων. Στόχος είναι η ελάχιστη καθυστέρηση, η προβλέψιμη διαδρομή και η γρήγορη απομόνωση των υποβαθμιστικών περιπτώσεων/ζωνών.
2) Στρώματα και πρωτόκολλα
L4: πληρεξούσιος TCP/UDP (TLS με βάση το SNI, QUIC). Χαμηλή τιμή, χωρίς κατανόηση HTTP.
L7: HTTP/1. 1-2-3, gRPC, WebSocket. Πλούσια δρομολόγηση (ξενιστής, μονοπάτι, κεφαλίδες, cookies), μετασχηματισμοί και κρύπτες.
Μοντέλο TLS: τερματίζεται στην περίμετρο (NGINX/απεσταλμένος), εντός - mTLS/πλέγμα. Το SNI επιτρέπει εικονικούς ξενιστές στο ίδιο IP.
3) Στρατηγικές δρομολόγησης (L7)
1. Host-based: by domain ('api. μάρκα. com "→ cluster" brand-api ").
2. Βάσει διαδρομής: '/v1/πληρωμές '→' πληρωμές-svc ', '/v1/πορτοφόλια' → 'πορτοφόλια-svc'.
3. Κεφαλίδα: 'X-Region: eu-central', 'X-Tenant: 42', 'User-Agent '/' Accept'.
4. Cookie-based: A/B tests, sticky sessions.
5. Σταθμισμένη/Κανάριος: ποσοστό κυκλοφορίας στη νέα έκδοση (1-5% → 100%).
6. Geo/ASN: ανά χώρα/ASN που αποστέλλεται στην πλησιέστερη POP/περιοχή.
7. Συνεπής hashing: σύνδεση ενός κλειδιού (user_id/tenant_id) σε μια περίπτωση → cache locality/stickiness.
8. Σκιά/Mirroring: αντιγραφή της κίνησης στην «σκιά» ανάντη χωρίς να επηρεάζεται η απόκριση (για δοκιμές παλινδρόμησης).
4) Εξισορρόπηση και ανοχή βλάβης
Αλγόριθμοι: στρογγυλή ρομπότ, ελάχιστο αίτημα, τυχαία, δακτυλιο- hash (συνεπής).
Έλεγχοι υγείας: ενεργοί (HTTP/TCP) + παθητικοί (με κωδικούς/χρονοδιαγράμματα).
Εξώτερη εκτόξευση: προσωρινά «χτυπήστε» έναν ξενιστή με αυξημένο σφάλμα/καθυστέρηση.
Επαναλήψεις: περιορισμένες, με χρονοδιάγραμμα ανά δοκιμή και νευρικότητα. να μην ανακαλούν μη ασφαλείς μεθόδους χωρίς ιδεατότητα.
Συγκέντρωση σύνδεσης: διατήρηση θερμών δεξαμενών στα ανάντη, περιορισμός των υψηλών επιπέδων.
5) Επιδόσεις περιμέτρου
Caching: ανά κλειδί (μέθοδος + host + διαδρομή + Vary), 'ETag/If-No-Match' συνθήκες, TTL και stale-while-revalidate.
Συμπίεση: brotli/gzip για απαντήσεις κειμένου.
: πολλαπλοποίηση, συμπίεση κεφαλής· Επαλήθευση της συμβατότητας WAF/IDS.
Αίτημα συνένωσης - Κατάρρευση ταυτόχρονων αιτημάτων για το ίδιο κλειδί κρυφής μνήμης.
6) Ασφάλεια του πληρεξουσίου
TLS: 1. 2 + (καλύτερα από 1. 3), συρραφή OCSP, HSTS.
Φίλτρα WAF/bot: πριν από τη διαδρομή στην εφαρμογή.
CORS/CSP/Fetch-Metadata: σύμφωνα με τις πολιτικές.
Κεφαλίδα - гигиена: «X-Forwarded-for/Proto», «Forwarded», «traceparent», ένεση κεφαλής και υπερμεγέθης προστασία.
Όρια σώματος/κεφαλίδων: αρχές 413/431 για τα μοτίβα DOS.
mTLS για την ολοκλήρωση εταίρων και εσωτερικές API.
7) Εφαρμογή συστημάτων: καναρίνι/γαλάζιο-πράσινο/εκδόσεις
Σταθμισμένη διαδρομή на επίπεδο-7 (1%, 5%, 25%, 50%, 100%).
Θύρα κεφαλίδας: ενεργοποιήστε το χαρακτηριστικό με σημαία/κεφαλίδα (εσωτερική/δοκιμή).
Γαλάζιο-πράσινο: πλήρης αλλαγή DNS/διαδρομής, γρήγορη ανατροπή.
Σκιά: παράλληλη εκτέλεση της νέας έκδοσης με την εγγραφή μετρήσεων/αρχείων καταγραφής.
8) Κολλώδεις συνεδρίες και δρομολόγηση χασίς
Cookie-stickiness ('Set-Cookie: SRV = shard-a; Διαδρομή =/; HttpOnly ') για φορτία stateful.
Ring-hash/συνεπής από τον «χρήστη _ id/ενοικιαστή _ id» - μείωση των διασταυρούμενων αναπηριών στη μνήμη.
Προσοχή: να αποφεύγεται η «αιώνια» εμμονή για την εγγραφή φορτίων → θερμών σημείων. Χρησιμοποιήστε έναν ενοικιαστή ποσόστωσης.
9) Περιφερειακή και γεω-δρομολόγηση
Κάθε cast + geo-DNS για την επιλογή του πλησιέστερου POP.
Παράκαμψη κεφαλίδας (για παράδειγμα, 'X-Region') για δοκιμές και αποσφαλμάτωση.
Συντονισμός με νομικά απαιτούμενη εντοπισμό δεδομένων (διαδρομή ανά περιφέρεια/δικαιοδοσία).
10) Παρατηρησιμότητα και έλεγχος
RED μετρήσεις: RPS, ρυθμός σφάλματος (ανά κατηγορία), καθυστέρηση p95/p99 ανά διαδρομή/δέσμη.
Ακραίες τιμές/υγεία: αριθμός επεξεργαστών/ανακτήσεων, αργός ρυθμός κλήσης.
Αρχεία καταγραφής: δομημένα, χωρίς PII. συσχέτιση "trace _ i /" span _ id".
Ιχνηλάτηση (Otel): μεγέθη 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 Traefik: κανόνες + μεσαίο λογισμικό
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 Kubernetes: Είσοδος + μανιφέστο για καναρίνι (NGINX Ingress)
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) Μετασχηματισμοί και συμβατότητα
Ομαλοποίηση κεφαλίδων/μονοπατιών, απογραφή τοποθεσίας, έλεγχος "Cache-Contro .
gRPC ↔ HTTP/JSON μέσω μεταφραστών (grpc-json-transcoder).
Αναβαθμίσεις - Βεβαιωθείτε ότι ο διαμεσολαβητής παραλείπει 'Αναβάθμιση '/' Σύνδεση'.
13) Σενάρια δοκιμών και χάους
Φόρτωση: εκρήξεις, μακρά οροπέδια, «μακριά» σώματα (αργή-POST).
Ενέσιμο διάλυμα καθυστέρησης/απώλειας σε ανάντη → επανατοποθετήσεις/έλεγχος χρόνου/ακραίων τιμών.
Καναρινικές μετρήσεις: p95/p99, ρυθμός σφάλματος της νέας έκδοσης έναντι της παλιάς. αυτόματη ανατροπή από την SLO.
Σκιά: σύγκριση των απαντήσεων (δειγματοληψία) και λογική δίπλα-δίπλα.
14) Αντιπατερίδια
Οι παγκόσμιες υποχωρήσεις, εκτός από την ιδιοτέλεια και την προθεσμία → διπλασιάζονται και καταιγίδα.
Κολλώδεις συνεδρίες χωρίς θερμά θραύσματα ελέγχου → φορτίο skew.
Έλλειψη υγειονομικών ελέγχων/ακραίων εκβολών → «σάπιων» περιπτώσεων στην κοινοπραξία.
Απεριόριστες κεφαλίδες/σώματα → την απλούστερη DOS.
Ανάμειξη μετασχηματισμών και ασφάλειας χωρίς έκδοση σχήματος → απροσδόκητες οπισθοδρομήσεις.
Μια ενιαία παγκόσμια κρύπτη κλειδιού χωρίς ένα 'Vary' → εσφαλμένες απαντήσεις.
15) Ιδιαιτερότητες του iGaming/Finance
Περιφερειακός χαρακτήρας: δρομολόγηση ανά δικαιοδοσία παίκτη/εμπορικού σήματος. απομόνωση των ζωνών πληρωμών.
Κρίσιμες διαδρομές (καταθέσεις/εκροές): σύντομες προθεσμίες, μία επανάληψη, ιδιαιτερότητα· μεμονωμένες συστάδες.
PSP/KYC: ειδικές ομάδες ανάντη, αυστηρές πολιτικές επανάληψης/χρονισμού, διακόπτης κυκλώματος, γεω-καρφίτσες.
διαύλους AB: ασφαλή πειράματα με πληρωμές/όρια μόνο για τη διαδρομή ανάγνωσης· γράψτε - μέσω σημαιών και μικρών ποσοστών.
16) Κατάλογος ελέγχου ετοιμότητας Prod
- TLS 1. 2+/1. 3, συρραφή OCSP, HSTS· σωστή 'X-Forwarded'.
- Σαφείς κανόνες δρομολόγησης: υποδοχή/διαδρομή/κεφαλίδα/cookie. τεκμηρίωση.
- Υγειονομικοί έλεγχοι, πιο ακραία εκτόξευση, ανά δοκιμή χρονοδιάγραμμα, περιορισμένα retrays.
- Σταθμισμένο/καναρίνι + σκιά. auto-rollback by SLO/alert.
- Cache/συμπίεση/ETag; όρια αμαξώματος/κεφαλίδων· ζητούν άνθρακα.
- Αρχεία καταγραφής/μονοπάτια με «trace _ id», RED + ακραίες μετρήσεις/μετρήσεις υγείας· ταμπλό ανά διαδρομή/δέσμη.
- φίλτρα WAF/bot/CORS· υπέρμετρη και αργή προστασία POST.
- Κολλώδες/σταθερό hashing όπου χρειάζεται. έλεγχος θερμού θραύσματος.
- Οι ρυθμίσεις είναι επαληθευμένες, οι μεταναστεύσεις είναι ασφαλείς, τα μυστικά στο KMS/Vault.
17) TL, DR
Τερματισμός TLS στην περίμετρο και διαδρομή προς L7 μέσω ξενιστή/διαδρομής/κεφαλίδας/cookie. Για εκλύσεις - σταθμισμένα καναρίνια και σκιά. για τη σταθερότητα - υγειονομικοί έλεγχοι, ακραία εκτίναξη, περιορισμένες επαναλήψεις με ανά δοκιμή χρονοδιάγραμμα. Χρησιμοποιήστε την κρύπτη, τη συμπίεση και το σταθερό hashing όπου βελτιώνει το p95. Μέτρηση των σημάτων RED και της κατάστασης του συμπλέγματος, διατήρηση των ορίων WAF και μεγέθους. Για κρίσιμες διαδρομές πληρωμής - χωριστές ομάδες, σύντομες SLA και αυστηρή διαχείριση των retras/idempotency.