GH GambleHub

로드 밸런싱

1) 건축에서 왜 그리고 어디에 있는가

밸런서는 클라이언트와 백엔드 차량 사이의 "개찰구" 입니다. 목표는 다음과 같습니다

가용성 (단일 장애 지점없이), 대기 시간 (p95 다운), 스케일 (수평), 보안 (SL/WAF), 릴리스 관리 가능성 (카나리아/청록색).

응용 프로그램 레이어:
  • 가장자리/글로벌: Anycast, GSLB/GeoDF, CNC/Edge-LB, DDoS.
  • L4: 종료없이 NLB, 자기 부상, 프록시.
  • L7 (해/2, gRPC, 웹소켓, QUIC): 경로 라우팅/헤더/스탬프, 캐시/압축/배열.
  • 데이터 계층: DB-보우 니 (PgBouncer/ProxySQL), Redis Cluster/Consistent Hash, Kafka 파티셔닝.

2) 밸런싱 모델 및 알고리즘

라운드 로빈 (RR): 간단한 유니폼.
최소 연결 (LC): 긴 연결에 적합합니다 (WS, gRPC).
최소 요청/Power-of-Two (P2C): 두 개의 랜덤 하나를 비교하는 것이 좋은 속도/품질 균형입니다.
가중 RR/LC: 카나리아/핫 노드 가중치.
일관된 해싱 (CH): 테이블이없는 세션 끈적 끈적함 (cart, Redis).
Maglev/Flow-hash: 플 래핑 저항이있는 빠른 L3/L4 분포.
대기 시간 인식: p50/p95를 슬라이딩하여 선택합니다.
EWMA: 지연 기록을 고려합니다.

권장 사항: 기본적으로 L7의 P2C (최소 요청); stateful/caches의 경우-일관된 해시; WS/gRPC-최소 연결.

3) 업스트림 건강: 수표 및 "퇴거"

건강 검진: 할 수 있는 상태; 간격/타임 아웃/오류 임계 값.
Outlier Ejection: "잡음" 인스턴스의 자동 제외 (순차 -5xx, 성공률 배출).
느린 시작 및 예열: 새로운 인스턴스의 부드러운 입력 (점진적인 체중 증가).
연결 배출: 오프/재설정 - 중단없이 활성 연결의 "토핑".

4) 세션과 끈적 끈적함 (끈적 거림)

쿠키 스틱 (L7): '세트 쿠키: lb = <id>; SameSite; 안전한 '.
키 단위 CH: 'hash (useID' sessionID 'cartID)'.
IP-hash - 닫힌 네트워크에서만 (NAT가 중단됨).
노드 퇴거에서 TTL 끈적 끈적함 + 대체.
중요: 끈적 끈적함의 필요성을 최소화하여 인스턴스 외부에 상태를 저장하십시오 (Redis/DB/JWT).

5) 글로벌 밸런싱 (GTM/GSLB)

Anycast + health-probe: 하나의 IP, 가장 가까운 PoP로의 트래픽; 자동 feilover.
측지선/대기 시간: 지리/대기 시간 응답.
지역 클러스터: "상주 데이터" 는 해당 지역에 남아 있습니다 (GDPR). 복제를 통한 지역 간 장애.
정치인: 지리 블록, 계정/토큰별로 "stickeregion".

6) 프로토콜 및 기능

TP/2: 멀티 플렉스, 우선 순위; 업스트림을위한 유능한 연결 풀이 필요합니다.
gRPC: 수명이 긴 스트림 → 최소 연결, 공격적인 건강 검진.
웹 소켓/SSE: 연결에 대한 끈적 끈적함, 큰 유휴 시간 초과, TCP는 계속 살아 있습니다.
QUIC/TH/3: 빠른 시작, 손실 저항; MTU/patch-MTU를 모니터링하십시오.
TLS- 종료/mSL: 엣지/L7-LB에서 종료; 구강 mSL/정체성 (SPIFFE).

7) 과부하 제어

요율 제한: IP 당, 키 당, 경로당; 버스트 + 서스테인.
적응 형 동시성 (특사) -동시 요청의 동적 제한.
큐/서지 버퍼: 공정한 거부 503의 제한된 대기열 크기.
Hedging/Parallel 경주: 느린 쿼리 복제 (deimpotent 만 해당).
시간 초과 예산: 별도의 연결/읽기/쓰기.
역압: '503 + 재시도 후', 지터 클라이언트 지수 retreas.
느린 loris 보호: 타임 아웃 읽기/쓰기, 최소 속도.

8) 릴리스 및 트래픽 관리

카나리아 (가중): 1-5-10-25-50-100% 가드 레일 (p95, 5xx, 타임 아웃).
Blue-Green: 인스턴트 스위치, 롤백-DNA/LB.
섀도우/미러: 응답에 영향을주지 않는 요청 사본; PII 마스킹.
헤더/클레임 라우팅: 'X- 카나리아: 1' и독점 'JWT. 주장. 지역/역할 '.

9) 자동 스케일링 및 배수

HPA/ASG 계정 CPU + RPS + p95 + 큐 깊이.
PreStop hook: 연결이 완료되기를 기다립니다.
따뜻한 수영장/인스턴스 재사용: 콜드 스타트 단축.
용량 계획: p95에서 목표 '60-70% 활용' 이 정상입니다.

10) 관찰 및 SLO

LB 지표: RPS, p50/p95/p99, 4xx/5xx, 개방형 연결, 대기열, 배출, 재 시도, 적중률 캐시.
추적: LB → 서비스 → 데이터베이스를 통한 '추적/x 요청-id'.
로그: 구조적, PII/PAN 마스크, 업스트림과의 상관 관계.
경로 SLO: 예를 들어 '대기 시간 p95 λ300 ms', '가용성은 99 이상입니다. 9% ',' 5xx 5%`.
경고: 편차 (연소율 SLO, 배출 서지, 5xx/타임 아웃 성장).

