Прокси катмарлары жана кайра багыттоо
Кыскача резюме
Прокси катмары - "алдыңкы дөңгөлөк" платформасы: ал TLS аяктайт, кардарларды ырастайт, трафикти бөлүштүрөт, чокуларды тегиздейт жана чыгарууну коопсуз кылат (канарейка, көк жашыл). Минималдуу жетилүү топтому: прокси ролдорду так стратификациялоо, детерминацияланган багыттоо эрежелери, таймауттарды/ретрайларды көзөмөлдөө, кэш + rate-limit, байкоо жүргүзүү жана автоматташтыруу.
Прокси таксономиясы
Forward proxy - кардарлардын/кызматтардын сыртка чыгуучу трафиги (egress), фильтрлер/күзгү, DLP.
Reverse прокси - тышкы суроо-талаптарды кабыл алат жана backends багыттоо (биздин негизги басым).
1. Edge/CDN/WAF (Anycast, бот-чыпкалар, кэш)
2. L7 Ingress/API-gateway (багыттоо, аутентификация, саясат)
3. East-West, mTLS жана Retrains үчүн кызмат катмары/Mesh (sidecar)
4. Egress-gateway чыгыш интеграциясы үчүн (PSP, өнөктөштөр)
Багыттоо (L4/L7) жана алгоритмдер
L4 (TCP/UDP, passthrough TLS): HTTP түшүнбөстөн, минималдуу кечигүү.
L7 (HTTP/1. 1, HTTP/2, HTTP/3/gRPC): host/path/header/cookie эрежелери, трансформация, WAF, кэш.
- Round-robin/Least-connections/EWMA - жалпы учурлар.
- Consistent-hash (cookie/ID боюнча) - sticky-сессиялар жана кэш-локалдуулук.
- Header-/Geo-/Latency-based - региондор/провайдерлер боюнча максаттуу, тез PoP.
- Canary/Weighted - этап-этабы rollout (5 → 25 → 50 → 100%).
- Shadow/Mirroring - жоопторго таасир этпестен жаңы кызматка трафиктин көчүрмөсү.
Суроо-талаптарды/жоопторду трансформациялоо
URL rewrite/redirect: жолдорду бириктирүү, версиялоо ('/v1/→/svc/v1/').
Аталыштар: нормалдаштыруу 'X-Forwarded-For/Proto/Host', кошуу 'traceparent '/' x-request-id', ашыкча чыпкалоо.
CORS/CSRF: gateway борборлоштуруп, ар бир кызматта орнотуу жемишин жок.
Compression/Decompression: Brotli/gzip, түрлөрү боюнча башкаруу.
Body-limits жана slowloris/oversized headers каршы коргоо.
Аутентификация жана коопсуздук
TLS 1. 3 + OCSP stapling + HSTS тышкы алдында.
mTLS: администраторлор, иш API, өнөктөш каналдар.
OAuth2/OIDC: gateway аркылуу авторизациялоо (token introspection/JWT-verify) → upstream claims.
API-ачкычтары/кол тамгалары (HMAC) тейлөө жана өнөктөштүк интеграциясы үчүн.
WAF/бот чыпкалар: белги + жүрүм-турум эрежелери, greypass/капча.
CSP/X-Frame-Options/Referrer-Policy - четинде security-аталыштары.
Ишенимдүүлүк: retrailer/убакыт/SV
Таймауттар: L4/L7 боюнча connect/read/write, бирдиктүү саясат (мисалы, 'connect 500ms', 'read 3-5s' API үчүн).
Retry: гана демпотенттик ('GET/HEAD'), убакыт/саны боюнча чек, 'retry-budget'.
Circuit-breaker: бир эле учурда суроо-талаптар/каталар, тез баш тартуу жана деградация боюнча чектөөлөр.
Outlier detection: бассейнден "жаман" нускаларды алып салуу.
Backoff + jitter: түзүү үчүн эмес, "үйүр таасири".
Кэш жана трафикти башкаруу
L7 кэш: статика/жарым динамика (каталогдор, конфиги), 's-maxage' + 'stale-while-revalidate'.
Rate-limit/Quota: IP/ASN/device/cookie боюнча, бөлүштүрүлгөн эсептегич (Redis/Rate-service).
Sticky сессиялар: cookie/consistent-hash; failover жана "кайра жабыштыруу" эске алуу.
Request collapsing (dedupe): origin коргоо "бороон" окшош GET.
Протоколдор жана өзгөчөлүктөрү
HTTP/2: мультиплексирлөө, артыкчылыктар; кармап 'ALPN: h2'.
HTTP/3/QUIC: жоготууга/джиттерге туруктуулук; UDP/443 ачуу, MTU/PMTUD мониторинг жүргүзүү.
gRPC: health-checks, streaming, deadlines; proxy 'grpc-status'.
WebSocket/SSE: long-live коннектилер, компетенттүү idle-таймауттар жана лимиттер.
Байкоо жана SLO
Метрикасы:- L4/L7: `p50/p95/p99`, ошибки (`4xx/5xx/Grpc-codes`), `open_conns`, `CPS/RPS`, `retry_rate`.
- TLS: версия/шифрлер, p95 handshake, resumption.
- Багыттоо: route/cluster, outlier-ejections боюнча үлүштөрү.
- Rate-limit/WAF :/FP-rate.
- Логи: кирүү (PII жок), багыттоо себептери, трек аталыштары.
- Traces: 'traceparent '/B3, самплирлөө.
- p95 TTFB API ≤ 250-300 мс; L7 ≤ 0 катасы. 5%.
- Канарейлердин ийгилиги (метриктердин деградациясы жок) учуруулардын 99% ≥.
- FP-rate WAF ≤ 0. 1%.
Типтүү конфиги
Nginx (тескери прокси, HTTP/2, канарейка, кысуу)
nginx map $http_x_canary $upstream_pool {
default "stable";
~^1$ "canary";
}
upstream api_stable { zone zst 64k; server 10. 0. 1. 10:8443; server 10. 0. 1. 11:8443; keepalive 256; }
upstream api_canary { zone zcn 64k; server 10. 0. 2. 10:8443; keepalive 64; }
server {
listen 443 ssl http2 reuseport;
server_name api. example. com;
ssl_protocols TLSv1. 2 TLSv1. 3;
ssl_stapling on; ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000" always;
basic limits/protection client_max_body_size 10m;
sendfile on; brotli on; gzip on;
location / {
proxy_http_version 1. 1;
proxy_set_header Host $host;
proxy_set_header X-Request-Id $request_id;
proxy_set_header X-Forwarded-Proto https;
proxy_connect_timeout 500ms;
proxy_read_timeout 5s;
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_next_upstream_tries 1; # Retrays are limited to proxy_pass https://api_$upstream_pool;
}
}
HAProxy (JWT-verify + mTLS + rate-limit)
haproxy frontend fe_https bind:443 ssl crt /etc/haproxy/certs/ alpn h2,http/1. 1 http-request set-header X-Request-Id %[unique-id]
http-request lua. jwt_verify # external verification script JWT stick-table type ip size 1m expire 10m store http_req_rate (10s)
http-request deny if { src_http_req_rate(10s) gt 100 }
default_backend be_api
backend be_api balance roundrobin option httpchk GET /healthz server s1 10. 0. 1. 10:8443 check ssl verify required ca-file /etc/haproxy/ca. pem server s2 10. 0. 1. 11:8443 check ssl verify required ca-file /etc/haproxy/ca. pem
Envoy (JWT + weighted routes + outlier detection)
yaml static_resources:
listeners:
- name: https address: { socket_address: { address: 0. 0. 0. 0, port_value: 443 } }
filter_chains:
- filters:
- name: envoy. filters. network. http_connection_manager typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. network. http_connection_manager. v3. HttpConnectionManager stat_prefix: ingress route_config:
virtual_hosts:
- name: api domains: ["api. example. com"]
routes:
- match: { prefix: "/" }
route:
weighted_clusters:
clusters:
- { name: api-stable, weight: 95 }
- { name: api-canary, weight: 5 }
http_filters:
- name: envoy. filters. http. jwt_authn typed_config: { "@type": type. googleapis. com/envoy. extensions. filters. http. jwt_authn. v3. JwtAuthentication }
- name: envoy. filters. http. router clusters:
- name: api-stable connect_timeout: 0. 5s type: STRICT_DNS lb_policy: ROUND_ROBIN outlier_detection: { consecutive_5xx: 3, interval: 2s, base_ejection_time: 30s }
transport_socket:
name: envoy. transport_sockets. tls
- name: api-canary connect_timeout: 0. 5s type: STRICT_DNS lb_policy: ROUND_ROBIN transport_socket:
name: envoy. transport_sockets. tls
Traefik (rule-based жолдору, түшүнүк)
yaml http:
routers:
api:
rule: "Host(`api. example. com`) && PathPrefix(`/v1/`)"
service: api-svc tls: { certResolver: letsencrypt }
services:
api-svc:
loadBalancer:
servers:
- url: "https://10. 0. 1. 10:8443"
- url: "https://10. 0. 1. 11:8443"
Прокси аткаруу
Connection pooling жана backends үчүн keepalive, бийлик коннекттердин чеги.
Reuseport, PIN CPU/IRQ, жетиштүү буферлер.
TLS: ECDSA + кыска чынжыр, resumption ≥ 70%, HTTP/2/3 камтылган.
"Ысык" жооптор үчүн прокси кэш (анын ичинде 304-валидация).
Warm-up: жогорку чейин DNS/TLS/байланыштарды жылытуу.
DR жана ката каршылык
Деградация түйүндөрүнүн автоматташтыруусу ('outlier-ejection').
Health-checks L4/L7 (HTTP body-маркер версия).
Fail-open/Fail-closed - төлөм/критикалык жолдор үчүн аң-сезимдүү тандоо.
Shadow-режими жаңы кызмат үчүн жол которуу алдында.
Runbooks: "кластердин кыйрашы", "редакторлордун илмеги", "коннекттердин агып чыгышы", "бороон-чапкын".
Киргизүү чек-тизмеси
- стратификация: Edge → Ingress/API-GW → Mesh/Egress, ролу жана жоопкерчилик чектери.
- Багыттоо саясаты: host/path/header/weight, canary/blue-green, shadow.
- Коопсуздук: TLS 1. 3, сезгич жолдор үчүн mTLS, JWT/OAuth2, WAF.
- Таймауттар/retrailer/SV: бирдиктүү баалуулуктар, боштук, retry-budget.
- Кэш/Rate-limit/Request-collapsing туура жерде.
- Байкоо: метриктер/Логи/соода, correlation ID.
- SLO: p95/каталар/ресурстар; периметрдик мүчүлүштүктөргө алерталар.
- IaC/GitOps: репозиторийдеги Config Proxy, канар релиздери, тез rollback.
- Сыноолор: e2e-жолдор, chaos-жагдайлар, иш-чаралардын алдында жүктөө.
Типтүү каталар
"Сыйкырдуу" прокси комбайны ролдорду бөлүү жок → татаал RCA жана жогорку blast радиусу.
Демпотенттик эмес суроолор үчүн ретрайлер → транзакциялардын дубликаттары.
Жок нормалдаштыруу баш/URL → cache-poisoning жана туура эмес ачкычтар.
Sticky-сессиялар пландары жок failover → деградация боюнча жабышып.
Жок 'traceparent '/' x-request-id' → көйгөйлөрдү чечүү мүмкүн эмес.
Катуу 301/302 proxy денгээлде → "Loop" жана API нускасын башкаруу жоготуу.
iGaming/Fintech үчүн өзгөчөлүктөрү
Төлөмдөр/PSP: mTLS менен атайын egress-gateway, катуу таймауттар, демпотенттик ачкычтар, ак IP/ASN тизмелери.
чокулары (дан/турнир): canary/weighted, боз боттордун жолдору, агрессивдүү GET кэш, "бороон" origin коргоо.
Жөнгө салуучу/Логика: Аудит-Логдордо саясат версияларын жана маршруттун себептерин жазыңыз; PII минималдаштыруу.
Мазмун провайдерлери: кэш-локалдуулук жана тегиз бөлүштүрүү үчүн провайдердик ачкыч боюнча consistent-hash.
Mini Playbook
1) Канар релиз API
1. 'api-canary' боюнча салмагы 5% кирет; 2) мониторинг p95/каталар; 3) үлүшүн кеңейтүү; 4) деградацияда автооткат.
2) Бузулган түйүндү шашылыш алып салуу
1. Outlier-ejection же кол менен 'drain'; 2) пул жана кэш хитин текшерүү; 3) пост-окуя RCA.
3) күзгү милдети
1. Жоопторго таасир этпестен көлөкөнү күйгүзүү; 2) метрика/дифф жооп салыштыруу; 3) которуу жөнүндө чечим кабыл алуу.
4) Retrais бороон
1. retry-budget/убакыт чектерин азайтуу; 2) request-collapsing кирет; 3) жергиликтүү штепсель/кэш; 4) origin турукташтыруу.
Жыйынтык
Жакшы иштелип чыккан прокси катмары ролдорду бөлүштүрүү, детерминацияланган багыттоо, ишенимдүү саясат (таймауттар/ретрайлер/SV), коопсуздук (mTLS/JWT/WAF) жана байкоо жүргүзүү болуп саналат. Конфигурацияларды IaCге бекитиңиз, канареяларды жана көлөкөлөрдү колдонуңуз, SLOну өлчөңүз - жана сиздин платформаңыз эң ысык чоку сааттарда да масштабдуу, алдын ала айтууга жана коргоого болот.