11) 데이터 및 캐시 균형 조정

PostgreSQL/MySQL:
  • 읽기/쓰기 분할 (ProxySQL/pgpool) + 읽기 복제본; 끈적 끈적한 txn.
  • 실패: RPO = 0에 대한 동기 복제본 (더 비싸다).
리디스:
  • Redis Cluster + 해시 슬롯; 세션 용 - CH; 타임 아웃/복구 가능한 오류.
카프카/레드 판다:
  • 분할 및 소비자 그룹을 통한 균형; HTLB와 혼동하지 마십시오.
  • 오브젝트 스토리지 (S3/MinIO): 다중 지역 장애 조치

12) K8 및 클라우드 LB

서비스 (ClusterIP/NodePort/LoadBalancer) -기본 L4.
Ingress/Gateway API-L7 라우팅, 카나리아 가중치, TLS.
AWS: NLB (L4, 고 대역폭), ALB (L7, WAF, 끈적 끈적한 헤더 라우팅).

GCP: 글로벌 LB (L7/할 수 있는 (S) 애니 캐스트),

푸른 색: 프론트 도어 (글로벌), 애플리케이션 게이트웨이 (L7), 로드 밸런서 (L4).

13) 설정 예

13. 1 NGINX (L7, 최소 _ 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 Kubernetes (게이트웨이 API, 가중 카나리아)

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) 점검표

LB/경로 출시 전

  • 트래픽 유형에 대해 선택된 알고리즘 (P2C/LC/CH).
  • 건강 점검 및 배출 임계 값이 구성됩니다.
  • 느린 시작, 워밍업, 연결 드레인이 활성화되었습니다.
  • TLS/mSL, HSTS, 보안 암호; 그림% 1개의 캡션을 편집했습니다.
  • 필요한 경우에만 끈적 끈적한/CH; TTL! 폴백.
  • 속도 제한/버스트, 타임 아웃, 재 시도 예산, 적응 형 동시성.
  • 통나무/흔적: 'trace-id' 가 던져집니다. PII 마스킹.
  • p95/5xx/elections/queu-len에 의한 SLO/경고.
  • 카나리아 가중치 + 롤백 계획; 큰 변화가있는 그림자.

지불/준수 경로

  • Idempotency-Key.
  • PSP 간의 실패; 동일한 방법 검사.
  • 오류 코드가 정규화됩니다. ETA/고객 당 이유.

DB/캐시의 경우

  • RW- 분할/복제본; 타임 아웃, 네트워크 재 시도.
  • Redis의 CH/슬롯 해시; "핫 키" 에 대한 보호.
  • 대기 시간 모니터링 및 복제 지연.

15) 품질 지표 (최소)

경로/방법에 의하여 대기 시간 p50/p95/p99.

오류가 발생하면 4xx/5xx, 타임 아웃/오버플로가 발생합니다

개방/활성 연결, 대기열 깊이, 재 시도 카운트.
이상 방출 및 원인.
끈적 끈적한 히트 비율/캐시 히트 비율.
GSLB: 지역 배포, faylovers, PoP 가용성.

16) 반 패턴

하나의 보호되지 않은 모 놀리 식 LB.
상태를 취하지 않고 "모든 것을위한" 끈적 끈적한 세션.
글로벌 무한 대기열 (문제를 숨기고 p99를 늘리십시오).
지터/예산이없는 배신은 요청의 "폭풍" 입니다.
신뢰할 수있는 프록시 목록없이 'X-Forwarded-For' 를 신뢰하십시오.
고갈 중 배수 부족 → WS/gRPC 중단.
오토 스케일이있을 때 오래 지속되는 연결을 고려하지 않습니다.

17) iGaming 특이성

피크 및 토너먼트: 디렉토리/리스팅의 마이크로 캐시 (1-5 초), 자동 스케일.
라이브 게임/스트림: 긴 연결을위한 LC, 가장 가까운 PoP의 우선 순위.
지불: 지리/통화/금액/공급자 라우팅; 엄격한 타임 아웃 및 demmpotency.
책임있는 플레이 및 규정 준수: 성능 저하에도 불구하고 제한/잠금 요청을 건너 뛰는 우선 순위 (정책에 따라 실패/종료).

18) 구현 프로세스 (4 스프린트)

1. 트래픽 맵: 프로토콜, p95/p99로드, 중요한 경로.
2. LB 구성: 알고리즘, 건강/이상 치, TLS, 제한/시간 초과, 관찰 가능성.
3. GSLB/Edge: Anycast/GeoDNA, PoP 지원, 지역 데이터 정책.
4. 출시 전략: 카나리아/그림자, SLO 경고, 오토 스케일 + 드레인, 사후 분석.

최종 치트 시트

트래픽 유형 (P2C/LC/CH) 및 연결 기간에 대한 알고리즘을 선택하십시오.
업스트림을 "건강하게" 유지: 건강 검진 + 이상 + 느린 시작 + 배수.
피크로드 관리: 요율 제한, 적응 형 동시성, 고장이있는 대기열.
글로벌 가용성 및 지역 별 규정 준수에 GSLB/Anycast를 사용하십시오.
관찰 가능성과 SLO는 필수입니다. 롤백 계획이있는 카나리아/그림자를 통한 릴리스.
가능하면 인스턴스에서 세션을 제거하고 LB에서 끈적 끈적함을 제거하십시오.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.